点击上方蓝色字体,关注AI小白入门


跟着博主的脚步,每天进步一点点




本文简绍了SnowNLP的使用方法,这是一个处理中文文本内容的python类库,其主要功能包括分词、词性标注、情感分析、汉字转拼音、繁体转简体、关键词提取以及文本摘要等等。



简介


SnowNLP是一个可以方便的处理中文文本内容的python类库,是受到了TextBlob的启发而写的,和TextBlob不同的是,这里没有用NLTK,所有的算法都是自己实现的,并且自带了一些训练好的字典。


SnowNLP主要功能包括分词、词性标注、情感分析、汉字转拼音、繁体转简体、关键词提取以及文本摘要等等。


Github地址:https://github.com/isnowfy/snownlp



实战


1.安***r>


# 安装:pip install snownlpfrom snownlp import SnowNLPsentence = '我爱自然语言处理技术!'s = SnowNLP(sentence)
from snownlp import SnowNLP
sentence = '我爱自然语言处理技术!'
s = SnowNLP(sentence)


2.分词


s_token = s.wordsprint(s_token)['我', '爱', '自然', '语言', '处理', '技术', '!']

['我', '爱', '自然', '语言', '处理', '技术', '!']


3.词性标注


s_tags = s.tagsfor token_tag in s_tags:    print(token_tag)('我', 'r')('爱', 'v')('自然', 'n')('语言', 'n')('处理', 'vn')('技术', 'n')('!', 'w')for token_tag in s_tags:
   print(token_tag)

('我', 'r')
('爱', 'v')
('自然', 'n')
('语言', 'n')
('处理', 'vn')
('技术', 'n')
('!', 'w')


4.情感分析(positive的概率)


s_senti = s.sentimentsprint(s_senti)0.902242143497134

0.902242143497134


5.中文拼音


s_pinyin = s.pinyinfor i in range(len(sentence)):    print(sentence[i], s_pinyin[i])我 wo爱 ai自 Zi然 ran语 yu言 yan处 chu理 li技 ji术 shu! !for i in range(len(sentence)):
   print(sentence[i], s_pinyin[i])

我 wo
爱 ai
自 Zi
然 ran
语 yu
言 yan
处 chu
理 li
技 ji
术 shu
! !


6.繁体转简体


sentence_fan = "我愛自然語言處理技術!"s_jianti = SnowNLP(sentence_fan)print(s_jianti.han)我爱自然语言处理技术!
s_jianti = SnowNLP(sentence_fan)
print(s_jianti.han)

我爱自然语言处理技术!


7.分割成句子(Tokenization)


text = u'''自然语言处理是计算机科学领域与人工智能领域中的一个重要方向。它研究能实现人与计算机之间用自然语言进行有效通信的各种理论和方法。自然语言处理是一门融语言学、计算机科学、数学于一体的科学。因此,这一领域的研究将涉及自然语言,即人们日常使用的语言,所以它与语言学的研究有着密切的联系,但又有重要的区别。自然语言处理并不是一般地研究自然语言,而在于研制能有效地实现自然语言通信的计算机系统,特别是其中的软件系统。因而它是计算机科学的一部分。'''t = SnowNLP(text)for sen in t.sentences:    print(sen + "。")自然语言处理是计算机科学领域与人工智能领域中的一个重要方向。它研究能实现人与计算机之间用自然语言进行有效通信的各种理论和方法。自然语言处理是一门融语言学、计算机科学、数学于一体的科学。因此。这一领域的研究将涉及自然语言。即人们日常使用的语言。所以它与语言学的研究有着密切的联系。但又有重要的区别。自然语言处理并不是一般地研究自然语言。而在于研制能有效地实现自然语言通信的计算机系统。特别是其中的软件系统。因而它是计算机科学的一部分。
t = SnowNLP(text)
for sen in t.sentences:
   print(sen + "。")

自然语言处理是计算机科学领域与人工智能领域中的一个重要方向。
它研究能实现人与计算机之间用自然语言进行有效通信的各种理论和方法。
自然语言处理是一门融语言学、计算机科学、数学于一体的科学。
因此。
这一领域的研究将涉及自然语言。
即人们日常使用的语言。
所以它与语言学的研究有着密切的联系。
但又有重要的区别。
自然语言处理并不是一般地研究自然语言。
而在于研制能有效地实现自然语言通信的计算机系统。
特别是其中的软件系统。
因而它是计算机科学的一部分。


8.关键词抽取


key_num = 3t_key = t.keywords(key_num)print(t_key)['语言', '自然', '计算机']
t_key = t.keywords(key_num)
print(t_key)

['语言', '自然', '计算机']


9.摘要抽取


key_sen = 3t_keysen = t.summary(key_sen)print(t_keysen)['因而它是计算机科学的一部分', '自然语言处理是计算机科学领域与人工智能领域中的一个重要方向', '自然语言处理是一门融语言学、计算机科学、数学于一体的科学']
t_keysen = t.summary(key_sen)
print(t_keysen)

['因而它是计算机科学的一部分', '自然语言处理是计算机科学领域与人工智能领域中的一个重要方向', '自然语言处理是一门融语言学、计算机科学、数学于一体的科学']


10.计算tf和idf


s = SnowNLP([[u'这篇', u'文章'],             [u'那篇', u'论文'],             [u'这个']])print(s.tf)print(s.idf)[{'文章': 1, '这篇': 1}, {'论文': 1, '那篇': 1}, {'这个': 1}]{'文章': 0.5108256237659907, '论文': 0.5108256237659907, '这篇': 0.5108256237659907, '这个': 0.5108256237659907, '那篇': 0.5108256237659907}u'文章'],
            [u'那篇', u'论文'],
            [u'这个']])
print(s.tf)
print(s.idf)

[{'文章': 1, '这篇': 1}, {'论文': 1, '那篇': 1}, {'这个': 1}]
{'文章': 0.5108256237659907, '论文': 0.5108256237659907, '这篇': 0.5108256237659907, '这个': 0.5108256237659907, '那篇': 0.5108256237659907}


11.计算相似度(BM25)


artilc1 = ['文章']print(s.sim(artilc1))[0.4686473612532025, 0, 0]
print(s.sim(artilc1))

[0.4686473612532025, 0, 0]


12.支持训练


# 提供训练的包括分词,词性标注,情感分析。语料在snownlp/seg目录下# 训练好的文件就存储为seg.marshal了,然后修改snownlp/seg/init.py里的data_path指向刚训练好的文件即可from snownlp import seg#seg.train('data.txt')#seg.save('seg.marshal')# from snownlp import tag# tag.train('199801.txt')# tag.save('tag.marshal')# from snownlp import sentiment# sentiment.train('neg.txt', 'pos.txt')# sentiment.save('sentiment.marshal')
# 训练好的文件就存储为seg.marshal了,然后修改snownlp/seg/init.py里的data_path指向刚训练好的文件即可
from snownlp import seg
#seg.train('data.txt')
#seg.save('seg.marshal')
# from snownlp import tag
# tag.train('199801.txt')
# tag.save('tag.marshal')
# from snownlp import sentiment
# sentiment.train('neg.txt', 'pos.txt')
# sentiment.save('sentiment.marshal')


代码已上传:

https://github.com/yuquanle/StudyForNLP/blob/master/NLPtools/SnowNlpDemo.ipynb


The End


▼往期精彩回顾▼ 新年送福气|您有一份NLP大礼包待领取
初学者|一文掌握HanLP用法
初学者|知否?知否?一文学会Jieba使用方法

长按二维码关注
AI小白入门

ID:StudyForAI

学习AI学习ai(爱)

期待与您的相遇~

你点的每个赞,我都认真当成了喜欢