SnowNLP简介
SnowNLP是一个python写的类库,可以方便的处理中文文本内容,是受到了TextBlob的启发而写的,由于现在大部分的自然语言处理库基本都是针对英文的,于是写了一个方便处理中文的类库,并且和TextBlob不同的是,这里没有用NLTK,所有的算法都是自己实现的,并且自带了一些训练好的字典。注意本程序都是处理的unicode编码,所以使用时请自行decode成unicode
1、安装
pip install snownlp
或者下载对应的.whl,手动安装pip install 路径/xxxx.whl
分句
from snownlp import SnowNLP
text="今天买的LV包非常喜欢,服务员的服务很周到,开销!"
snownlp_bus=SnowNLP(text)
#1 分句
print("1 分句:",snownlp_bus.sentences)
输出:
1 分句: ['今天买的LV包非常喜欢', '服务员的服务很周到', '开销']
分词
from snownlp import SnowNLP
text="今天买的LV包非常喜欢,服务员的服务很周到,开销!"
snownlp_bus=SnowNLP(text)
#2 分词
words_list=[]
for sentence in snownlp_bus.sentences:
words_list.append(SnowNLP(sentence).words)
print("2 分词:",words_list)
输出:
2 分词: [['今天', '买', '的', 'LV', '包', '非常', '喜欢'], ['服务员', '的', '服务', '很', '周到'], ['开销']]
词性标注
from snownlp import SnowNLP
text="今天买的LV包非常喜欢,服务员的服务很周到,开销!"
snownlp_bus=SnowNLP(text)
#3 词性标注
tags_list=[]
for sentence in snownlp_bus.sentences:
tags_list.append(list(SnowNLP(sentence).tags))
print("#3 词性标注结果:",tags_list)
输出:
#3 词性标注结果: [[('今天', 't'), ('买', 'v'), ('的', 'u'), ('LV', 'm'), ('包', 'q'), ('非常', 'd'), ('喜欢', 'v')], [('服务员', 'n'), ('的', 'u'), ('服务', 'vn'), ('很', 'd'), ('周到', 'a')], [('开销', 'n')]]
拼音转换
from snownlp import SnowNLP
text="今天买的LV包非常喜欢,服务员的服务很周到,开销!"
snownlp_bus=SnowNLP(text)
#转换成拼音
print("4 拼音",snownlp_bus.pinyin)
输出:
4 拼音 ['jin', 'tian', 'mai', 'de', 'LV', 'bao', 'fei', 'chang', 'xi', 'huan', ',', 'fu', 'wu', 'yuan', 'de', 'fu', 'wu', 'hen', 'zhou', 'dao', ',', 'kai', 'xiao', '!']
繁体字转换
from snownlp import SnowNLP
text="今天买的LV包非常喜欢,服务员的服务很周到,开销!"
snownlp_bus=SnowNLP(text)
text_fanti = "在臺灣亦很常見"
snownlp_fan=SnowNLP(text_fanti)
print("5 繁体字转换",snownlp_fan.han)
输出:
5 繁体字转换 在台湾亦很常见
关键词 摘要抽取
paragraphs="过去几十年里,国内外的互联网巨头基本都诞生于搜索、社交、电商、衣食住行等生活和消费领域,那时的互联网也被称作消费级互联网,即To C。"\
"但近年来,人口红利逐渐消失。据QuestMobile研究,2019年,移动互联网月活用户规模达到11.38亿,增长进一步放缓,月活用户的增速一直在下跌,2017年12月同比增长6.3%。"\
"而到2019年3月同比增速更是首次跌破了4%;在用户增长方面,2019年一季度用户人均单日使用时长增长仅为半个小时,时长增幅有收窄的趋势"
snownlp_pgh=SnowNLP(paragraphs)
print("6 关键词",snownlp_pgh.keywords())
print("7 摘要提取",snownlp_pgh.summary(1))
输出:
6 关键词 ['互联网', '诞生', '搜索', '商', '社交']
7 摘要提取 ['过去几十年里']
情感分析(积极消极)
情感分析主要适用于客户评价的预测,不适用于其他方面
[-1,1],越接近1代表好,积极,越接近-1表示糟糕,消极
from snownlp import SnowNLP
text="今天买的LV包非常喜欢,服务员的服务很周到,开销!"
snownlp_bus=SnowNLP(text)
print("8 积极消极:",snownlp_bus.sentiments)
输出:
8 积极消极: 0.9469510568100439
文本相似度
#文本相似
s = SnowNLP([[u'这篇', u'文章'],
[u'那篇', u'论文'],
[u'这个']])
print("9 文本相似度:",s.sim([u'这个']))
输出:
9 文本相似度: [0, 0, 0.6229580777634033]