中文自然语言处理有哪些推荐的库?

中文自然语言处理有哪些实用的库?

喜欢这个问题 | 分享 | 新建回答

回答

妹岛

Feb 19, 2019
0 赞

中文自然语言处理方向有个python库,叫SnowNLP,挺实用方便的,安装起来也简单。

SnowNLP借鉴了TextBlob库,但SnowNLP是针对中文自然语言处理的,此外与TextBlob不同的是其没有用NLTK,且自带了一些训练好的字典,因此可以直接上手使用。(备注:本程序主要是处理unicode类型字符串的。)

安装方式:

$ pip install snownlp

功能特点:

  • 中文分词(Character-Based Generative Model)
  • 词性标注(TnT 3-gram 隐马尔可夫)
  • 情感分析(默认的训练数据主要是买卖东西时的评价)
  • 文本分类(朴素贝叶斯分类)
  • 汉字转换成拼音(Trie树实现的最大匹配)
  • 繁体汉字转简体(Trie树实现的最大匹配)
  • 提取文本关键词(TextRank算法)
  • 提取文本摘要(TextRank算法)
  • tf, idf
  • Tokenization(分割成句子)
  • 文本相似度检测(BM25)
  • 支持python3

使用示例:

from snownlp import SnowNLP

s = SnowNLP(u'这个东西真心很赞')

s.words         # [u'这个', u'东西', u'真心',
                #  u'很', u'赞']

s.tags          # [(u'这个', u'r'), (u'东西', u'n'),
                #  (u'真心', u'd'), (u'很', u'd'),
                #  (u'赞', u'Vg')]

s.sentiments    # 0.9769663402895832 positive的概率

s.pinyin        # [u'zhe', u'ge', u'dong', u'xi',
                #  u'zhen', u'xin', u'hen', u'zan']

s = SnowNLP(u'「繁體字」「繁體中文」的叫法在臺灣亦很常見。')

s.han           # u'「繁体字」「繁体中文」的叫法
                # 在台湾亦很常见。'

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

s = SnowNLP(text)

s.keywords(3)	# [u'语言', u'自然', u'计算机']

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

s.sentences

s = SnowNLP([[u'这篇', u'文章'],
             [u'那篇', u'论文'],
             [u'这个']])
s.tf
s.idf
s.sim([u'文章'])# [0.3756070762985226, 0, 0]

更多请到GitHub上查看SnowNLP库