2017-02-20 49 views
1

Я пытаюсь реализовать алгоритм Наивного Байеса для анализа настроений заголовков News Paper. Я использую TextBlob для этой цели, и я найти его трудно удалить стоп-слова, такие как «а», «The», «в» и т.д. Ниже приведен фрагмент моего кода в Python:Каков эффективный способ удаления стоп-слов в textblob для анализа настроений текста?

from textblob.classifiers import NaiveBayesClassifier 
from textblob import TextBlob 

test = [ 
("11 bonded labourers saved from shoe firm", "pos"), 
("Scientists greet Abdul Kalam after the successful launch of Agni on May 22, 1989","pos"), 
("Heavy Winter Snow Storm Lashes Out In Northeast US", "neg"), 
("Apparent Strike On Gaza Tunnels Kills 2 Palestinians", "neg") 
     ] 

with open('input.json', 'r') as fp: 
cl = NaiveBayesClassifier(fp, format="json") 

print(cl.classify("Oil ends year with biggest gain since 2009")) # "pos" 
print(cl.classify("25 dead in Baghdad blasts")) # "neg" 

ответ

0

Вы можете сначала загрузить json, а затем создать список кортежей (текст, ярлык) с заменой.

Демонстрация:

Предположим, что файл input.json что-то вроде этого:

[ 
    {"text": "I love this sandwich.", "label": "pos"}, 
    {"text": "This is an amazing place!", "label": "pos"}, 
    {"text": "I do not like this restaurant", "label": "neg"} 
] 

Затем вы можете использовать:

from textblob.classifiers import NaiveBayesClassifier 
import json 

train_list = [] 
with open('input.json', 'r') as fp: 
    json_data = json.load(fp) 
    for line in json_data: 
     text = line['text'] 
     text = text.replace(" is ", " ") # you can remove multiple stop words 
     label = line['label'] 
     train_list.append((text, label)) 
    cl = NaiveBayesClassifier(train_list) 

from pprint import pprint 
pprint(train_list) 

выход:

[(u'I love this sandwich.', u'pos'), 
(u'This an amazing place!', u'pos'), 
(u'I do not like this restaurant', u'neg')]