本文主要參考文獻(xiàn)1, 主要目的是記錄和簡化核心規(guī)則,并根據(jù)實踐提出了一些實踐中的方案。
新詞發(fā)現(xiàn)規(guī)則
新詞發(fā)現(xiàn)主要依賴3個重要的度量,分別稱之為: 頻數(shù), 凝聚度, 自由度。
下面分別來定義這些概念:
頻數(shù)
一個詞在不同文檔中出現(xiàn)的次數(shù)。 一般說來一個詞要成詞必須得有人用,基本沒人用的詞不是不能成詞,就是過于生僻。所以可以取一個閾值,直接過濾掉哪些很少出現(xiàn)的詞。
凝聚度
主要是考察待考察的詞組成的非偶然性。
具體度量以如下例子來看:
假如在語料庫中,“電影” 在語料庫中出現(xiàn)的概率是 0.000113 , “院”出現(xiàn)的概率約為 0.0001969。假設(shè)“電影院”出現(xiàn),那么理論上概率應(yīng)該是 0.000113 * 0.0001969,約為2.223e-8?!半娪霸骸痹谡Z料中一共出現(xiàn)了 175 次,出現(xiàn)概率約為 7.183e-6 , 7.183e-6 / 2.223e-8 約為 300, 這里的300就是這樣的分割凝聚度。
這個值越大,就表明了成詞的非偶然性越大,成詞的可能性越大。
需要注意的是由于每個詞的分割方式不同,那么每次分割凝聚度不同,最終的凝聚度取最小的分割凝聚度。
自由度
光看文本片段內(nèi)部的凝合程度還不夠,我們還需要從整體來看它在外部的表現(xiàn)。
例如:考慮“被子”和“輩子”這兩個片段。我們可以說“買被子”、“蓋被子”、“進(jìn)被子”、“好被子”、“這被子”等等,在“被子”前面加各種字;但“輩子”的用法卻非常固定,除了“一輩子”、“這輩子”、“上輩子”、“下輩子”,基本上“輩子”前面不能加別的字了?!拜呑印边@個文本片段左邊可以出現(xiàn)的字太有限,以至于直覺上我們可能會認(rèn)為,“輩子”并不單獨(dú)成詞,真正成詞的其實是“一輩子”、“這輩子”之類的整體。
可見,文本片段的自由運(yùn)用程度也是判斷它是否成詞的重要標(biāo)準(zhǔn)。如果一個文本片段能夠算作一個詞的話,它應(yīng)該能夠靈活地出現(xiàn)在各種不同的環(huán)境中,具有非常豐富的左鄰字集合和右鄰字集合。
衡量這種豐富度的做法就是這里的自由度,主要是計算其左右領(lǐng)字集合的信息熵。并去最小的值作為最終的自由度。
總的做法:
我們把文本中出現(xiàn)過的所有長度不超過 d 的子串都當(dāng)作潛在的詞(即候選詞,其中 d 為自己設(shè)定的候選詞長度上限,我設(shè)定的值為 5 ),再為出現(xiàn)頻數(shù)、凝固程度和自由程度各設(shè)定一個閾值,然后只需要提取出所有滿足閾值要求的候選詞即可。
Tricks
- 首先要過濾掉頻率特別高的字。
- 不同長度的詞取有不同的閾值。
- 需要根據(jù)特定的語料過濾掉包含某些特定的詞或者字(例如地)。
- 需要處理疊詞(例如哈哈哈哈)。
- 需要按照特定的規(guī)則對長的詞進(jìn)行拆分(例如 xx的xx)。