专栏首页AI小白入门初学者|今天掌握SnowNLP好不好

初学者|今天掌握SnowNLP好不好

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

简介

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

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

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

实战

1.安装

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

2.分词

s_token = s.words
print(s_token)

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

3.词性标注

s_tags = s.tags
for token_tag in s_tags:
    print(token_tag)

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

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

s_senti = s.sentiments
print(s_senti)

0.902242143497134

5.中文拼音

s_pinyin = s.pinyin
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)

我爱自然语言处理技术!

7.分割成句子(Tokenization)

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

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

8.关键词抽取

key_num = 3
t_key = t.keywords(key_num)
print(t_key)

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

9.摘要抽取

key_sen = 3
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}

11.计算相似度(BM25)

artilc1 = ['文章']
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')

代码已上传:

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

The End

本文分享自微信公众号 - AI小白入门(StudyForAI),作者:yuquanle

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-05-06

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 一天快速入门python

    Python 是由Guido Van Rossum在 90 年代早期设计,现在是最常用的编程语言之一。特别是人工智能的火热,再加之它的语法简洁且优美,实乃初学者...

    yuquanle
  • 【干货】 Python入门深度好文(上篇)

    对于任何一种计算机语言,我觉得最重要的就是「数据类型」「条件语句 & 迭代循环」和「函数」,这三方面一定要打牢基础。此外 Python 非常简洁,一行代码 (o...

    yuquanle
  • 【NLP】一文完全搞懂序列标注算法

    序列标注模型用到了长短期记忆网络(LSTM),条件随机场(CRF),Highway网络,本文循序渐进的介绍了序列标注算法,Be patience ! 跟着小编的...

    yuquanle
  • 多态与多态性

      Python崇尚鸭子类型,即‘如果看起来像、叫声像而且走起路来像鸭子,那么它就是鸭子’

    py3study
  • python避免if-else过多的办法

    方法一:来自http://biancheng.dnbcw.net/python/417264.html

    py3study
  • python中的函数

    版权声明:署名,允许他人基于本文进行创作,且必须基于与原先许可协议相同的许可协议分发本文 (Creative Commons)

    六小登登
  • python获取当前目录路径和上级路径

    在使用python的时候总会遇到路径切换的使用情况,如想从文件夹test下的test.py调用data文件夹下的data.txt文件:

    py3study
  • 树莓派 python 百度语音控制 gpio 控制开关灯

    最初拿到树莓派的时候测试过,没成功,后来发现一张华丽丽的说明图,顿时醒悟了..记录下来,

    十四君
  • CMake---优雅的构建C/C++软件项目实践(1)

    首先说明的是本篇文章不从cmake的整个语法上去讲述,而是从一个实际项目的构建上入手,去了解如何优雅的去构建一个软件项目,搭建一个C/C++软件项目基本的依赖组...

    别打名名
  • [PHP] 算法-构建排除当前元素的乘积数组的PHP实现

    构建乘积数组 给定一个数组A[0,1,...,n-1],请构建一个数组B[0,1,...,n-1],其中B中的元素B[i]=A[0]*A[1]*...*A[i-...

    陶士涵

扫码关注云+社区

领取腾讯云代金券