Python分词、情感分析工具——SnowNLP

本文内容主要参考GitHub:https://github.com/isnowfy/snownlp

what‘s the SnowNLP

  SnowNLP是一个python写的类库,可以方便的处理中文文本内容,是受到了TextBlob的启发而写的,由于现在大部分的自然语言处理库基本都是针对英文的,于是写了一个方便处理中文的类库,并且和TextBlob不同的是,这里没有用NLTK,所有的算法都是自己实现的,并且自带了一些训练好的字典。注意本程序都是处理的unicode编码,所以使用时请自行decode成unicode。

安装

pip install snownlp

主要用法

# 导入SnowNLP库
from snownlp import SnowNLP

# 需要操作的句子
text = ‘你站在桥上看风景,看风景的人在楼上看你。明月装饰了你的窗子,你装饰了别人的梦‘

s = SnowNLP(text)

# 分词
print(s.word)

主要功能

  • 中文分词(Character-Based Generative Model
  • 词性标注(TnT 3-gram 隐马)
  • 情感分析(现在训练数据主要是买卖东西时的评价,所以对其他的一些可能效果不是很好,待解决)
  • 文本分类(Naive Bayes)
  • 转换成拼音(Trie树实现的最大匹配)
  • 繁体转简体(Trie树实现的最大匹配)
  • 提取文本关键词(TextRank算法)
  • 提取文本摘要(TextRank算法)
  • tf,idf(信息衡量)
  • Tokenization(分割成句子)
  • 文本相似(BM25
from snownlp import SnowNLP
text = ‘李达康就是这样的人,她穷哭出声,不攀龙附凤,不结党营私,不同流合污,不贪污受贿,也不伪造政绩,手下贪污出事了他自责用人不当,服装厂出事了他没想过隐瞒,後面這些是繁體字‘

s = SnowNLP(text)
# 一、分词
print(s.words)
# [‘李‘, ‘达康‘, ‘就‘, ‘是‘, ‘这样‘, ‘的‘, ‘人‘, ‘,‘, ‘她穷‘, ‘哭出‘, ‘声‘, ‘,‘, ‘不‘, ‘攀龙‘, ‘附‘, ‘凤‘, ‘,‘, ‘不结‘, ‘党‘, ‘营私‘, ‘,‘, ‘不同‘, ‘流‘, ‘合‘, ‘污‘, ‘,‘, ‘不‘, ‘贪污‘, ‘受贿‘, ‘,‘, ‘也‘, ‘不‘, ‘伪造‘, ‘政绩‘, ‘,‘, ‘手下‘, ‘贪污‘, ‘出事‘, ‘了‘, ‘他‘, ‘自‘, ‘责‘, ‘用人‘, ‘不当‘, ‘,‘, ‘服装厂‘, ‘出事‘, ‘了‘, ‘他‘, ‘没‘, ‘想过‘, ‘隐瞒‘, ‘,‘, ‘後面‘, ‘這些‘, ‘是‘, ‘繁‘, ‘體字‘]

# 二、词性标注
tags = [x for x in s.tags]
print(tags)
# [(‘李‘, ‘nr‘), (‘达康‘, ‘nr‘), (‘就‘, ‘d‘), (‘是‘, ‘v‘), (‘这样‘, ‘r‘), (‘的‘, ‘u‘), (‘人‘, ‘n‘), (‘,‘, ‘w‘), (‘她穷‘, ‘Rg‘), (‘哭出‘, ‘Rg‘), (‘声‘, ‘q‘), (‘,‘, ‘w‘), (‘不‘, ‘d‘), (‘攀龙‘, ‘Vg‘), (‘附‘, ‘v‘), (‘凤‘, ‘Ng‘), (‘,‘, ‘w‘), (‘不结‘, ‘vvn‘), (‘党‘, ‘n‘), (‘营私‘, ‘Bg‘), (‘,‘, ‘w‘), (‘不同‘, ‘a‘), (‘流‘, ‘Ng‘), (‘合‘, ‘v‘), (‘污‘, ‘Ng‘), (‘,‘, ‘w‘), (‘不‘, ‘d‘), (‘贪污‘, ‘v‘), (‘受贿‘, ‘v‘), (‘,‘, ‘w‘), (‘也‘, ‘d‘), (‘不‘, ‘d‘), (‘伪造‘, ‘v‘), (‘政绩‘, ‘n‘), (‘,‘, ‘w‘), (‘手下‘, ‘n‘), (‘贪污‘, ‘v‘), (‘出事‘, ‘v‘), (‘了‘, ‘u‘), (‘他‘, ‘r‘), (‘自‘, ‘p‘), (‘责‘, ‘Ng‘), (‘用人‘, ‘v‘), (‘不当‘, ‘a‘), (‘,‘, ‘w‘), (‘服装厂‘, ‘n‘), (‘出事‘, ‘v‘), (‘了‘, ‘u‘), (‘他‘, ‘r‘), (‘没‘, ‘d‘), (‘想过‘, ‘ad‘), (‘隐瞒‘, ‘v‘), (‘,‘, ‘w‘), (‘後面‘, ‘Rg‘), (‘這些‘, ‘Rg‘), (‘是‘, ‘v‘), (‘繁‘, ‘Rg‘), (‘體字‘, ‘Rg‘)]

# 三、断句
print(s.sentences) # [‘李达康就是这样的人‘, ‘她穷哭出声‘, ‘不攀龙附凤‘, ‘不结党营私‘, ‘不同流合污‘, ‘不贪污受贿‘, ‘也不伪造政绩‘, ‘手下贪污出事了他自责用人不当‘, ‘服装厂出事了他没想过隐瞒‘, ‘後面這些是繁體字‘]

# 四、情绪判断,返回值为正面情绪的概率,越接近1表示正面情绪,越接近0表示负面情绪
text1 = ‘这部电影真心棒,全程无尿点‘
text2 = ‘这部电影简直烂到爆‘
s1 = SnowNLP(text1)
s2 = SnowNLP(text2)
print(text1, s1.sentiments) # 这部电影真心棒,全程无尿点 0.9842572323704297
print(text2, s2.sentiments) # 这部电影简直烂到爆 0.0566960891729531

# 五、拼音
print(s.pinyin)
# [‘li‘, ‘da‘, ‘kang‘, ‘jiu‘, ‘shi‘, ‘zhe‘, ‘yang‘, ‘de‘, ‘ren‘, ‘,‘, ‘ta‘, ‘qiong‘, ‘ku‘, ‘chu‘, ‘sheng‘, ‘,‘, ‘bu‘, ‘pan‘, ‘long‘, ‘fu‘, ‘feng‘, ‘,‘, ‘bu‘, ‘jie‘, ‘dang‘, ‘ying‘, ‘si‘, ‘,‘, ‘bu‘, ‘tong‘, ‘liu‘, ‘he‘, ‘wu‘, ‘,‘, ‘bu‘, ‘tan‘, ‘wu‘, ‘shou‘, ‘hui‘, ‘,‘, ‘ye‘, ‘bu‘, ‘wei‘, ‘zao‘, ‘zheng‘, ‘ji‘, ‘,‘, ‘shou‘, ‘xia‘, ‘tan‘, ‘wu‘, ‘chu‘, ‘shi‘, ‘liao‘, ‘ta‘, ‘zi‘, ‘ze‘, ‘yong‘, ‘ren‘, ‘bu‘, ‘dang‘, ‘,‘, ‘fu‘, ‘zhuang‘, ‘chang‘, ‘chu‘, ‘shi‘, ‘liao‘, ‘ta‘, ‘mo‘, ‘xiang‘, ‘guo‘, ‘yin‘, ‘man‘, ‘,‘, ‘後‘, ‘mian‘, ‘這‘, ‘xie‘, ‘shi‘, ‘fan‘, ‘體‘, ‘zi‘]

# 六、繁体转简体
print(s.han) # 李达康就是这样的人,她穷哭出声,不攀龙附凤,不结党营私,不同流合污,不贪污受贿,也不伪造政绩,手下贪污出事了他自责用人不当,服装厂出事了他没想过隐瞒,后面这些是繁体字

# 七、关键字抽取
text3 = ‘‘‘
北京故宫 是 中国 明清两代 的 皇家 宫殿 , 旧 称为 紫禁城 , 位于 北京 中轴线 的 中心 , 是 中国 古代 宫廷 建筑 之 精华 。 北京故宫 以 三 大殿 为 中心 , 占地面积 72 万平方米 , 建筑面积 约 15 万平方米 , 有 大小 宫殿 七十 多座 , 房屋 九千余 间 。 是 世界 上 现存 规模 最大 、 保存 最为 完整 的 木质 结构 古建筑 之一 。
北京故宫 于 明成祖 永乐 四年 ( 1406 年 ) 开始 建设 , 以 南京 故宫 为 蓝本 营建 , 到 永乐 十八年 ( 1420 年 ) 建成 。 它 是 一座 长方形 城池 , 南北 长 961 米 , 东西 宽 753 米 , 四面 围有 高 10 米 的 城墙 , 城外 有 宽 52 米 的 护城河 。 紫禁城 内 的 建筑 分为 外朝 和内廷 两 部分 。 外朝 的 中心 为 太和殿 、 中和殿 、 保和殿 , 统称 三 大殿 , 是 国家 举行 大 典礼 的 地方 。 内廷 的 中心 是 乾清宫 、 交泰 殿 、 坤宁宫 , 统称 后 三宫 , 是 皇帝 和 皇后 居住 的 正宫 。   [ 1 ]
北京故宫 被誉为 世界 五大 宫之首 ( 法国 凡尔赛宫 、 英国 白金汉宫 、 美国白宫 、 俄罗斯 克里姆林宫 ) , 是 国家 AAAAA 级 旅游 景区 ,   [ 2 - 3 ]     1961 年 被 列为 第一批 全国 重点 文物保护 单位 ;   [ 4 ]     1987 年 被 列为 世界 文化遗产 。   [ 5 ]
2012 年 1 月 至 2018 年 6 月 , 故宫 累计 接待 观众 达到 1 亿人次 。 2019 年 起 , 故宫 将 试行 分 时段 售票   [ 6 ]     。 2018 年 9 月 3 日 , 故宫 养心殿 正式 进入 古建筑 研究性 保护 修缮 工作 的 实施 阶段 。   [ 7 ]     2019 年 3 月 4 日 , 故宫 公布 了 2019 年 下半年 展览 计划 。   [ 8 ]
‘‘‘

s = SnowNLP(text3)
print(s.keywords(limit=10)) # [‘故宫‘, ‘年‘, ‘米‘, ‘外‘, ‘中心‘, ‘世界‘, ‘建筑‘, ‘北京‘, ‘宫‘, ‘保护‘]

# 八、概括总结文章
print(s.summary(limit=4)) # [‘北京故宫 以 三 大殿 为 中心‘, ‘2012 年 1 月 至 2018 年 6 月‘, ‘[ 7 ]     2019 年 3 月 4 日‘, ‘北京故宫 于 明成祖 永乐 四年 ( 1406 年 ) 开始 建设‘]

# 九、信息衡量
‘‘‘
TF-IDF是一种统计方法,用以评估一字词对于一个文件集或一个语料库中的其中一份文件的重要程度。

TF词频越大越重要,但是文中会的“的”,“你”等无意义词频很大,却信息量几乎为0,这种情况导致单纯看词频评价词语重要性是不准确的。因此加入了idf

IDF的主要思想是:如果包含词条t的文档越少,也就是n越小,IDF越大,则说明词条t越重要

TF-IDF综合起来,才能准确的综合的评价一词对文本的重要性。
‘‘‘
s = SnowNLP([
    [‘性格‘, ‘善良‘],
    [‘温柔‘, ‘善良‘, ‘善良‘],
    [‘温柔‘, ‘善良‘],
    [‘好人‘],
    [‘性格‘, ‘善良‘],
])
print(s.tf) # [{‘性格‘: 1, ‘善良‘: 1}, {‘温柔‘: 1, ‘善良‘: 2}, {‘温柔‘: 1, ‘善良‘: 1}, {‘好人‘: 1}, {‘性格‘: 1, ‘善良‘: 1}]
print(s.idf) # {‘性格‘: 0.33647223662121295, ‘善良‘: -1.0986122886681098, ‘温柔‘: 0.33647223662121295, ‘好人‘: 1.0986122886681098}

# 十、文本相似性
print(s.sim([‘温柔‘])) # [0, 0.2746712135683371, 0.33647223662121295, 0, 0]
print(s.sim([‘善良‘])) # [-1.0986122886681098, -1.3521382014376737, -1.0986122886681098, 0, -1.0986122886681098]
print(s.sim([‘好人‘])) # [0, 0, 0, 1.4175642434427222, 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‘)
# 这样训练好的文件就存储为seg.marshal了,之后修改snownlp/seg/__init__.py里的data_path指向刚训练好的文件即可

原文地址:https://www.cnblogs.com/zhuminghui/p/10953717.html

时间: 2024-08-03 20:37:47

Python分词、情感分析工具——SnowNLP的相关文章

我用Python进行情感分析,让程序员和女神牵手成功

先用电影评论来做情感分析,主要包括下面几个主要内容(看到最后哦): 1.准备文本数据 2.基于文本文档来构建特征向量 3.训练机器学习模型来区分电影评论的正面评论和负面评论(对你的女神同样适用哦~~) 4.使用外存学习和在线学习算法来处理大数据 在本篇文章中,主要介绍对于电影评论数据的准备工作. 一.情感分析 情感分析也称观点挖掘(opinion mining),是机器学习中自然语言处理(NLP)领域一个非常流行的分支,它主要是分析文档的情感倾向. 二.下载数据 请自行准备一个电影信息(或者直接

python snownlp情感分析简易demo

SnowNLP是国人开发的python类库,可以方便的处理中文文本内容,是受到了TextBlob的启发而写的,由于现在大部分的自然语言处理库基本都是针对英文的,于是写了一个方便处理中文的类库,并且和TextBlob不同的是,这里没有用NLTK,所有的算法都是自己实现的,并且自带了一些训练好的字典.注意本程序都是处理的unicode编码,所以使用时请自行decode成unicode.MIT许可下发行.其 github 主页我自己修改了上文链接中的python代码并加入些许注释,以方便你的理解: f

snownlp情感分析源码解析

最近发现了snownlp这个库,这个类库是专门针对中文文本进行文本挖掘的. 主要功能: 中文分词(Character-Based Generative Model) 词性标注(TnT 3-gram 隐马) 情感分析(现在训练数据主要是买卖东西时的评价,所以对其他的一些可能效果不是很好,待解决) 文本分类(Naive Bayes) 转换成拼音(Trie树实现的最大匹配) 繁体转简体(Trie树实现的最大匹配) 提取文本关键词(TextRank算法) 提取文本摘要(TextRank算法) tf,id

Python爬虫和情感分析简介

摘要 这篇短文的目的是分享我这几天里从头开始学习Python爬虫技术的经验,并展示对爬取的文本进行情感分析(文本分类)的一些挖掘结果. 不同于其他专注爬虫技术的介绍,这里首先阐述爬取网络数据动机,接着以豆瓣影评为例介绍文本数据的爬取,最后使用文本分类的技术以一种机器学习的方式进行情感分析.由于内容覆盖面巨大,无法详细道尽,这篇文章旨在给那些对相关领域只有少量或者没有接触的人一个认知的窗口,希望激发读者自行探索的兴趣. 以下的样本代码用Pyhton写成,主要使用了scrapy, sklearn两个

Python代码分析工具:PyChecker、Pylint

1 概述 PyChecker是Python代码的静态分析工具,它能够帮助查找Python代码的bug,而且能够对代码的复杂度和格式等提出警告. PyChecker可以工作在多种方式之下.首先,PyChecker会导入所检查文件中包含的模块,检查导入是否正确,同时检查文件中的函数.类和方法等. PyChecker可以检查出来的问题有如下几种: 全局量没有找到,比如没有导入模块 传递给函数.方法.构造器的参数数目错误 传递给内建函数和方法的参数数目错误 字符串格式化信息不匹配 使用不存在的类方法和属

【转】用python实现简单的文本情感分析

import jieba import numpy as np # 打开词典文件,返回列表 def open_dict(Dict='hahah',path = r'/Users/zhangzhenghai/Downloads/Textming/'): path = path + '%s.txt' %Dict dictionary = open(path, 'r', encoding='utf-8') dict = [] for word in dictionary: word = word.st

自然语言分析工具Hanlp依存文法分析python使用总结(附带依存关系英文简写的中文解释)

最近在做一个应用依存文法分析来提取文本中各种关系的词语的任务.例如:text='新中国在马克思的思想和恩格斯的理论阔步向前': ps:这里马克思和恩格斯原来我是用的毛zd和邓xp,但是系统说这两个名字违规了........我很爱国的好不好!!!!!! 我需要提取这个text中的并列的两个关系,从文中分析可知,"马克思的思想"和"恩格斯的理论"是两个并列关系的短语,所以想要将其提取出来: 首先大致了解一下依存文法分析的前提条件,将句子分词并进行词性标注,这一步非常关键

Python性能分析工具Profile

Python性能分析工具Profile 代码优化的前提是需要了解性能瓶颈在什么地方,程序运行的主要时间是消耗在哪里,对于比较复杂的代码可以借助一些工具来定位,python 内置了丰富的性能分析工具,如 profile,cProfile 与 hotshot 等.其中 Profiler 是 python 自带的一组程序,能够描述程序运行时候的性能,并提供各种统计帮助用户定位程序的性能瓶颈.Python 标准模块提供三种 profilers:cProfile,profile 以及 hotshot. p

Python分词工具——jieba

jieba简介 python在数据挖掘领域的使用越来越广泛.想要使用python做文本分析,分词是必不可少的一个环节在python的第三方包里,jieba应该算得上是分词领域的佼佼者. GitHub地址:https://github.com/fxsjy/jieba 安装方法 # 全自动安装: easy_install jieba 或者 pip install jieba / pip3 install jieba # 半自动安装: 先下载 http://pypi.python.org/pypi/j