2017-02-20 2 views
1

J'essaye de mettre en application l'algorithme de Naive Bayes pour l'analyse de sentiment des titres de papier de nouvelles. J'utilise TextBlob à cette fin et je trouve qu'il est difficile de supprimer les mots d'arrêt comme « un », « le », « dans », etc. Voici l'extrait de mon code en python:Quel est le moyen efficace pour supprimer les mots d'arrêt dans textblob pour l'analyse du sentiment de texte?

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" 

Répondre

0

Vous pouvez d'abord charger le fichier json, puis créer une liste de tuples (texte, étiquette) avec le remplacement.

Démonstration:

Supposons que le fichier input.json est quelque chose comme ceci:

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

Ensuite, vous pouvez utiliser:

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) 

sortie:

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