參考資料
主要參考了以下兩篇文章:
互聯(lián)網(wǎng)時(shí)代的社會(huì)語言學(xué):基于SNS的文本數(shù)據(jù)挖掘
基于信息熵和互信息的新詞識(shí)別
分詞依據(jù)
對(duì)于一個(gè)給定的文本张惹,從中抽取一個(gè)片段叹俏,如果這個(gè)片段的內(nèi)部成分搭配穩(wěn)定,并且左右搭配很豐富,則認(rèn)為是一個(gè)詞。將這樣的片段抽取出來顾翼,按照出現(xiàn)的頻率排序,選擇排在前面的那些作為我們發(fā)現(xiàn)的詞語蒜撮。再進(jìn)一步通過固有詞典過濾掉已經(jīng)存在的“舊詞”,剩下的就是“新詞”了。
如何理解“內(nèi)部成分搭配穩(wěn)定”和“左右搭配豐富”呢段磨?
假設(shè)有2個(gè)字符組成的片段“AB”出現(xiàn)在文本中若干次取逾,如果A出現(xiàn)了,B總會(huì)緊接著出現(xiàn)苹支,B出現(xiàn)了砾隅,A也出現(xiàn),即A债蜜、B總是成對(duì)出現(xiàn)晴埂,而不會(huì)出現(xiàn)AC、AD或者EB寻定、BF這種儒洛,我們就認(rèn)為“AB”這個(gè)片段的內(nèi)部成分搭配是最穩(wěn)定的,A或B單獨(dú)出現(xiàn)的次數(shù)越多狼速,則“AB”的穩(wěn)定性越低琅锻。
即使A、B總是一起出現(xiàn)向胡,但是假設(shè)“AB”后面跟的字符總是C恼蓬,即“AB”的右搭配只有一個(gè),我們也認(rèn)為“AB”不能成詞(可能“ABC”是一個(gè)詞也說不定)僵芹,如果“AB”后面可以接CDEFG……各種字处硬,我們就說“AB”的右搭配很豐富,左搭配同理拇派。
內(nèi)部搭配的穩(wěn)定性和左右搭配的豐富程度涉及到兩個(gè)概念荷辕,“互信息”和“信息熵”
互信息的概念
以下摘自維基百科
在概率論和信息論中,兩個(gè)隨機(jī)變量的互信息(Mutual Information攀痊,簡稱MI)或轉(zhuǎn)移信息(transinformation)是變量間相互依賴性的量度桐腌。
一般地,兩個(gè)離散隨機(jī)變量 X 和 Y 的互信息可以定義為:
由于我們?cè)诜衷~的時(shí)候是不考慮同義詞的情況的苟径,即不同的字符串代表不同的詞案站。對(duì)于一個(gè)已知的文本片段和它的分割點(diǎn),這兩個(gè)“隨機(jī)變量”只有一個(gè)值棘街,上面的公式可以簡化為:
對(duì)于一個(gè)長度大于2的文本片段蟆盐,它的分割點(diǎn)不止一個(gè),例如“ABC”可以分為“AB”和“C”或者“A”和“BC”,這時(shí)候一個(gè)文本片段就會(huì)有多個(gè)互信息值遭殉,我們?nèi)∽钚〉囊粋€(gè)作為詞的聚合度石挂。
為什么要取最小的呢?考慮這樣一種實(shí)際情況险污,“的蝙蝠”這個(gè)文本片段痹愚, 如果把它分割成“的蝙”和“蝠”這兩個(gè)子片段富岳,它的聚合度是很高的,“的蝙”幾乎不會(huì)單獨(dú)出現(xiàn)拯腮,“蝠”也很少和其他字搭配,但是"的蝙蝠"卻不是一個(gè)詞窖式。因?yàn)榘阉鸪伞暗摹焙汀膀稹焙螅酆隙仁呛艿偷亩溃驗(yàn)椤暗摹庇袩o數(shù)種搭配萝喘,“蝙蝠”也可以組合成“只蝙蝠”、“蝙蝠俠”等琼懊。
實(shí)際上阁簸,通過這種方法發(fā)現(xiàn)的新詞以兩字詞居多,三字詞較少哼丈,而且多是由兩字詞再加一個(gè)字組成的启妹。這可能和中國人的用詞習(xí)慣有關(guān)。聚合度很高的三字詞(“加拿大”削祈、“紅領(lǐng)巾”)不多見翅溺,但是,四字詞反而多了一些(成語)髓抑。
而且咙崎,由兩字詞加一個(gè)字組成的詞可能和那個(gè)兩字詞都作為新詞被抽出來。例如前面提到的“蝙蝠俠”這個(gè)詞吨拍,如果訓(xùn)練文本是關(guān)于影視的褪猛,“蝙蝠俠”很可能作為新詞出現(xiàn),而“蝙蝠”可能因?yàn)閱为?dú)出現(xiàn)次數(shù)過少羹饰,就沒有被篩選出來伊滋。這個(gè)時(shí)候如果再給訓(xùn)練集加入等量的關(guān)于動(dòng)物的文本,“蝙蝠”就很有可能作為新詞出現(xiàn)了队秩,這個(gè)時(shí)候“蝙蝠俠”的詞頻和聚合度會(huì)降低笑旺,但是依然超過其他的詞,所以它也是一個(gè)新詞馍资。
信息熵的概念
以下摘自維基百科:
在信息論中筒主,熵(英語:entropy)是接收的每條消息中包含的信息的平均量,又被稱為信息熵鸟蟹、信源熵乌妙、平均自信息量。
matrix67的文章對(duì)這個(gè)概念有一個(gè)直觀的解釋建钥,這里直接抄過來:
依據(jù)Boltzmann's H-theorem藤韵,香農(nóng)把隨機(jī)變量X的熵值 Η(希臘字母Eta)定義如下,其值域?yàn)閧x1, ..., xn}:
其中熊经,P為X的概率質(zhì)量函數(shù)(probability mass function)泽艘,E為期望函數(shù)欲险,而I(X)是X的資訊量(又稱為資訊本體)。I(X)本身是個(gè)隨機(jī)變數(shù)匹涮。
當(dāng)取自有限的樣本時(shí)盯荤,熵的公式可以表示為:
對(duì)于一個(gè)詞,我們統(tǒng)計(jì)出它所有的左鄰字集合
焕盟,每個(gè)字在文本中出現(xiàn)的概率為
,可以計(jì)算出
的左信息熵
,同理可求出右信息熵
宏粤,取
和
的較小值作為最終信息熵脚翘。
測試效果
準(zhǔn)備數(shù)據(jù)
測試數(shù)據(jù)用的是快看漫畫APP社區(qū)的動(dòng)態(tài),因?yàn)閿?shù)據(jù)量太大绍哎,第一次只取了前100w行来农。隨便找了一段截圖在下面??,可以看到有很多的表情符號(hào)(這個(gè)后面會(huì)過濾掉)崇堰,而且有很多空行沃于,從右邊??的縮略圖可以看出來。
第一次測試
第一次測試的時(shí)候海诲,按照逐行導(dǎo)入數(shù)據(jù)的方式繁莹,可以看到每次導(dǎo)入1000行的時(shí)間越來越長。因?yàn)殡S著導(dǎo)入的數(shù)據(jù)越來越多特幔,整個(gè)詞典在變大咨演,計(jì)算信息熵的時(shí)間變長。
并且蚯斯,從下圖可以發(fā)現(xiàn)薄风,排在前面的詞居然是一些表情。z這是因?yàn)槲乙婚_始只考慮了過濾一些符號(hào):
[\s\d,.<>/?:;'"\[\]{}()\|~!@#$%^&*\-_=+a-zA-Z拍嵌,遭赂。《》横辆、撇他?:;“”‘’{}【】()…¥龄糊!—┄-]
雖然知道會(huì)有,但是沒想到出現(xiàn)的頻率這么高??(嗯逆粹,我忽略了這是一個(gè)二次元社區(qū),而且活躍用戶多是一些95后的青少年)炫惩。
第二次測試
然后我就加了一些過濾:
[\ud83c\udc00-\ud83c\udfff]|[\ud83d\udc00-\ud83d\udfff]|[\u2600-\u27ff]|[\s\d,.<>/?:;'"\[\]{}()\|~!@#$%^&*\-_=+a-zA-Z\uFF0C\u3002\u300A\u300B\u3001\uFF1F\uFF1A\uFF1B\u201C\u201D\u2018\u2019\uFF5B\uFF5D\u3010\u3011\uFF08\uFF09\u2026\uFFE5\uFF01\u2014\u2504\uFF0D\u2022\u03C9\u0334\u0300\uD83E\uDD14\u203C\u0300\u03C9\u1D52\uFF5E\u200B\u3000\uD83E\uDD23\u0325\u2501\u2299\u25BD]
并且每次處理100萬行數(shù)據(jù)(大概30M)僻弹,第二次的測試結(jié)果如下
并且處理的時(shí)間也縮短了(100萬行不到2分鐘,第一個(gè)數(shù)字是數(shù)據(jù)的總長度他嚷,第二個(gè)是處理完成后詞典中詞的數(shù)量)
統(tǒng)計(jì)結(jié)果
統(tǒng)計(jì)了出現(xiàn)頻率最高的前100個(gè)新詞如下:
["朝花","作者大大","咬痕","銳思","啦啦","伊凱","馬蓉","要要要","林早上","呵呵呵","啦啦啦","嗯嗯","點(diǎn)贊","污污","千璽","芙蕾","呵呵呵呵","蛤蛤","狗糧","夏天島","嗚嗚嗚","考神","搞事","粗長","蛤蛤蛤","污污污","什么鬼","小莘","爆照","福利圖","啪啪啪","羅真","女主","斯里","蓮蓮","傲嬌","林路","耽美","藍(lán)斯","啦啦啦啦","蛤蛤蛤蛤","男主","宋喆","謹(jǐn)斯里","水默","微博","寫作業(yè)","寶強(qiáng)","南煙","嗚嗚嗚嗚","壁咚","懵逼","易烊千璽","搞事情","萌萌","應(yīng)憐","考神保佑","單身狗","朝花惜時(shí)","簽售","高冉","洛逸","老司機(jī)","微信","炫童","高仿","加油加油","鏡玄","小黃文","咳咳","江哥","學(xué)生黨","同款","嗷嗷嗷","晴藍(lán)","暖男","哇哇哇","腐女","龍之谷","開車開車","閨蜜","瑪麗蘇","南煙齋","清英","老宮","番外","保佑保佑","狂魔","沒毛病","嘿嘿嘿嘿","小仙女","鹿晗","停更","必過","秀恩愛","注意身體","部漫畫","威風(fēng)堂堂","小貝","柯小"]
可以看到排名靠前的是一些快看漫畫特有的詞匯:朝花蹋绽、咬痕芭毙、銳思等;還有一些關(guān)于學(xué)生的:寫作業(yè)卸耘、考神退敦、學(xué)生黨等;關(guān)于戀愛的:壁咚蚣抗、單身狗侈百、啪啪啪等;另外翰铡,這份數(shù)據(jù)是按照時(shí)間排序的钝域,所以這前100萬行數(shù)據(jù)應(yīng)該是快看剛開發(fā)出社區(qū)功能時(shí)候的,所以也體現(xiàn)了當(dāng)時(shí)的熱點(diǎn)锭魔,例如寶強(qiáng)例证、馬蓉、宋喆都出現(xiàn)在了詞表里面迷捧。