如何解析hanlp源码中文分词算法

70次阅读
没有评论

共计 895 个字符,预计需要花费 3 分钟才能阅读完成。

如何解析 hanlp 源码中文分词算法,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面丸趣 TV 小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。

解析 hanlp 源码中文分词算法。词图指的是句子中所有词可能构成的图。如果一个词 A 的下一个词可能是 B 的话,那么 A 和 B 之间具有一条路径 E(A,B)。一个词可能有多个后续,同时也可能有多个前驱,它们构成的图我称作词图。

需要稀疏
2 维矩阵模型,以一个词的起始位置作为行,终止位置作为列,可以得到一个二维矩阵。例如:“他说的确实在理”这句话

图词的存储方法:
一种是的
DynamicArray 法,一种是快速 offset 法。Hanlp 代码中采用的是第二种方法。

1、DynamicArray(二维数组) 法

在词图中,行和列的关系:
col 为 n 的列中所有词可以与 row 为 n 的所有行中的词进行组合。例如“的确”这个词,它的 col =5,需要和它计算平滑值的有两个,分别是 row = 5 的两个词:“实”和“实在”。但是在遍历和插入的时候,需要一个个比较 col 和 row 的关系,复杂度是 O(N)。

2、快速 offset

一个一维数组,每个元素是一个单链表

“的确”的行号是 4, 长度是 2,4+2=6,于是第六行的两个词“实 / 实在”就是“的确”的后续。

同时这种方法速度非常快,插入和查询的时间都是
O(1)。

Hanlp 核心词典:

最短路径算法
—viterbi(动态规划路径)

Frequency: 核心词典中的词频

nTwoWordsFreq: 共现词频

intMAX_FREQUENCY= 25146057

double dTemp =(double) 1 / MAX_FREQUENCY +0.00001

dSmoothingPara =0.1

Viterbi 最短路径有向图

1、计算过程从上至下,根据计算出的权重值变更前驱结点,保证前驱结点唯一 (动态规划路径)

2、计算结束后,从最后一个结点开始取出 term, 依次取出该结点的前驱结点即可分词结果:理,在,确实,的,说,他

看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注丸趣 TV 行业资讯频道,感谢您对丸趣 TV 的支持。

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-07-18发表,共计895字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)