java 分词获取词性_jie分词之分词、词性分析、关键词抽取

本文详细介绍了jieba分词在Java环境下的应用,包括使用jieba进行关键词抽取、词性标注,以及分词的并行处理。通过示例代码展示了如何使用`jieba.analyse.extract_tags`和`jieba.analyse.textrank`方法进行关键词提取,并解释了HMM在新词发现中的作用。同时,文章还探讨了分词的精确模式、全模式和搜索引擎模式,并对词典格式和词性分析进行了说明。
摘要由CSDN通过智能技术生成

jieba.analyse.extract_tags(sentence, topK=20, withWeight=False, allowPOS=(), withFlag=False)#topK 表示返回最大权重关键词的个数,None表示全部#withWeight表示是否返回权重,是的话返回(word,weight)的list#allowPOS仅包括指定词性的词,默认为空即不筛选。

jieba.analyse.textrank(self, sentence, topK=20, withWeight=False, allowPOS=('ns', 'n', 'vn', 'v'), withFlag=False)#与TF-IDF方法相似,但是注意allowPOS有默认值,即会默认过滤某些词性。

(3)并行分词

jieba.enable_parallel(4) #开启并行分词模式,参数为并行进程数,默认全部

jieba.disable_parallel() #关闭并行分词模式

代码研读与工作流程分析

整体工作流程

jieba分词主要通过词典来进行分词及词性标注,两者使用了一个相同的词典。正因如此,分词的结果优劣将很大程度上取决于词典,虽然使用了HMM来进行新词发现。

jieba分词包整体的工作流程如下图所示:

7dfb90ce1d9e24a77e01811ca460ba99.png

分词

jieba分词中,首先通过对照典生成句子的有向无环图,再根据选择的模式不同,根据词典寻找最短路径后对句子进行截取或直接对句子进行截取。对于未登陆词(不在词典中的词)使用HMM进行新词发现。

a0fc6e61dbcdc89110d0e719daefa6e4.png

a.精确模式与全模式

c65a1621dca39051f64eec5ce67a822c.png

b.搜索引擎模式

a图中演示了分词的主要过程,但是其中只演示了被切分出来的一个子字符串的分词操作过程,在实际操作流程中,将对每一个子字符串都分别进行图中的处理,最后将切分的分词结果与非汉字部分依次连接起来,作为最终的分词结果。

如果开启了HMM,那么将会连起来不在词典中出现的连续单字进行新词发现。比如例子中的“真好啊”,词典中没有这个词,所以会拿去HMM模型中进行新词发现;但是如果原句是“今天天气真好”,基于词典切分为“今天天”“真”“好”,词典中有“真好”一词,但是因为频率小所以未被选择为最佳路径,所以“真”“好”两个字不会被拿去做新词发现(即便其通过HMM的结果将会是“真好”),最终分词结果将是“今天天气”“真”“好”。

词典的格式应为

word1 freq1 word_type1

word2 freq2 word_type2

其中自定义用户词典中词性word_type可以省略。

词典在其他模块的流程中可能也会用到,为方便叙述,后续的流程图中将会省略词典的初始化部分。

图b演示了搜索引擎模式的工作流程,它会在精确模式分词的基础上,将长词再次进行切分。

HMM与新词发现

在这里我们假定读者已经了解HMM相关知识,如果没有可先行阅读下一章内容中的HMM相关部分或者跳过本节。

在jieba分词中,将字在词中的位置B、M、E、S作为隐藏状态,字是观测状态,使用了词典文件分别存储字之间的表现概率矩阵(finalseg/prob_emit.py)、初始概率向量(finalseg/prob_start.py)和转移概率矩阵(finalseg/prob_trans.py)。这就是一个标准的解码问题,根据概率再利用viterbi算法对最大可能的隐藏状态进行求解。

18a97fb987fc304ed850f1e16cabef5f.png

HMM工作流程

上图简单示范了jieba分词中新词发现模块的工作流程,其具体计算过程可参考附录内容,为求页面整齐,这里不再累述。</

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值