逆向匹配法思想與正向一樣,只是從右向左切分,這裡舉乙個例子:
輸入例句:s1=」計算語言學課程有意思」 ;
定義:最大詞長maxlen = 5;s2= 」 「;分隔符 = 「/」;
假設存在詞表:…,計算語言學,課程,意思,…;
最大逆向匹配分詞演算法過程如下:
(1)s2=」」;s1不為空,從s1右邊取出候選子串w=」課程有意思」;
(2)查詞表,w不在詞表中,將w最左邊乙個字去掉,得到w=」程有意思」;
(3)查詞表,w不在詞表中,將w最左邊乙個字去掉,得到w=」有意思」;
(4)查詞表,w不在詞表中,將w最左邊乙個字去掉,得到w=」意思」
(5)查詞表,「意思」在詞表中,將w加入到s2中,s2=」 意思/」,並將w從s1中去掉,此時s1=」計算語言學課程有」;
(6)s1不為空,於是從s1左邊取出候選子串w=」言學課程有」;
(7)查詞表,w不在詞表中,將w最左邊乙個字去掉,得到w=」學課程有」;
(8)查詞表,w不在詞表中,將w最左邊乙個字去掉,得到w=」課程有」;
(9)查詞表,w不在詞表中,將w最左邊乙個字去掉,得到w=」程有」;
(10)查詞表,w不在詞表中,將w最左邊乙個字去掉,得到w=」有」,這w是單字,將w加入到s2中,s2=「 /有 /意思」,並將w從s1中去掉,此時s1=」計算語言學課程」;
(11)s1不為空,於是從s1左邊取出候選子串w=」語言學課程」;
(12)查詞表,w不在詞表中,將w最左邊乙個字去掉,得到w=」言學課程」;
(13)查詞表,w不在詞表中,將w最左邊乙個字去掉,得到w=」學課程」;
(14)查詞表,w不在詞表中,將w最左邊乙個字去掉,得到w=」課程」;
(15)查詞表,「意思」在詞表中,將w加入到s2中,s2=「 課程/ 有/ 意思/」,並將w從s1中去掉,此時s1=」計算語言學」;
(16)s1不為空,於是從s1左邊取出候選子串w=」計算語言學」;
(17)查詞表,「計算語言學」在詞表中,將w加入到s2中,s2=「計算語言學/ 課程/ 有/ 意思/」,並將w從s1中去掉,此時s1=」」;
(18)s1為空,輸出s2作為分詞結果,分詞過程結束。
乙個最大逆向匹配分詞演算法的例子
逆向匹配法思想與正向一樣,只是從右向左切分,這裡舉乙個例子 輸入例句 s1 計算語言學課程有意思 定義 最大詞長maxlen 5 s2 分隔符 假設存在詞表 計算語言學,課程,意思,最大逆向匹配分詞演算法過程如下 1 s2 s1不為空,從s1右邊取出候選子串w 課程有意思 2 查詞表,w不在詞表中,...
逆向最大匹配分詞演算法C
逆向順序 程式設計師 序員 員 名程式 程式 序 一名程 名程 程 是一名 一名 名 我是一 是一 一 x我是 我是 是 xx我 x我 我 叫xx xx x 我叫x 叫x x 好我叫 我叫 叫 家好我 好我 我 大家 家 大class program else if flag else len st...
逆向最大匹配分詞演算法C
逆向順序 程式設計師 序員 員 名程式 程式 序 一名程 名程 程 是一名 一名 名 我是一 是一 一 x我是 我是 是 xx我 x我 我 叫xx xx x 我叫x 叫x x 好我叫 我叫 叫 家好我 好我 我 大家 家 大class program else if flag else len st...