Sentiment Analysis-SnowNLP

Sentiment Analysis SnowNLP

  SnowNLP is a class library written in python, which can easily process Chinese text content. It was inspired by TextBlob. Since most of the natural language processing libraries are basically for English, so I wrote a convenient processing Chinese Unlike TextBlob, NLTK is not used here, all algorithms are implemented by themselves, and some well-trained dictionaries are included.

Install command

pip install snownlp

Main usage

# 导入SnowNLP库
from snownlp import SnowNLP

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

s = SnowNLP(text)

# 分词
print(s.words)

The main function

  • Chinese word segmentation ( Character-Based Generative Model )
  • Part  -of- speech tagging ( TnT 3-gram hidden horse)
  • Sentiment analysis (now the training data is mainly the evaluation when buying and selling things, so it may not be very effective for some other things, to be resolved)
  • Text classification (Naive Bayes)
  • Convert to Pinyin (the maximum match achieved by the Trie tree)
  • Traditional Chinese to Simplified Chinese (Maximum matching achieved by Trie tree)
  • Extract text keywords ( TextRank algorithm)
  • Extract text summaries ( TextRank algorithm)
  • tf, idf (information measurement)
  • Tokenization (split into sentences)
  • Text similar ( 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]

About training

  Training now includes word segmentation, part-of-speech tagging, sentiment analysis

 

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指向刚训练好的文件即可

 

Guess you like

Origin blog.csdn.net/qq_36816848/article/details/114746157