感谢关注天善智能,走好数据之路↑↑↑
欢迎关注天善智能,我们是专注于商业智能BI,大数据,数据分析领域的垂直社区,学习,问答、求职一站式搞定!
前言
最近学习NLP,还在初级阶段,上次jieba分词那篇写完,还在学习哈工大的pyltp。
发现一个比较有趣的中文类库:snownlp
SnowNLP是一个Python写的类库,可以方便的处理中文文本内容。
使用环境
Python3
Features
中文分词(Character-Based Generative Model)
词性标准(TnT 3-gram 隐马)
情感分析(现在训练数据主要是买卖东西时的评价,所以对其他的一些可能效果不是很好,待解决)
文本分类(Naive Bayes)
转换成拼音
繁体转简体
提取文本关键词(TextRank算法)
提取文本摘要(TextRank算法)
tf,idf
Tokenization(分割成句子)
文本相似(BM25)
支持python3
安装snownlp
在cmd下输入:pip3 install snownlp
(ps:为什么用pip3而不用pip,在之前的文章中已经说过原因)
如图,我之前已经安装过
snownlp分词
from snownlp import SnowNLP
s = SnowNLP(u'一次满意的购物')
s.words
['一', '次', '满意', '的', '购物']
PS:这里使用的是它自带的词典
snownlp情感分析
这里的情感分析结果是【0,1】区间上的一个值,越接近1,情感越积极,越接近0,情感越消极。
或者可以理解为positive的概率。
s.sentiments#positive的概率
0.8463107097139686
汉语转拼音
s.pinyin
['yi', 'ci', 'man', 'yi', 'de', 'gou', 'wu']
繁体字转简体
s = SnowNLP(u'「繁體字」「繁體中文」的叫法在臺灣亦很常見。')
s.han
'「繁体字」「繁体中文」的叫法在台湾亦很常见。'
提取文章关键词
text = u'''
自然语言处理(NLP)是计算机科学,人工智能,语言学关注计算机和人类(自然)语言之间的相互作用的领域。因此,自然语言处理是与人机交互的领域有关的。在自然语言处理面临很多挑战,包括自然语言理解,因此,自然语言处理涉及人机交互的面积。在NLP诸多挑战涉及自然语言理解,即计算机源于人为或自然语言输入的意思,和其他涉及到自然语言生成。
现代NLP算法是基于机器学习,特别是统计机器学习。机器学习范式是不同于一般之前的尝试语言处理。语言处理任务的实现,通常涉及直接用手的大套规则编码。
许多不同类的机器学习算法已应用于自然语言处理任务。这些算法的输入是一大组从输入数据生成的"特征"。一些最早使用的算法,如决策树,产生硬的if-then规则类似于手写的规则,是再普通的系统体系。然而,越来越多的研究集中于统计模型,这使得基于附加实数值的权重,每个输入要素柔软,概率的决策。此类模型具有能够表达许多不同的可能的答案,而不是只有一个相对的确定性,产生更可靠的结果时,这种模型被包括作为较大系统的一个组成部分的优点。
自然语言处理研究逐渐从词汇语义成分的语义转移,进一步的,叙事的理解。然而人类水平的自然语言处理,是一个人工智能完全问题。它是相当于解决中央的人工智能问题使计算机和人一样聪明,或强大的AI。自然语言处理的未来一般也因此密切结合人工智能发展。
'''
s = SnowNLP(text)
s.keywords(4)#提取关键词
['语言', '自然', '计算机', '涉及']
总结文章
s.summary(3)
['许多不同类的机器学习算法已应用于自然语言处理任务', '在NLP诸多挑战涉及自然语言理解', '包括自然语言理解']
切分为句子
s.sentences
['自然语言处理(NLP)是计算机科学',
'人工智能',
'语言学关注计算机和人类(自然)语言之间的相互作用的领域',
'因此',
'自然语言处理是与人机交互的领域有关的',
'在自然语言处理面临很多挑战',
'包括自然语言理解',
'因此',
'自然语言处理涉及人机交互的面积',
'在NLP诸多挑战涉及自然语言理解',
'即计算机源于人为或自然语言输入的意思',
'和其他涉及到自然语言生成',
'现代NLP算法是基于机器学习',
'特别是统计机器学习',
'机器学习范式是不同于一般之前的尝试语言处理',
'语言处理任务的实现',
'通常涉及直接用手的大套规则编码',
'许多不同类的机器学习算法已应用于自然语言处理任务',
'这些算法的输入是一大组从输入数据生成的"特征"',
'一些最早使用的算法',
'如决策树',
'产生硬的if-then规则类似于手写的规则',
'是再普通的系统体系',
'然而',
'越来越多的研究集中于统计模型',
'这使得基于附加实数值的权重',
'每个输入要素柔软',
'概率的决策',
'此类模型具有能够表达许多不同的可能的答案',
'而不是只有一个相对的确定性',
'产生更可靠的结果时',
'这种模型被包括作为较大系统的一个组成部分的优点',
'自然语言处理研究逐渐从词汇语义成分的语义转移',
'进一步的',
'叙事的理解',
'然而人类水平的自然语言处理',
'是一个人工智能完全问题',
'它是相当于解决中央的人工智能问题使计算机和人一样聪明',
'或强大的AI',
'自然语言处理的未来一般也因此密切结合人工智能发展']
接下来,进入正题!
from snownlp import seg#现在提供训练的包括分词,词性标注,情感分析,而且都提供了我用来训练的原始文件 以分词为例 分词在snownlp/seg目录下
用data.txt可以用于训练
seg.train('C:\Anaconda3\Lib\site-packages\snownlp\seg\data.txt')
seg.save('seg.marshal')
这样训练好的文件就存储为seg.marshal了
训练情感
from snownlp import sentiment
sentiment.train('C:/Anaconda3/Lib/site-packages/snownlp/sentiment/negtive1.txt','C:/Anaconda3/Lib/site-packages/snownlp/sentiment/positive1.txt')#注意路径斜线别写错
sentiment.save('C:/Anaconda3/Lib/site-packages/snownlp/sentiment/sentiment2.marshal')
这些训练内容是自己找的,可以是情感积极消极词库,也可以是爬到的淘宝积极消极情感文档。
训练好了就可以计算情感啦~
最后这个不科学。。。【捂脸】
一定是训练集太小啦~,还需要扩充训练集
本文作者:天善智能社区小编乐子原创,转载请注明出处。