Usando mi propio corpus para la clasificación de categorías en Python NLTK
-
27-10-2019 - |
Pregunta
Soy un principiante NTLK/Python y logré cargar mi propio corpus usando categorizedPlaintextCorpusReader, pero ¿cómo capacito y uso los datos para la clasificación del texto?
>>> from nltk.corpus.reader import CategorizedPlaintextCorpusReader
>>> reader = CategorizedPlaintextCorpusReader('/ebs/category', r'.*\.txt', cat_pattern=r'(.*)\.txt')
>>> len(reader.categories())
234
Solución
Suponiendo que desea un clasificador ingenuo de Bayes con características de la bolsa de palabras:
from nltk import FreqDist
from nltk.classify.naivebayes import NaiveBayesClassifier
def make_training_data(rdr):
for c in rdr.categories():
for f in rdr.fileids(c):
yield FreqDist(rdr.words(fileids=[f])), c
clf = NaiveBayesClassifier.train(list(make_training_data(reader)))
La resultante clf
's classify
El método se puede utilizar en cualquier FreqDist
de palabras.
(Pero tenga en cuenta: de su cap_pattern
, parece que tienes muestra y Una sola categoría por archivo en su corpus. Por favor, verifique si eso es realmente lo que quieres).
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow