中文分词工具盘点之SnowNLP

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

主要特性:

  • 中文分词( Character-Based Generative Model)
  • 词性标注( TnT3-gram 隐马)
  • 情感分析(现在训练数据主要是买卖东西时的评价,所以对其他的一些可能效果不是很好,待解决)
  • 文本分类(Naive Bayes)
  • 转换成拼音(Trie树实现的最大匹配)
  • 繁体转简体(Trie树实现的最大匹配)
  • 提取文本关键词( TextRank算法)
  • 提取文本摘要( TextRank算法)
  • tf,idf
  • Tokenization(分割成句子)
  • 文本相似( BM25)

安装:

pip install snownlp

示例代码:

from snownlp import SnowNLP

s1 = SnowNLP('这个东西真心很赞')
print(s1.words)
print(list(s1.tags))
print(s1.sentiments)
print(s1.pinyin)

s2 = SnowNLP('「繁體字」「繁體中文」的叫法在臺灣亦很常見。')
print(s2.han)

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

s4 = SnowNLP([['这篇', '文章'], ['那篇', '论文'], ['这个']])
print(s4.tf)
print(s4.idf)
print(s4.sim([u'文章']))

输出内容:

['这个', '东西', '真心', '很', '赞']
[('这个', 'r'), ('东西', 'n'), ('真心', 'd'), ('很', 'd'), ('赞', 'Vg')]
0.9769551298267365
['zhe', 'ge', 'dong', 'xi', 'zhen', 'xin', 'hen', 'zan']
「繁体字」「繁体中文」的叫法在台湾亦很常见。
['语言', '自然', '计算机']
['因而它是计算机科学的一部分', '自然语言处理是计算机科学领域与人工智能领域中的一个重要方向', '自然语言处理是一门融语言学、计算机科学、数学于一体的科学']
['自然语言处理是计算机科学领域与人工智能领域中的一个重要方向', '它研究能实现人与计算机之间用自然语言进行有效通信的各种理论和方法', '自然语言处理是一门融语言学、计算机科学、数学于一体的科学', '因此', '这一领域的研究将涉及自然语言', '即人们日常使用的语言', '所以它与语言学的研究有着密切的联系', '但又有重要的区别', '自然语言处理并不是一般地研究自然语言', '而在于研制能有效地实现自然语言通信的计算机系统', '特别是其中的软件系统', '因而它是计算机科学的一部分']
[{'这篇': 1, '文章': 1}, {'那篇': 1, '论文': 1}, {'这个': 1}]
{'这篇': 0.5108256237659907, '文章': 0.5108256237659907, '那篇': 0.5108256237659907, '论文': 0.5108256237659907, '这个': 0.5108256237659907}
[0.4686473612532025, 0, 0]

参考链接: https://github.com/isnowfy/snownlp

The post 中文分词工具盘点之SnowNLP appeared first on 标点符.

Related posts:

  1. Pandas学习笔记之数据类型
  2. Python模块学习之hashlib
  3. Python学习笔记:*args和**kwargs

你可能感兴趣的:(数据,NLP,分词)