SnowNLP是一个python写的类库,可以方便的处理中文文本内容。如中文分词词性标注情感分析文本分类提取文本关键词文本相似度计算等。

# -*- coding: utf-8 -*-
from snownlp import SnowNLP

s = SnowNLP('这个东西真心很赞')
print('中文分词:')
print(s.words)         # [u'这个', u'东西', u'真心',
                #  u'很', u'赞']
print()
print('词性标注:')
print(s.tags)          # [(u'这个', u'r'), (u'东西', u'n'),
                #  (u'真心', u'd'), (u'很', u'd'),
                #  (u'赞', u'Vg')]
print()
print('情感分析:')
print(s.sentiments)    # 0.9769663402895832 positive的概率
print()
print('转成拼音:')
#汉转拼音
print(s.pinyin)        # [u'zhe', u'ge', u'dong', u'xi',
                #  u'zhen', u'xin', u'hen', u'zan']
print()
print('繁体转简体:')
s = SnowNLP('「繁體字」「繁體中文」的叫法在臺灣亦很常見。')
#简转繁
print(s.han)    # '「繁体字」「繁体中文」的叫法在台湾亦很常见。'
print()
text = '''
自然语言处理是计算机科学领域与人工智能领域中的一个重要方向。
它研究能实现人与计算机之间用自然语言进行有效通信的各种理论和方法。
自然语言处理是一门融语言学、计算机科学、数学于一体的科学。
因此,这一领域的研究将涉及自然语言,即人们日常使用的语言,
所以它与语言学的研究有着密切的联系,但又有重要的区别。
自然语言处理并不是一般地研究自然语言,
而在于研制能有效地实现自然语言通信的计算机系统,
特别是其中的软件系统。因而它是计算机科学的一部分。
'''

s = SnowNLP(text)
print('提取文本关键词:')
print(s.keywords(3))   # ['语言', '自然', '计算机']
print()

print('提取文本摘要:')
print(s.summary(3)) # ['因而它是计算机科学的一部分',
                #  '自然语言处理是一门融语言学、计算机科学、
                #    数学于一体的科学',
                #  '自然语言处理是计算机科学领域与人工智能
                #    领域中的一个重要方向']
print()
print('分割成句子:')              
print(s.sentences)
print()

s = SnowNLP([['这篇', '文章','真','不错'],
             ['那篇', '论文'],
             ['这个']])
print('词频:')
print(s.tf)   #词频
print()
print('逆向文件频率:')
print(s.idf)  #逆向文件频率
print()
print('文本相似:')
print(s.sim(['文章']))# [0.3756070762985226, 0, 0]
print(s.sim(['文章','真']))# [0.7731414846187967, 0, 0]

输出:

中文分词:
['这个', '东西', '真心', '很', '赞']

词性标注:
<zip object at 0x12638b388>

情感分析:
0.9769551298267365

转成拼音:
['zhe', 'ge', 'dong', 'xi', 'zhen', 'xin', 'hen', 'zan']

繁体转简体:
「繁体字」「繁体中文」的叫法在台湾亦很常见。

提取文本关键词:
['语言', '自然', '计算机']

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

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

词频:
[{'这篇': 1, '文章': 1, '真': 1, '不错': 1}, {'那篇': 1, '论文': 1}, {'这个': 1}]

逆向文件频率:
{'这篇': 0.5108256237659907, '文章': 0.5108256237659907, '真': 0.5108256237659907, '不错': 0.5108256237659907, '那篇': 0.5108256237659907, '论文': 0.5108256237659907, '这个': 0.5108256237659907}

文本相似:
[0.38657074230939836, 0, 0]
[0.7731414846187967, 0, 0]

关于训练(分词,词性标注,情感分析):

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')
ps: 训练好的文件就存储为 seg.marshal 了,之后修改 snownlp/seg/__init__.py 里的 data_path 指向刚训练好的文件即可
 或者 自己指向自己训练地址

Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐