停用词以最具影响力的词出现

时间:2019-05-30 16:18:30

标签: python nlp nltk sentiment-analysis

我正在运行一些NLP代码,试图在调查中找到最有影响力(正面或负面)的单词。我的问题是,尽管我成功地将一些额外的停用词添加到NLTK停用词文件中,但它们后来却继续作为有影响力的词出现。

所以,我有一个数据框,第一列包含分数,第二列包含注释。

我添加了额外的停用词:

stopwords = stopwords.words('english')
extra = ['Cat', 'Dog']
stopwords.extend(extra)

我在前后使用len方法检查它们是否已添加。

我创建此功能是为了删除评论中的标点符号和停用词:

def text_process(comment):
   nopunc = [char for char in comment if char not in string.punctuation]
   nopunc = ''.join(nopunc)
   return [word for word in nopunc.split() if word.lower() not in stopwords]

我运行模型(由于没有区别,所以不包括整个代码):

corpus = df['Comment']
y = df['Label']
vectorizer = CountVectorizer(analyzer=text_process)
x = vectorizer.fit_transform(corpus)

...

然后获得最具影响力的单词:

feature_to_coef = {word: coef for word, coef in zip(vectorizer.get_feature_names(), nb.coef_[0])}


for best_positive in sorted(
    feature_to_coef.items(), 
    key=lambda x: x[1], 
    reverse=True)[:20]:
    print (best_positive)

但是,结果中有猫和狗。

我在做什么错,有什么想法吗?

非常感谢您!

1 个答案:

答案 0 :(得分:1)

看起来像是因为您有大写的单词“ Cat”和“ Dog”

在text_process函数中,您拥有driver.find_element_by_xpath("//div[@class='inner-article']/a//div[@class='sold_out_tag']").click() ,仅当停用词为小写时才有效