赞
踩
以下内容为anocada环境下遇到的情况
使用snowNLP库做微博评论的情感分析,snownlp中支持情感分析的模块在sentiment文件夹中,其核心代码为__init__.py文件,其中分词代码如下
# 分词以及去停用词的操作
def handle(self, doc):
words = seg.seg(doc) # 分词
words = normal.filter_stop(words) # 去停用词
return words # 返回分词后的结果
即snownlp库通过seg()函数进行分词,通过与jieba分词库对比,发现分词效果不如jieba库好
以 “难道我又拖后腿了”为例
['难道', '我', '又', '拖', '后腿', '了'] seg()分词效果
['难道', '我', '又', '拖后腿', '了'] jieba库分词效果
果断用jieba库去优化snownlp库的分词功能,将sentiment文件夹中,的__init__.py修改一下
首先需要导入jieba库,jieba库支持加载自定义词库,比如原文本中包含了 “没必要”,我想把“没必要”保留下来,可以通过自定义词库自己设定,很方便,然后修改def handle()里的分词方法
用红色框圈起来的地方是我修改的部分。jieba.load_userdict('mydict.txt')是加载自定义词库,我在自定义词库里 加入了 没必要 3 n 这样的一行,测试一下,“没必要担心”但分词之后依然是【没 必要 担心】,显然“没必要”并没有被当成是一个词。
原来jieba自己的分词词典dict.txt中有两个词:没,必要 。所以我自己定义的 没必要 这个词就没有效果。如果还想按照自己自定义的词典分词,需要把dict.txt中相应的词删掉。这样自己定义的词典就可以起效果了。所以自定义词典还是定义一些不常见的词组,以免与jieba本身的词典发生冲突而不起效果。
第三方库一般最后安装到Anaconda安装目录文件下的libsite-packages文件夹,去里面找一下jieba文件夹,可以看看jieba的分词词典里都有什么。
同理优化snownlp时也需要去Anaconda安装目录文件下的libsite-packages文件夹中找到snownlp库,然后找sentiment文件夹,然后找__init__.py进行修改。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。