自然语言处理之中文分词工具介绍

编程入门 行业动态 更新时间:2024-10-08 04:31:14

<a href=https://www.elefans.com/category/jswz/34/1768401.html style=自然语言处理之中文分词工具介绍"/>

自然语言处理之中文分词工具介绍

1.中文分词工具介绍

1.1 jieba

jieba分词是国内使用人数最多的中文分词工具。jieba分词支持三种模式:
(1)精确模式:试图将句子最精确地切开,适合文本分析;
(2)全模式:把句子中所有的可以成词的词语都扫描出来, 速度非常快,但是不能解决歧义;
(3)搜索引擎模式:在精确模式的基础上,对长词再次切分,提高召回率,适合用于搜索引擎分词。
jieba分词过程中主要涉及如下几种算法:
(1)基于前缀词典实现高效的词图扫描,生成句子中汉字所有可能成词情况所构成的有向无环图 (DAG);
(2)采用了动态规划查找最大概率路径, 找出基于词频的最大切分组合;
(3)对于未登录词,采用了基于汉字成词能力的 HMM 模型,采用Viterbi 算法进行计算;
(4)基于Viterbi算法词性标注
(5)基于tf-idftextrank模型抽取关键词;

# -*- coding: utf-8 -*-
"""
jieba分词测试
"""import jieba#全模式
test1 = jieba.cut("杭州西湖风景很好,是旅游胜地!", cut_all=True)
print("全模式: " + "| ".join(test1))#精确模式
test2 = jieba.cut("杭州西湖风景很好,是旅游胜地!", cut_all=False)
print("精确模式: " + "| ".join(test2))#搜索引擎模式
test3= jieba.cut_for_search("杭州西湖风景很好,是旅游胜地,每年吸引大量前来游玩的游客!")  
print("搜索引擎模式:" + "| ".join(test3))

测试结果如下图:

1.2 SnowNLP(github star数 2043)

SnowNLP是一个python写的类库(),可以方便的处理中文文本内容,是受到了TextBlob的启发而写的。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)

SnowNLP的最大特点是特别容易上手,用其处理中文文本时能够得到不少有意思的结果,但不少功能比较简单,还有待进一步完善。

测试代码如下所示:

# -*- coding: utf-8 -*-
"""
SnowNLP测试
"""from snownlp import SnowNLPs = SnowNLP(u'杭州西湖风景很好,是旅游胜地,每年吸引大量前来游玩的游客!')#分词
print(s.words)#情感词性计算
print("该文本的情感词性为正的概率:" + str(s.sentiments))text = u'''
西湖,位于浙江省杭州市西面,是中国大陆首批国家重点风景名胜区和中国十大风景名胜之一。
它是中国大陆主要的观赏性淡水湖泊之一,也是现今《世界遗产名录》中少数几个和中国唯一一个湖泊类文化遗产。
西湖三面环山,面积约6.39平方千米,东西宽约2.8千米,南北长约3.2千米,绕湖一周近15千米。
湖中被孤山、白堤、苏堤、杨公堤分隔,按面积大小分别为外西湖、西里湖、北里湖、小南湖及岳湖等五片水面,
苏堤、白堤越过湖面,小瀛洲、湖心亭、阮公墩三个小岛鼎立于外西湖湖心,夕照山的雷峰塔与宝石山的保俶塔隔湖相映,
由此形成了“一山、二塔、三岛、三堤、五湖”的基本格局。
'''
s2 = SnowNLP(text)#文本关键词提取
print(s2.keywords(10))

以下是测试结果:

2.3 THULAC (github star数 311)

THULAC(THU Lexical Analyzer for Chinese)由清华大学自然语言处理与社会人文计算实验室研制推出的一套中文词法分析工具包,具有中文分词和词性标注功能。THULAC具有如下几个特点:

(1)能力强。利用我们集成的目前世界上规模最大的人工分词和词性标注中文语料库(约含5800万字)训练而成,模型标注能力强大。

(2)准确率高。该工具包在标准数据集Chinese Treebank(CTB5)上分词的F1值可达97.3%,词性标注的F1值可达到92.9%,与该数据集上最好方法效果相当。

(3)速度较快。同时进行分词和词性标注速度为300KB/s,每秒可处理约15万字。只进行分词速度可达到1.3MB/s。

THU词性标记集(通用版)如下所示:

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/其它

测试代码如下:

# -*- coding: utf-8 -*-
"""
THULAC 分词测试
"""import thulac   #默认模式,分词的同时进行词性标注
test1 = thulac.thulac()
text1 = test1.cut("江西庐山风景很好,是旅游胜地!")
print(text1)#只进行分词
test2 = thulac.thulac(seg_only=True)
text2 = test2.cut("江西庐山风景很好,是旅游胜地!")
print(text2)

测试结果如下:

更多推荐

自然语言处理之中文分词工具介绍

本文发布于:2024-02-14 01:32:43,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1761272.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:自然语言   分词   中文   工具

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!