Rumah > pembangunan bahagian belakang > Tutorial Python > [Python NLTK] Pengelasan teks, menyelesaikan masalah pengelasan teks dengan mudah

[Python NLTK] Pengelasan teks, menyelesaikan masalah pengelasan teks dengan mudah

王林
Lepaskan: 2024-02-25 10:16:22
ke hadapan
1167 orang telah melayarinya

【Python NLTK】文本分类,轻松搞定文本归类难题

Pengkelasan teks ialah salah satu tugas Pemprosesan Bahasa Asli (NLP), yang bertujuan untuk mengelaskan teks ke dalam kategori yang telah ditetapkan. Pengelasan teks mempunyai banyak aplikasi praktikal, seperti penapisan e-mel, pengesanan spam, analisis sentimen dan sistem menjawab soalan, dsb.

Menggunakan python perpustakaan NLTK untuk menyelesaikan tugas pengelasan teks boleh dibahagikan kepada langkah berikut:

  1. Prapemprosesan data: Pertama, data perlu dipraproses, termasuk mengalih keluar tanda baca, menukar kepada huruf kecil, mengalih keluar ruang, dsb.
  2. Pengekstrakan ciri: Seterusnya, ciri perlu diekstrak daripada teks yang dipraproses. Ciri boleh berupa perkataan, frasa atau ayat.
  3. Latihan model: Kemudian, ciri yang diekstrak perlu digunakan untuk melatih model klasifikasi. Model klasifikasi yang biasa digunakan termasuk Naive Bayes, Mesin Vektor Sokongan dan Pokok Keputusan.
  4. Penilaian: Akhir sekali, model terlatih perlu dinilai untuk mengukur prestasinya.

Berikut ialah contoh klasifikasi teks menggunakan Python perpustakaan NLTK:

from nltk.corpus import stopWords
from nltk.tokenize import word_tokenize
from nltk.stem import PorterStemmer
from nltk.classify import NaiveBayesClassifier

# 加载数据
data = [("我爱北京", "积极"), ("我讨厌北京", "消极")]

# 数据预处理
stop_words = set(stopwords.words("english"))
stemmer = PorterStemmer()
processed_data = []
for text, label in data:
tokens = word_tokenize(text)
filtered_tokens = [token for token in tokens if token not in stop_words]
stemmed_tokens = [stemmer.stem(token) for token in filtered_tokens]
processed_data.append((stemmed_tokens, label))

# 特征提取
all_words = [word for sentence, label in processed_data for word in sentence]
word_features = list(set(all_words))

def document_features(document):
document_words = set(document)
features = {}
for word in word_features:
features["contains({})".fORMat(word)] = (word in document_words)
return features

feature_sets = [(document_features(sentence), label) for sentence, label in processed_data]

# 模型训练
classifier = NaiveBayesClassifier.train(feature_sets)

# 模型评估
print(classifier.accuracy(feature_sets))
Salin selepas log masuk

Dalam contoh di atas, kami menggunakan pengelas Naive Bayes untuk mengelaskan teks. Kita dapat melihat bahawa ketepatan pengelas mencapai 100%.

Pengkelasan teks adalah tugas yang mencabar, tetapi pelbagai teknik boleh digunakan untuk meningkatkan ketepatan pengelas. Contohnya, kita boleh menggunakan lebih banyak ciri untuk melatih pengelas, atau kita boleh menggunakan pengelas yang lebih berkuasa seperti mesin vektor sokongan atau pepohon keputusan.

Atas ialah kandungan terperinci [Python NLTK] Pengelasan teks, menyelesaikan masalah pengelasan teks dengan mudah. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:lsjlt.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan