算法:
依據(jù)詞的共有特征
成詞的標(biāo)準(zhǔn)之一:內(nèi)部凝固程度
? ? 什么是凝固程度窄驹?比如說一個(gè)詞“電影院”违柏,如果“電影”和“院”真的是各自獨(dú)立地在文本隨機(jī)出現(xiàn)博烂,那么他兩正好出現(xiàn)在一起的概率會(huì)很小。 我們通過計(jì)算P(電影)×P(院)遠(yuǎn)小于P(電影院)發(fā)現(xiàn)“電影院”很有可能是一個(gè)有意義的詞勇垛。
? ? 因此我們枚舉文本片段的組合方式
? ? 然后取凝聚程度的最小值
成詞的標(biāo)準(zhǔn)之二:自由運(yùn)用程度
? ?什么是自由運(yùn)用程度脖母?比如說一個(gè)詞“輩子”, 用法非常固定闲孤,除了“一輩子”谆级、“這輩子”、“上輩子”讼积、“下輩子”肥照,基 本上“輩子”前面不能加別的字了。以至于直覺上會(huì)覺得“輩子”不能單獨(dú)成詞勤众。因此我們說能夠自由運(yùn)用是一個(gè)詞的關(guān)鍵舆绎。得具有豐富的左鄰詞集合與右鄰詞集合。
????先介紹信息熵的概念们颜,信息熵能夠反映一個(gè)事件的結(jié)果平均會(huì)給你帶來多大的信息量吕朵。如果某個(gè)結(jié)果的發(fā)生概率為p,當(dāng)你知道它確實(shí)發(fā)生了窥突,那么你得到的信息量為-log(p)努溃。 如果一顆骰子的六面是1,1阻问,1梧税,2,2称近,3第队。那么我們投到1時(shí),得到的信息量是-log(1/2)刨秆;投到2時(shí)凳谦,得到的信息量是-log(1/3);投到3時(shí)得到的信息量是-log(1/6)坛善。
事情越不確定晾蜘,信息熵越大邻眷。
? ? 我們使用信息熵來衡量一個(gè)文本片段的左鄰字集合與右鄰字集合有多隨機(jī)眠屎。
凝固程度與自由程度缺一不可剔交,只看凝固程度的話容易找到半個(gè)詞,只看自由度的話容易得到無意義的垃圾詞組改衩。
? ??
流程:
1. 輸入: 按行分割的未切詞文本
2. 文檔清洗岖常, 去除非中文字符
3. 構(gòu)建子串-頻率字典, 計(jì)算長度從1到max_word_length的所有子串的頻率
4. 構(gòu)建新詞候選集葫督, 計(jì)算所有子串-頻率字典中的子串的PMI值竭鞍,PMI大魚min_pmi的所有子串構(gòu)成新詞候選集
5. 生成合法新詞, 計(jì)算新詞候選集中的所有子串左右鄰居信息熵橄镜,信息熵高于min_entropy的所有子串構(gòu)成最終的新詞集
6. 輸出:新詞集