最小分詞(中文分詞)

2021-08-29 13:25:51 字數 1478 閱讀 4199

中文分詞一般有下面幾種方法:

(1、基於字串匹配的分詞方法

1)正向最大匹配法(由左到右的方向);

2)逆向最大匹配法(由右到左的方向);

3)最少切分(使每一句中切出的詞數最小)。

這幾種方法一般都是通過「字典」來實現的,比如:

"中國航天**應邀到美國與太空總署**開會"

其中字典如下:

中國航天

**。。。

這樣子「流掃瞄」中,第乙個找到「中」,不能形成詞,於是再找下乙個字元,湊成「中國」

把中國拿出來,掃瞄從「航」開始,依此類推

我想到乙個問題,就是在字典中存在終結符,比如「的」,這樣顯然「的」就是分割詞了,後面不可能合成有效詞。

如何有效「查詢字典」,和知道掃瞄達到終結符,我使用hashmap來做,如下:

比如hashmap.containskey("中")不為空,說明下面可能存在有效詞,

再次hashmap.containskey("中國")存在結果,提取「中國」,流指標移到「航」,

同樣的步驟。

**:類 chinesesplit 載入中文字典

public chinesesplit(string file) throws ioexception

" "+strs[1]);

integer integer = new integer(strs[1]);

wordhash.put(strs[0], integer);

}} catch (unsupportedencodingexception e) catch (filenotfoundexception e)

}

最小正向分詞:buff是char[20]的陣列

public int mixrightsplit(char buff)

int back = i+1;

string tmp = taken;

while( lenght-- > 0)

if(wordhash.containskey(taken))else

system.out.print(taken+" ");

}else

i++;}}

system.out.print("\n");

return mark;

}

實現分詞:

public void splitword(string str)

int read = strer.read(buff,i,20-i);

if(read<20-i&&read!=-1)

mark = mixrightsplit(buff);

break;

}mark = mixrightsplit(buff);

}} catch (ioexception e)

}

結果附圖:

中文分詞 中文分詞及其應用

一 中文分詞原理 中文分詞是指將乙個漢字序列切分成乙個乙個單獨的詞。分詞就是將連續的字序列按照一定的規範重新組合成詞序列的過程。現有的分詞方法可分為三大類,分別是基於字串匹配的分詞方法 基於理解的分詞方法和基於統計的分詞方法。一 基於字串匹配的分詞方法 基於字串匹配的分詞方法又稱機械分詞方法,它是按...

英文分詞和中文分詞

由於英語的基本組成單位就是詞,所以相對來說簡單很多。大致分為三步 3s 根據空格拆分單詞 split 排除停止詞 stop word 提取詞幹 stemming 1 根據空格拆分單詞 這一步是是最簡單的一步,英語的句子基本上就是由標點符號 空格和詞構成,那麼只要根據空格和標點符號將詞語分割成陣列即可...

python中文分詞 結巴分詞

中文分詞是中文文字處理的乙個基礎性工作,結巴分詞利用進行中文分詞。其基本實現原理有三點 基於trie樹結構實現高效的詞圖掃瞄,生成句子中漢字所有可能成詞情況所構成的有向無環圖 dag 採用了動態規劃查詢最大概率路徑,找出基於詞頻的最大切分組合 對於未登入詞,採用了基於漢字成詞能力的hmm模型,使用了...