Python受欢迎的原因之一就是其计算生态丰富,据不完全统计,Python 目前为止有约13万+的第三方库。
本系列将会陆续整理分享一些有趣、有用的第三方库。
-
通过百度网盘获取:
链接:https://pan.baidu.com/s/1FSGLd7aI_UQlCQuovVHc_Q?pwd=mnsj
提取码:mnsj
-
前往GitHub获取:
https://github.com/returu/Python_Ecosystem
-
中文分词(Character-Based Generative Model); -
词性标注(TnT 3-gram 隐马); -
情感分析(内置情感分析模型,无需额外训练即可使用。但是模型基于电商评论数据,通用领域效果可能不佳); -
文本分类(Naive Bayes); -
转换成拼音(Trie树实现的最大匹配); -
繁体转简体(Trie树实现的最大匹配); -
提取文本关键词(TextRank算法); -
提取文本摘要(TextRank算法); -
tf(词频,表示每个词在文档中出现的频率); -
idf(逆文档频率,表示每个词在所有文档中的重要性); -
Tokenization(分割成句子); -
文本相似(BM25算法)。
pip install snownlp
-
示例 1:分词+词性标注+情感分析+拼音转换
from snownlp import SnowNLP
text = "这个产品非常好,我很喜欢!"
# 创建 SnowNLP 对象
s = SnowNLP(text)
# 分词
print(s.words)
# 输出:['这个', '产品', '非常', '好', ',', '我', '很', '喜欢', '!']
# 词性标注
print(list(s.tags))
# 输出:[('这个', 'r'), ('产品', 'n'), ('非常', 'd'), ('好', 'a'), (',', 'w'), ('我', 'r'), ('很', 'd'), ('喜欢', 'v'), ('!', 'w')]
# 情感分析
print(s.sentiments)
# 输出:0.8846089797474971
# 拼音转换
print(s.pinyin)
# 繁简体转换
s = SnowNLP('我愛自然語言處理')
print(s.han)
# 输出:'我爱自然语言处理'
-
示例 2:提取关键词+提取文本摘要+句子分割+拼音转换
text = '''
自然语言处理是计算机科学领域与人工智能领域中的一个重要方向。
它研究能实现人与计算机之间用自然语言进行有效通信的各种理论和方法。
自然语言处理是一门融语言学、计算机科学、数学于一体的科学。
因此,这一领域的研究将涉及自然语言,即人们日常使用的语言,
所以它与语言学的研究有着密切的联系,但又有重要的区别。
自然语言处理并不是一般地研究自然语言,
而在于研制能有效地实现自然语言通信的计算机系统,
特别是其中的软件系统。因而它是计算机科学的一部分。
'''
s = SnowNLP(text)
# 提取前3个关键词
print(s.keywords(3))
# 输出:['语言', '自然', '计算机']
# 提取文本摘要
# 参数3表示提取前3句关键句
print(s.summary(3))
# 输出:['因而它是计算机科学的一部分', '自然语言处理是计算机科学领域与人工智能领域中的一个重要方向', '自然语言处理是一门融语言学、计算机科学、数学于一体的科学']
# 句子分割
print(s.sentences)
# 输出:['自然语言处理是计算机科学领域与人工智能领域中的一个重要方向', '它研究能实现人与计算机之间用自然语言进行有效通信的各种理论和方法', '自然语言处理是一门融语言学、计算机科学、数学于一体的科学', '因此', '这一领域的研究将涉及自然语言', '即人们日常使用的语言', '所以它与语言学的研究有着密切的联系', '但又有重要的区别', '自然语言处理并不是一般地研究自然语言', '而在于研制能有效地实现自然语言通信的计算机系统', '特别是其中的软件系统', '因而它是计算机科学的一部分']
-
示例 3:词频+逆文档频率+文本相似度
s = SnowNLP([['这篇', '文章'],
['那篇', '论文'],
['这个']])
# 词频
print(s.tf)
# 输出:[{'这篇': 1, '文章': 1}, {'那篇': 1, '论文': 1}, {'这个': 1}]
# 逆文档频率
print(s.idf)
# 输出:{'这篇': 0.5108256237659907, '文章': 0.5108256237659907, '那篇': 0.5108256237659907, '论文': 0.5108256237659907, '这个': 0.5108256237659907}
# 文本相似度计算
# 计算输入文本与对象s中每个文档的相似度
print(s.sim([u'文章']))
# 输出:[0.4686473612532025, 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')
训练完成后,会在当前目录下生成一个marshal文件,该文件包含了训练好的模型参数。
-
替换默认模型:
或者修改源代码中snownlp/seg(tag或sentiment)/__init__.py里的data_path指向刚训练好的文件。
更多内容可以前往GitHub查看:
https://github.com/


本篇文章来源于微信公众号: 码农设计师