赞
踩
搜集了网上一些论坛的玩家反馈信息,需要进行正负面分析,刚开始是用jieba分词然后关键词匹配的做法去实现的,但是发现这样子做比较不合情理,因为不带情感、简单的分词会对真实意思产生偏差
比如:
我不喜欢今天的电影
分词之后的效果是
我,不,喜欢,今天,的,电影
所以我的做法是
1、适用nltk的NaiveBayesClassifier包进行关键词训练进行
2、WordPunctTokenizer进行带情感的分词
3、classifier.classify+SnowNLP进行正负面分析
接下来分步讲解实现方式
1、数据准备、特征提取
我自有一批正面关键词和负面关键词,需要注入到nltk里面,这样可以使它在进行分析的时候,把我的词库也加到影响因子里面
def word_feats(words):
return dict([(word, True) for word in words])
# 训练将特征提取之后的对象适用NaiveBayesClassifier进行训练
classifier = NaiveBayesClassifier.train(train_set)
2、分词
分词需要用到nltk的stopwords去过滤一些噪音,以免对分析结果产生太多影响
fromnltk.corpusimportstopwords
word_lst = WordPunctTokenizer().tokenize(text)
word_lst =[wforwinword_lstif(wnot instopwords.words('stop_word'))]
使用stopwords.words的时候可能会出现如下
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。