Python第三方库SnowNLP(Simplified Chinese Text Processing)快速入门与进阶
简介
github地址:https://github.com/isnowfy/snownlp
SnowNLP是一个python写的类库,可以方便的处理中文文本内容,是受到了TextBlob的启发而写的,由于现在大部分的自然语言处理库基本都是针对英文的,于是写了一个方便处理中文的类库,并且和TextBlob不同的是,这里没有用NLTK,所有的算法都是自己实现的,并且自带了一些训练好的字典。注意本程序都是处理的unicode编码,所以使用时请自行decode成unicode。
第一个demo
# -*- coding: utf-8 -*-
"""
Created on Fri Mar 16 09:01:24 2018
@author: Administrator
"""
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')]
#情绪判断
#返回值为正面情绪的概率,
#越接近1表示正面情绪
#越接近0表示负面情绪
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]
SnowNLP的特点分析(根据上诉demo分析):
- 分词
s.words
- 词性标注
s.tags
- 情绪判断
返回值为正面情绪的概率,
越接近1表示正面情绪
越接近0表示负面情绪
s.sentiments
- 返回文本拼音
s.pinyin
- 繁体转简体
#繁体转简体
s = SnowNLP(u'「繁體字」「繁體中文」的叫法在臺灣亦很常見。')
s.han # u'「繁体字」「繁体中文」的叫法
# 在台湾亦很常见。'
- 关键词提取
s.keywords(3)#提取三个关键词
- 文本概括
s.summary(3)
- 评价词语对文本的重要程度
TF-IDF是一种统计方法,用以评估一字词对于一个文件集或一个语料库中的其中一份文件的重要程度。
TF词频越大越重要,但是文中会的“的”,“你”等无意义词频很大,却信息量几乎为0,这种情况导致单纯看词频评价词语重要性是不准确的。因此加入了idf
IDF的主要思想是:如果包含词条t的文档越少,也就是n越小,IDF越大,则说明词条t越重要
TF-IDF综合起来,才能准确的综合的评价一词对文本的重要性。
s = SnowNLP([[u'这篇', u'文章'],
[u'那篇', u'论文'],
[u'这个']])
s.tf
s.idf
- 文本相似性
s.sim([u'文章'])# [0.3756070762985226, 0, 0]