前言
大家都知道,英文的分詞由于單詞間是以空格進(jìn)行分隔的,所以分詞要相對(duì)的容易些,而中文就不同了,中文中一個(gè)句子的分隔就是以字為單位的了,而所謂的正向最大匹配和逆向最大匹配便是一種分詞匹配的方法,這里以詞典匹配說明。
最大匹配算法是自然語(yǔ)言處理中的中文匹配算法中最基礎(chǔ)的算法,分為正向和逆向,原理都是一樣的。
正向最大匹配算法,故名思意,從左向右掃描尋找詞的最大匹配。
首先我們可以規(guī)定一個(gè)詞的最大長(zhǎng)度,每次掃描的時(shí)候?qū)ふ耶?dāng)前開始的這個(gè)長(zhǎng)度的詞來和字典中的詞匹配,如果沒有找到,就縮短長(zhǎng)度繼續(xù)尋找,直到找到或者成為單字。
下面話不多說了,來一起看看詳細(xì)的介紹吧。
實(shí)例:
S1="計(jì)算語(yǔ)言學(xué)課程是三個(gè)課時(shí)" ,設(shè)定最大詞長(zhǎng)MaxLen = 5 ,S2= " "
字典中含有三個(gè)詞:[計(jì)算語(yǔ)言學(xué)]、[課程]、[課時(shí)]
(1)S2="";S1不為空,從S1左邊取出候選子串W="計(jì)算語(yǔ)言學(xué)";
(2)查詞表,“計(jì)算語(yǔ)言學(xué)”在詞表中,將W加入到S2中,S2=“計(jì)算語(yǔ)言學(xué)/ ”, 并將W從S1中去掉,此時(shí)S1="課程是三個(gè)課時(shí)";
(3)S1不為空,于是從S1左邊取出候選子串W="課程是三個(gè)";
(4)查詞表,W不在詞表中,將W最右邊一個(gè)字去掉,得到W="課程是三";
(5)查詞表,W不在詞表中,將W最右邊一個(gè)字去掉,得到W="課程是";
(6)查詞表,W不在詞表中,將W最右邊一個(gè)字去掉,得到W="課程"
(7)查詞表,W在詞表中,將W加入到S2中,S2=“計(jì)算語(yǔ)言學(xué)/ 課程/ ”,并 將W從S1中去掉,此時(shí)S1="是三個(gè)課時(shí)";
(8)S1不為空,于是從S1左邊取出候選子串W="是三個(gè)課時(shí)";
(9)查詞表,W不在詞表中,將W最右邊一個(gè)字去掉,得到W="是三個(gè)課";
(10)查詞表,W不在詞表中,將W最右邊一個(gè)字去掉,得到W="是三個(gè)";
(11)查詞表,W不在詞表中,將W最右邊一個(gè)字去掉,得到W="是三"
(12)查詞表,W不在詞表中,將W最右邊一個(gè)字去掉,得到W=“是”,這時(shí) W是單字,將W加入到S2中,S2=“計(jì)算語(yǔ)言學(xué)/ 課程/ 是/ ”,并將 W從S1中去掉,此時(shí)S1="三個(gè)課時(shí)";
(13)S1不為空,從S1左邊取出候選子串W="三個(gè)課時(shí)";
(14)查詞表,W不在詞表中,將W最右邊一個(gè)字去掉,得到W="三個(gè)課";
(15)查詞表,W不在詞表中,將W最右邊一個(gè)字去掉,得到W="三個(gè)";
(16)查詞表,W不在詞表中,將W最右邊一個(gè)字去掉,得到W=“三”,這時(shí) W是單字,將W加入到S2中,S2=“計(jì)算語(yǔ)言學(xué)/ 課程/ 是/ 三/ ”,并 將W從S1中去掉,此時(shí)S1="個(gè)課時(shí)";
新聞熱點(diǎn)
疑難解答
圖片精選