SnowNLP自然语言处理模块具体用法

简单介绍(摘自作者自述)

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


安装方法

pip install snownlp

具体实现功能

中文分词(Character-Based Generative Model)
词性标注(TnT 3-gram 隐马)
情感分析(现在训练数据主要是买卖东西时的评价,所以对其他的一些可能效果不是很好,待解决)
文本分类(Naive Bayes)
转换成拼音(Trie树实现的最大匹配)
繁体转简体(Trie树实现的最大匹配)
提取文本关键词(TextRank算法)
提取文本摘要(TextRank算法)
tf,idf(词频、逆文档频率)
Tokenization(分割成句子)
文本相似(BM25)
支持python3(感谢erning)


实现代码

# 导入SnowNLP库
from snownlp import SnowNLP


if __name__ == '__main__':
    # ---------------------------------------------------------------------
    text = '你站在桥上看风景,看风景的人在楼上看你。明月装饰了你的窗子,你装饰了别人的梦'
    s1 = SnowNLP(text)
    # 分词
    print(s1.words) # ['你', '站', '在', '桥', '上', '看', '风景' ... ]
    # 分句
    print(s1.sentences) # ['你站在桥上看风景', '看风景的人在楼上看你', '明月装饰了你的窗子', '你装饰了别人的梦']
    # 词性标注
    print([w for w in s1.tags]) # [('你', 'r'), ('站', 'v'), ('在', 'p'), ('桥', 'n') ... ]
    # 正负情感分析
    print(s1.sentiments) # 0.9918719387674594
    # 拼音
    print(s1.pinyin) # ['ni', 'zhan', 'zai', 'qiao', 'shang', 'kan', 'feng' ... ]
    # -----------------------------------------------------------------------

    #  -------------------------------------------------
    s2 = SnowNLP(u'「繁體字」「繁體中文」的叫法在臺灣亦很常見。')
    # 繁体字转简体字
    print(s2.han) # 「繁体字」「繁体中文」的叫法在台湾亦很常见。
    # ---------------------------------------------------

    # ----------------------------------------------------
    text = u'''
    自然语言处理是计算机科学领域与人工智能领域中的一个重要方向。
    它研究能实现人与计算机之间用自然语言进行有效通信的各种理论和方法。
    自然语言处理是一门融语言学、计算机科学、数学于一体的科学。
    因此,这一领域的研究将涉及自然语言,即人们日常使用的语言,
    所以它与语言学的研究有着密切的联系,但又有重要的区别。
    自然语言处理并不是一般地研究自然语言,
    而在于研制能有效地实现自然语言通信的计算机系统,
    特别是其中的软件系统。因而它是计算机科学的一部分。
    '''
    s3 = SnowNLP(text)
    # 关键词
    print(s3.keywords(3)) # ['语言', '自然', '计算机']
    # 摘要
    print(s3.summary(3)) # ['因而它是计算机科学的一部分', '自然语言处理是计算机科学领域与人工智能领域中的一个重要方向' ... ]
    # ----------------------------------------------------

    # -----------------------------------------------------------
    s = SnowNLP([[u'这篇', u'文章'], [u'那篇', u'论文'], [u'这个']])
    # 词频
    print(s.tf) # [{'这篇': 1, '文章': 1}, {'那篇': 1, '论文': 1}, {'这个': 1}]
    # 逆文档频率
    print(s.idf) # {'这篇': 0.5108256237659907, '文章': 0.5108256237659907 ... }
    # 文本相似度
    print(s.sim([u'文章'])) # [0.4686473612532025, 0, 0]
    # -----------------------------------------------------------

训练自己的权重

现在提供训练的包括分词,词性标注,情感分析,以分词训练为例 分词的 data.txt 内容类似这样:
在这里插入图片描述

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指向刚训练好的文件即可,训练数据需要自己做标注,这一步需要花费大量的时间


作者:isnowfy
项目: gitee地址 github地址

  • 17
    点赞
  • 53
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 7
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

什么都干的派森

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值