当前位置:   article > 正文

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

jieba java 词性

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分词中新词发现模块的工作流程,其具体计算过程可参考附录内容,为求页面整齐,这里不再累述。

在最后时刻,即“啊”对应的时刻里,最大概率的为S,而

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/盐析白兔/article/detail/348515?site
推荐阅读
相关标签
  

闽ICP备14008679号