中文分詞演算法工具hanlp原始碼解析

2021-09-12 12:14:36 字數 1347 閱讀 5869

詞圖

詞圖指的是句子中所有詞可能構成的圖。如果乙個詞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)。

快速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,依次取出該結點的前驅結點即可分詞結果:理,在,確實,的,說,他

原文:

HanLP中文分詞 字典分詞

hanlp是漢語言處理的乙個重要利器。對漢語言進行處理,首先的步驟是將漢語進行分詞。漢語進行分詞的乙個比較 low 但有用的方法是字典拆分。字典拆分使用啟發式演算法 雙向文字匹配演算法,結合字典,對漢語語句和段落進行拆分的方法。from sklearn.externals import joblib...

hanlp原始碼解析之中文分詞演算法

詞圖 詞圖指的是句子中所有詞可能構成的圖。如果乙個詞a的下乙個詞可能是b的話,那麼a和b之間具有一條路徑e a,b 乙個詞可能有多個後續,同時也可能有多個前驅,它們構成的圖我稱作詞圖。需要稀疏2維矩陣模型,以乙個詞的起始位置作為行,終止位置作為列,可以得到乙個二維矩陣。例如 他說的確實在理 這句話 ...

python 中文分詞工具

結巴 中文分詞 演算法 1 基於字首詞典實現高效的詞圖掃瞄,生成句子中漢字所有可能成詞情況所構成的有向無環圖 dag 2 採用了動態規劃查詢最大概率路徑,找出基於詞頻的最大切分組合 3 對於未登入詞,採用了基於漢字成詞能力的 hmm 模型,使用了 viterbi 演算法。1 分詞 支援三種分詞模式 ...