模型分词对比jieba_thulac_SnowNLP

开源模型分词、及关键字提取

中文分词(Chinese Word Segmentation)指的是将一个汉字序列切分成一个一个单独的词。大部分中文分词模型语料库是基于人民日报。

1 jieba:

语料主要是1998人民日报。特点:jieba以预先整理的词库为优先,尽量匹配最长的词。

目前使用jieba的有效方法建议:将清华的高质量词库以及自己整理的专有词库导入jieba。

(1)  基于“前缀词典”实现高效的词图扫描,生成句子中汉字所有可能成词情况所构成的有向无环图 (DAG)
(2)  采用了“动态规划”查找最大概率路径, 找出“基于词频的最大切分组合”
(3)  对于“未登录词”,采用了基于汉字成词能力的 “HMM模型”,采用“Viterbi算法”进行计算
(4)  基于“Viterbi”算法做“词性标注”
(5)  基于“tf-idf”和“textrank”模型抽取关键词

2 thulac:

语料主要基于人民日报。清华大学自然语言处理与社会人文计算实验室研制推出,具有中文分词词性标注功能。

(1)能力强。利用我们集成的目前世界上规模最大的人工分词和词性标注中文语料库(约含5800万字)训练而成,模型标注能力强大。
(2)准确率高。该工具包在标准数据集Chinese Treebank(CTB5)上分词的F1值可达97.3%,词性标注的F1值可达到92.9%,与该数据集上最好方法效果相当。
(3)速度较快。同时进行分词和词性标注速度为300KB/s,每秒可处理约15万字。只进行分词速度可达到1.3MB/s。
切词 代码运行

类 thulac 中的 cut_f(self, input_file, output_file) 方法中的打开文件源码 需添加

encoding='utf-8'

初始化程序,进行自定义设置:

thulac(user_dict=None, model_path=None, T2S=False, seg_only=False, filt=False, deli='_')
参数详解:
user_dict	设置用户词典,用户词典中的词会被打上uw标签。词典中每一个词一行,UTF8编码 
model_path 	设置模型文件所在文件夹,默认为models/ 
			.\envs\env_myenv\Lib\site-packages\thulac\models
T2S 		默认False, 是否将句子从繁体转化为简体 
seg_only 	默认False, 只进行分词,不进行词性标注 
filt 		默认False, 是否使用过滤器去除一些没有意义的词语,例如“可以”。 
deli 		默认为‘_’, 设置词与词性之间的分隔符 
rm_space 	默认为True, 是否去掉原文本中的空格后再进行分词

词性解释:

n/名词 np/人名 ns/地名 ni/机构名 nz/其它专名
m/数词 q/量词 mq/数量词 t/时间词 f/方位词 s/处所词
v/动词 a/形容词 d/副词 h/前接成分 k/后接成分 
i/习语 j/简称 r/代词 c/连词 p/介词 u/助词 y/语气助词
e/叹词 o/拟声词 g/语素 w/标点 x/其它 

3 SnowNLP

功能包含:

(1)中文分词(Character-Based Generative Model);
(2)词性标注(3-gram HMM);
(3)情感分析(简单分析,如评价信息);
(4)文本分类(Naive Bayes)
(5)转换成拼音(Trie树实现的最大匹配)
(6)繁简转换(Trie树实现的最大匹配)
(7)文本关键词和文本摘要提取(TextRank算法)
(8)计算文档词频(TF,Term Frequency)和逆向文档频率(IDF,Inverse Document Frequency)
(9)Tokenization(分割成句子)
(10)文本相似度计算(BM25)

关键字提取

基于统计学的算法依赖“切词”效果且缺失上下文语义信息,基于预训练模型的算法偏向于获取长度较长的短语,且在英文数据集表现较好。

(3)其他,NLTK方法也是对英文更友好。

情感分析

1 现有的情感分析库如snownlp(中文友好)、TextBlob(英文)、pyhanlp ,分类为积极(positive)、消极(negative)和中性()。

pip install snownlp

2 pyhanlp :支持中文,Hanlp支持多种自然语言处理任务,包括分词、词性标注、命名实体识别、依存句法分析、情感分析、文本分类等。CRF模型分词。官网:HanLP 。(https://github.com/hankcs/HanLP/tree/doc-zh)。需要注册用户申请密钥。

情感词库:txt文本格式,单个类别每行一个词。

3 snownlp 情感分析与自定义训练:

(3.1)snownlp:Simplified Chinese Text Processing 简体中文文本处理

1 地址:https://pypi.org/project/snownlp/;
2 参考:[TextBlob](https://github.com/sloria/TextBlob)
3 snownlp主要可以进行中文分词(算法是Character-Based Generative Model)、词性标注(原理是TnT、3-gram 隐马)、情感分析(官网指明购物类的评论的准确率较高,其实是因为它的语料库主要是购物方面的,可以自己构建相关领域语料库,替换原来的,准确率也挺不错的)、文本分类(原理是朴素贝叶斯)、转换拼音、繁体转简体、提取文本关键词(原理是TextRank)、提取摘要(原理是TextRank)、分割句子、文本相似(原理是BM25)。
4 训练参考:D:\ProgramFiles\miniconda3\envs\env_myenv\Lib\site-packages\snownlp\seg 目录下
    from snownlp import sentiment
    sentiment.train('neg.txt', 'pos.txt')
    sentiment.save('sentiment.marshal')
  训练模型需要非涉诈文本和涉诈文本。
5 若涉及繁体转简体snownlp可实现:print(SnowNLP(u'繁體中文在臺灣亦很常見。').han)

(3.2)补充上述原理部分的理解:

① TnT、3-gram 隐马:词性标注原理,词性包含((词性表.txt))。采用隐马尔可夫模型(使用了3-gram和Good-Turing平滑方法)。隐马尔科夫模型(HMM)原理见基于隐马尔可夫模型的词性标注 ,数学模型,用数学符号和参数表示,包括隐藏状态集合、观察状态集合、初始概率向量, 状态转移矩阵A,混淆矩阵B。

② 提取关键字原理TextRank:基于图模型,词就是Graph中的节点,而词与词之间的边,则利用“共现”关系来确定。“共现”即共同出现,即在一个给定大小的滑动窗口内的词认为共现,而这些单词间也就存在着边。

s = SnowNLP(text)
s.words			# 分词
s.keywords(10) 	# 关键字
s.sentiments	# 积极的概率

PageRank:网站进行排序然后返回给用户最有”价值“的网站?最直观的,对每个网页进行“打分”,而打分标准:网页跳转超链接认为投票一次。

FastTextRank:将FastText和TextRank结合起来,首先利用FastText获取每个单词的语义表示,然后应用TextRank算法来评估句子的重要性。参考:TextRank 和 FastTextRank实践 )

③ 计算文本相似度BM25:将需要计算的query分词成w1,w2,…,wn,然后求出每一个词和文章的相关度,最后将这些相关度进行累加,最终就可以的得到文本相似度计算结果。

(3.3)snownlp怎么训练文本多分类模型?

snownlp: 简体中文文本处理,参考TextBlob实现。没有使用NLTK。使用时需decode成unicode。
贝叶斯分类原理,所以只能二分类,输出概率。
多分类模型:聚类;神经网络分类模型。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

爱吃油淋鸡的莫何

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

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

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

打赏作者

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

抵扣说明:

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

余额充值