新詞發(fā)現(xiàn)

介紹

網(wǎng)絡(luò)領(lǐng)域的新詞發(fā)現(xiàn)是一個(gè)非常重要的nlp課題俗壹。在處理文本對象時(shí)跨蟹,非常關(guān)鍵的問題在于“切詞”這個(gè)環(huán)節(jié),幾乎所有的后續(xù)結(jié)果都依賴第一步的切詞吧享。因此切詞的準(zhǔn)確性在很大程度上影響著后續(xù)的處理牵咙,切詞結(jié)果的不同,也就影響了特征的提取怖亭,跟數(shù)據(jù)挖掘一樣,特征提取的好壞特別重要,不論用什么算法,特征好數(shù)據(jù)好結(jié)果才會好押逼。

目前很多的切詞模塊可以處理大部分的通用語料步藕,然而有兩類文本集仍然處理的不是很好惦界,就是:

1.網(wǎng)絡(luò)文檔

2.領(lǐng)域文檔

這兩類文本的特點(diǎn)在于包含大量新詞,一般詞典的涵蓋程度比較低咙冗。對于領(lǐng)域文檔沾歪,各領(lǐng)域的專家可以人工構(gòu)建知識本體,拓展已有詞庫的不健全雾消,此處不贅述灾搏。

方法

已有的方法大致有兩個(gè)思路:

1.基于構(gòu)詞法(語言規(guī)則,需要對特定語言語法規(guī)則的理解)

2.基于統(tǒng)計(jì)模型(基于字符排列的統(tǒng)計(jì)分析和基于詞排列的統(tǒng)計(jì)分析)

挖掘新詞的傳統(tǒng)方法是立润,先對文本進(jìn)行分詞狂窑,然后猜測未能成功匹配的剩余片段就是新詞。這似乎陷入了一個(gè)怪圈:分詞的準(zhǔn)確性本身就依賴于詞庫的完整性桑腮,如果詞庫中根本沒有新詞泉哈,我們又怎么能信任分詞結(jié)果呢?此時(shí)破讨,一種大膽的想法是丛晦,首先不依賴于任何已有的詞庫,僅僅根據(jù)詞的共同特征提陶,將一段大規(guī)模語料中可能成詞的文本片段全部提取出來烫沙,不管它是新詞還是舊詞。然后隙笆,再把所有抽出來的詞和已有詞庫進(jìn)行比較锌蓄,不就能找出新詞了嗎?有了抽詞算法后撑柔,我們還能以詞為單位做更多有趣的數(shù)據(jù)挖掘工作瘸爽。

怎樣才算一個(gè)詞

1.term在文章中出現(xiàn)的次數(shù)夠多

可以統(tǒng)計(jì)文章中的素有片段的數(shù)量,給這些片段設(shè)一個(gè)閾值乏冀,超過此閾值才能有資格成為一個(gè)詞蝶糯。但僅僅這樣是不夠的,“的電影”出現(xiàn)了 389 次辆沦,“電影院”只出現(xiàn)了 175 次昼捍,然而我們卻更傾向于把“電影院”當(dāng)作一個(gè)詞识虚,因?yàn)橹庇X上看,“電影”和“院”凝固得更緊一些妒茬。

2.詞的內(nèi)部要足夠穩(wěn)定

凝固度用什么來衡量呢担锤,答案是點(diǎn)間互信息(pointwise mutual information)

PMI =p(x,y)/(p(x)*p(y))

如果x,y獨(dú)立 乍钻,那么pmi等于1肛循。如果不獨(dú)立,則PMI大于1银择,當(dāng)PMI足夠大的時(shí)候就表示凝固度足夠高多糠。拿 “知”、“乎” 這兩個(gè)字來說浩考,假設(shè)在 5000 萬字的樣本中, “知” 出現(xiàn)了 150 萬次夹孔, “乎” 出現(xiàn)了 4 萬次。那 “知” 出現(xiàn)的概率為 0.03, “乎” 出現(xiàn)的概率為 0.0008析孽。如果兩個(gè)字符出現(xiàn)是個(gè)獨(dú)立事件的話搭伤,”知”、“乎” 一起出現(xiàn)的期望概率是 0.03 * 0.0008 = 2.4e-05. 如果實(shí)際上 “知乎” 出現(xiàn)了 3 萬次, 則實(shí)際上”知”袜瞬、“乎” 一起出現(xiàn)的概率是 6e-03, 是期望概率的 250 倍怜俐。也就是說兩個(gè)字越相關(guān),點(diǎn)間互信息越大邓尤。

你以為這樣就行了嘛拍鲤,naive!

光看文本片段內(nèi)部的凝合程度還不夠裁赠,我們還需要從整體來看它在外部的表現(xiàn)殿漠。考慮“被子”和“輩子”這兩個(gè)片段佩捞。我們可以說“買被子”绞幌、“蓋被子”、“進(jìn)被子”一忱、“好被子”莲蜘、“這被子”等等,在“被子”前面加各種字帘营;但“輩子”的用法卻非常固定票渠,除了“一輩子”、“這輩子”芬迄、“上輩子”问顷、“下輩子”,基本上“輩子”前面不能加別的字了《耪“輩子”這個(gè)文本片段左邊可以出現(xiàn)的字太有限肠骆,以至于直覺上我們可能會認(rèn)為,“輩子”并不單獨(dú)成詞塞耕,真正成詞的其實(shí)是“一輩子”蚀腿、“這輩子”之類的整體∩ㄍ猓可見莉钙,文本片段的自由運(yùn)用程度也是判斷它是否成詞的重要標(biāo)準(zhǔn)。如果一個(gè)文本片段能夠算作一個(gè)詞的話筛谚,它應(yīng)該能夠靈活地出現(xiàn)在各種不同的環(huán)境中磁玉,具有非常豐富的左鄰字集合和右鄰字集合。

那我們有沒有辦法衡量這種特性呢刻获?答案是熵蜀涨。

真是神奇啊瞎嬉,如果所有的東西都能用公式來衡量就好了蝎毡。但往往不是,比如一個(gè)人美不美氧枣,就很難用公式來衡量沐兵。一個(gè)人是不是善良也無法用公式來衡量,所以說人是復(fù)雜的動物便监。

3.左鄰字和右鄰字要夠豐富

我們用信息熵來衡量一個(gè)文本片段的左鄰字集合和右鄰字集合有多隨機(jī)扎谎。考慮這么一句話“吃葡萄不吐葡萄皮不吃葡萄倒吐葡萄皮”烧董,“葡萄”一詞出現(xiàn)了四次毁靶,其中左鄰字分別為 {吃, 吐, 吃, 吐} ,右鄰字分別為 {不, 皮, 倒, 皮} 逊移。根據(jù)公式预吆,“葡萄”一詞的左鄰字的信息熵為 – (1/2) · log(1/2) – (1/2) · log(1/2) ≈ 0.693 ,它的右鄰字的信息熵則為 – (1/2) · log(1/2) – (1/4) · log(1/4) – (1/4) · log(1/4) ≈ 1.04 胳泉」詹妫可見,在這個(gè)句子中扇商,“葡萄”一詞的右鄰字更加豐富一些凤瘦。

綜合考慮

在實(shí)際運(yùn)用中你會發(fā)現(xiàn),文本片段的凝固程度和自由程度案铺,兩種判斷標(biāo)準(zhǔn)缺一不可蔬芥。只看凝固程度的話,程序會找出“巧克”、“俄羅”笔诵、“顏六色”涤姊、“柴可夫”等實(shí)際上是“半個(gè)詞”的片段;只看自由程度的話嗤放,程序則會把“吃了一頓”思喊、“看了一遍”、“睡了一晚”次酌、“去了一趟”中的“了一”提取出來恨课,因?yàn)樗淖笥亦徸侄继S富了。

實(shí)現(xiàn)

這次調(diào)研給我最大的收獲是一個(gè)算法工程師的工程能力也很重要岳服,算法大不了我花一周的時(shí)間去搞明白剂公,但是你只是弄懂了卻沒有實(shí)現(xiàn)它的能力,或者效率不高吊宋,那有什么用呢纲辽?比如新詞發(fā)現(xiàn)算法,半個(gè)小時(shí)的時(shí)間大家都明白了璃搜,有的人半個(gè)小時(shí)就把代碼寫出來了拖吼。有的人一天才寫出來,有的人發(fā)現(xiàn)效率不高这吻,又寫了一個(gè)spark版本的吊档。工程能力啊,代碼能力啊一定要強(qiáng)唾糯。還是以碼農(nóng)自居比較好怠硼。

一種做法:

首先需要對輸入文本進(jìn)行清洗和分詞,如果沒有任何分詞詞庫的情況下移怯,直接將文本按照字符分割也是可以的香璃,這個(gè)例子我們演示在無詞庫的情況下,如何挖掘這段本文的新詞舟误。在這一步直接將示例文本分割成一個(gè)單字符集合即可葡秒。

將字符兩兩組合作為候選詞,因?yàn)樾枰熬Y和后綴來計(jì)算信息熵脐帝,因此我們需要存儲長度為 3 的片段同云。由于后續(xù)涉及到前后綴的查找和詞頻的統(tǒng)計(jì),最終我們選定了Trie 樹來存儲數(shù)據(jù)堵腹。用 3-gram 序列構(gòu)建前綴 Trie 樹和后綴 Trie 樹炸站,Trie 樹以單個(gè)字符為節(jié)點(diǎn),每個(gè)節(jié)點(diǎn)記錄從根節(jié)點(diǎn)到當(dāng)前節(jié)點(diǎn)構(gòu)成詞匯出現(xiàn)的頻次疚顷。

查詢 Trie 樹旱易,獲取前綴和后綴的頻次列表禁偎,計(jì)算候選詞的左右信息熵以及候選詞構(gòu)成片段的左右信息熵。因?yàn)樯婕暗降男畔㈧乇容^多阀坏,我們對每個(gè)信息熵作如下區(qū)分標(biāo)記(Candidate 為候選詞如暖,left 為左邊構(gòu)成的片段,right 為右邊構(gòu)成的片段):

查詢 Trie 樹忌堂,獲取候選詞的詞頻以及左右片段的詞頻盒至。有了詞頻之后便可以很方便的得到實(shí)際出現(xiàn)概率 p(x,y) 和期望出現(xiàn)概率 p(x)p(y),從而計(jì)算出凝合度和互信息士修。為了防止冷啟動前出現(xiàn)過高的概率 p枷遂,我們預(yù)先跑了一些基礎(chǔ)詞匯的詞頻,在詞頻庫的基礎(chǔ)上棋嘲,可以保證剛開始的時(shí)候就能拿到比較正確的概率 p酒唉。

為了增加準(zhǔn)確率,可以設(shè)定詞頻和互信息的閾值沸移,排除一些低詞頻和低凝合度的詞匯痪伦。所有滿足條件的詞匯,通過調(diào)用 jieba 的 suggest_freq 函數(shù)來使其能被分出來雹锣。在這個(gè)例子中我們限制了詞頻大于 2, PMI 大于等于 24.

針對新詞成詞的特點(diǎn), 在實(shí)際應(yīng)用中网沾,我們?yōu)槊恳粋€(gè)備選單詞計(jì)算了一個(gè)分?jǐn)?shù),表示在當(dāng)前上下文成為新詞的可能性笆制。分?jǐn)?shù)計(jì)算公式如下: 分?jǐn)?shù)由三個(gè)對應(yīng)部分組成:1)點(diǎn)間互信息:點(diǎn)間互信息越高绅这,內(nèi)部聚合程度越高2)兩個(gè)單詞片段信息熵 h_r_l 和 h_l_r 的最小值:這個(gè)數(shù)值越大,則意味著兩個(gè)單詞一起出現(xiàn)的可能性越小3)單詞左右信息熵的最小值:這個(gè)數(shù)值越大就表示著候選詞出現(xiàn)的語境越多在辆,越有可能成詞 因此,分?jǐn)?shù)越高表示成詞的可能性越大度苔。

對于單詞左右信息熵 ( h_l, h_r ) 為 0 的情況匆篓,迭代一輪,確認(rèn)是否可能與左右的片段組成新詞寇窑。 比如 “淘寶客” 這個(gè)詞鸦概,先被分成了 “淘”、“寶”甩骏、“客”窗市,在檢測 “淘寶” 的時(shí)候,會發(fā)現(xiàn)它的右信息熵為 0饮笛,因此 “淘寶” 在當(dāng)前上下文可能是另一個(gè)詞的片段咨察,所以通過下一輪迭代,檢測 “淘寶” 和 “客” 能否成詞福青。

最后根據(jù)詞頻和score的乘積排序摄狱,篩選出 top 5 的詞匯作為新詞脓诡。淘寶客這個(gè)例子中篩選出來的 top 5 新詞結(jié)果如下。

還有一種更直觀的

開源實(shí)現(xiàn)

https://github.com/sing1ee/dict_build

http://www.hankcs.com/nlp/extraction-and-identification-of-mutual-information-about-the-phrase-based-on-information-entropy.html

【中文分詞系列】 8. 更好的新詞發(fā)現(xiàn)算法

reference

Matrix67: The Aha Moments

反作弊基于左右信息熵和互信息的新詞挖掘

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末媒役,一起剝皮案震驚了整個(gè)濱河市祝谚,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌酣衷,老刑警劉巖交惯,帶你破解...
    沈念sama閱讀 217,509評論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異穿仪,居然都是意外死亡商玫,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,806評論 3 394
  • 文/潘曉璐 我一進(jìn)店門牡借,熙熙樓的掌柜王于貴愁眉苦臉地迎上來拳昌,“玉大人,你說我怎么就攤上這事钠龙【嫣伲” “怎么了?”我有些...
    開封第一講書人閱讀 163,875評論 0 354
  • 文/不壞的土叔 我叫張陵碴里,是天一觀的道長沈矿。 經(jīng)常有香客問我,道長咬腋,這世上最難降的妖魔是什么羹膳? 我笑而不...
    開封第一講書人閱讀 58,441評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮根竿,結(jié)果婚禮上陵像,老公的妹妹穿的比我還像新娘。我一直安慰自己寇壳,他們只是感情好醒颖,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,488評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著壳炎,像睡著了一般泞歉。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上匿辩,一...
    開封第一講書人閱讀 51,365評論 1 302
  • 那天腰耙,我揣著相機(jī)與錄音,去河邊找鬼铲球。 笑死挺庞,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的睬辐。 我是一名探鬼主播挠阁,決...
    沈念sama閱讀 40,190評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼宾肺,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了侵俗?” 一聲冷哼從身側(cè)響起锨用,我...
    開封第一講書人閱讀 39,062評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎隘谣,沒想到半個(gè)月后增拥,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,500評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡寻歧,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,706評論 3 335
  • 正文 我和宋清朗相戀三年掌栅,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片码泛。...
    茶點(diǎn)故事閱讀 39,834評論 1 347
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡猾封,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出噪珊,到底是詐尸還是另有隱情晌缘,我是刑警寧澤,帶...
    沈念sama閱讀 35,559評論 5 345
  • 正文 年R本政府宣布痢站,位于F島的核電站磷箕,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏阵难。R本人自食惡果不足惜岳枷,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,167評論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望呜叫。 院中可真熱鬧空繁,春花似錦、人聲如沸怀偷。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,779評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽椎工。三九已至,卻和暖如春蜀踏,著一層夾襖步出監(jiān)牢的瞬間维蒙,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,912評論 1 269
  • 我被黑心中介騙來泰國打工果覆, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留颅痊,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,958評論 2 370
  • 正文 我出身青樓局待,卻偏偏與公主長得像斑响,于是被迫代替她去往敵國和親菱属。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,779評論 2 354

推薦閱讀更多精彩內(nèi)容

  • 本文主要參考文獻(xiàn)1舰罚, 主要目的是記錄和簡化核心規(guī)則纽门,并根據(jù)實(shí)踐提出了一些實(shí)踐中的方案。 新詞發(fā)現(xiàn)規(guī)則 新詞發(fā)現(xiàn)主要...
    galois_xiong閱讀 1,155評論 0 0
  • 新詞自動發(fā)現(xiàn)已經(jīng)成為文本挖掘方面非秤眨基本常用的技術(shù)了赏陵。比如,我為了實(shí)現(xiàn)某個(gè)idea饲漾,需要對NBA新聞評論語料進(jìn)行分...
    紫松閱讀 1,106評論 6 12
  • 1.基于互信息和左右信息熵的短語提取識別 2.反作弊基于左右信息熵和互信息的新詞挖掘 3.基于spark的新詞發(fā)現(xiàn)...
    御風(fēng)之星閱讀 1,325評論 0 1
  • 新詞發(fā)現(xiàn)的信息熵方法與實(shí)現(xiàn):http://kexue.fm/archives/3491/ 基于切分的新詞發(fā)現(xiàn):ht...
    Babyzpj閱讀 1,438評論 0 0
  • 我的男朋友蝙搔,之前寫過關(guān)于他比較混蛋的事兒,一般好事都不記錄考传,壞事記得清清楚楚的…… 是吃型,他的確有比較坑的地方,讓人...
    徐一朵兒閱讀 198評論 1 0