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

王林
王林ke hadapan
2024-02-25 10:16:221168semak imbas

【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))

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!

Kenyataan:
Artikel ini dikembalikan pada:lsjlt.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam