2017-01-18 6 views
0

Возможно ли использовать tfidf (tfidfvectorizer в Python), чтобы выяснить, какие слова наиболее важны при попытке отличить между двумя текстовыми классами (то есть положительными или отрицательными чувства и т. д.)? Например, какие слова были наиболее важны для идентификации положительного класса, а затем отдельно, что было наиболее полезно для определения отрицательного класса?Классификация текста. Определение наиболее полезных слов при разграничении классов

+1

Вы знакомы с СПС (анализ основных компонентов)? Вот вам и нужна эта идея, которая вытащит вас из типичной парадигмы вектора BoW или предложения, но должна дать вам хорошие результаты. – Prune

+1

Дубликат http://stackoverflow.com/questions/11116697/how-to-get-most-informative-features-for-scikit-learn-classifiers – vpekar

ответ

0

Вы можете позволить scikit научиться делать свою тяжелую - обучить случайный лес на своем бинарном дереве, извлечь функции значение классификаторе в рейтинге и использовать его, чтобы получить самые важные слова:

clf = RandomForestClassifier() 
clf.fit(data, labels) 

importances = clf.feature_importances_ 
np.argsort(importances)[::-1] 

feature_names = vectorizer.get_feature_names() 
top_words = [] 

for i in xrange(100): 
    top_words.append(feature_names[indices[i]]) 

Заметим, что это расскажите только, какие самые важные слова - не то, что они говорят по каждой категории. Чтобы сказать, что каждое слово говорит о каждом классе, вы можете классифицировать отдельные слова и посмотреть, какова их классификация.

Другой вариант - взять все положительные/отрицательные образцы данных, удалить из них слово, которое вы пытаетесь понять, и посмотреть, как это влияет на классификацию образца.