我们相信:世界是美好的,你是我也是。平行空间的世界里面,不同版本的生活也在继续...

snownlp在自然语言处理领域,是以情感分析特长而闻名的。它的很多功能和著名的jieba分词相比,两者是有很多重复的功能的。那么,本文就来对比一下snownlpjieba的分词和获得词性功能。

苏南大叔:snownlp对比jieba,如何处理分词和获得分词词性? - snownlp情感分析分词和获得词性
snownlp对比jieba,如何处理分词和获得分词词性?(图3-1)

大家好,这里是苏南大叔的平行空间笔记本博客,这里记录苏南大叔和计算机代码的故事。本文描述自然语言处理领域里面,snownlpjieba的分词效果对比。测试环境:win10python@3.6.8snownlp@0.12.3jieba@0.42.1

jieba分词

根据已有的文章内容,可以知道jieba分词的分词函数有四个,其中两个可以切出词性。这些函数还都有个默认值是cut_all=False,为精准切词方式。大多数情况下,都应该使用cut_all=False。参考文章:

所以,这里采用的函数是:

import jieba
import jieba.posseg
words = "苏南大叔毕业于北京大学"
_result = jieba.posseg.lcut(words)
_list = [ w.word+"/"+w.flag for w in _result ]
print(" ".join(_list)) # 苏南/ns 大叔/n 毕业/n 于/p 北京大学/nt
jieba.add_word("苏南大叔",tag="ns")
_result = jieba.posseg.lcut(words)
_list = [ w.word+"/"+w.flag for w in _result ]
print(" ".join(_list))  # 苏南大叔/ns 毕业/n 于/p 北京大学/nt

这里输出为:

苏南/ns 大叔/n 毕业/n 于/p 北京大学/nt
苏南大叔/ns 毕业/n 于/p 北京大学/nt

这个例子表明:jieba支持自定义分词,比如专有名词“苏南大叔”,这个就是可以自定义的。同时,“毕业”这个词儿的词性结果,似乎有些问题。

苏南大叔:snownlp对比jieba,如何处理分词和获得分词词性? - 结巴分词词性
snownlp对比jieba,如何处理分词和获得分词词性?(图3-2)

snownlp分词

snownlp测试代码:

from snownlp import SnowNLP
s = SnowNLP("苏南大叔毕业于北京大学")
print("分词结果:",s.words)
print("词性标注:",list(s.tags))

输出结果:

分词结果: ['苏南', '大叔', '毕业', '于', '北京大学']
词性标注: [('苏南', 'ns'), ('大叔', 'n'), ('毕业', 'v'), ('于', 'p'), ('北京大学', 'nt')]

苏南大叔:snownlp对比jieba,如何处理分词和获得分词词性? - snownlp分词对比
snownlp对比jieba,如何处理分词和获得分词词性?(图3-3)

s.tags这个词性标注结果,是个zip数据类型。关于这个类型的输出问题,参考文章:

根据snownlp的官方文档,这里的分词结果并没有自定义词典的功能,也就是说,无法分出“苏南大叔”这个词。另外,snownlp的着力点是情感分析,所以,能拿来分词的语句,都应该是由一定的感情色彩的句子,否则体现不出snownlp的优势。

相关链接

snownlp官方文档链接:

总结

对比结果表明,单就分词这个需求角度来说,jiba显然更具有优势,可以调整分词条目。但是默认的分词效果也有不准确的地方。snownlp所针对的句子,都应该具有一定的情感色彩。所以,理论上适用的范围更小,并且不能自定义分词效果。所以,单单就分词这个角度来说,jieba效果更好。

如果本文对您有帮助,或者节约了您的时间,欢迎打赏瓶饮料,建立下友谊关系。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。

 【福利】 腾讯云最新爆款活动!1核2G云服务器首年50元!

 【源码】本文代码片段及相关软件,请点此获取更多信息

 【绝密】秘籍文章入口,仅传授于有缘之人   python    jieba