0
0 комментариев

Пытаюсь подступиться к классификации русскоязычных текстов и т.п. Пытался скормить байесу файлик, который вручную закинул в корпус nltk… Но, не может он совладать с кодировкой utf-8, как ты его не проси)`. Файлик pos_neg.csv результат обработки корпуса функцией

df.to_csv('D:\\pos_neg.csv', encoding='utf-8', index=False)

где df- Dataframe, в который я считал нужные столбцы из БД с корпусом

собственно говоря, сам код:

import nltk
import random
from nltk.corpus import movie_reviews
documents = [(list(movie_reviews.words(fileid)), category)
             for category in movie_reviews.categories()
             for fileid in movie_reviews.fileids(category)]
 
random.shuffle(documents)
 
#print(documents[1])
 
all_words = []
for w in movie_reviews.words():
    all_words.append(w.lower())
 
all_words = nltk.FreqDist(all_words)
#print(all_words.most_common(15))
word_features = list(all_words.keys())[:3000]
def find_features(document):
    words = set(document)
    features = {}
    for w in word_features:
        features[w] = (w in words)
 
    return features
print((find_features(movie_reviews.words('pos/pos_neg.csv'))))
featuresets = [(find_features(rev), category) for (rev, category) in documents]
 
training_set = featuresets[:1900]
 
 
testing_set = featuresets[1900:]
classifier = nltk.NaiveBayesClassifier.train(training_set)
print("Classifier accuracy percent:",(nltk.classify.accuracy(classifier, testing_set))*100)
classifier.show_most_informative_features(15)`

Ошибку выдает такую

UnicodeDecodeError: ‘ascii’ codec can’t decode byte 0xd1 in position
31: ordinal not in range(128)

за корпус низкий поклон Юлии Рубцовой http://study.mokoron.com/


Добавить комментарий