基于SNS文本數(shù)據(jù)挖掘:分析關(guān)鍵詞分詞技巧

2021-08-20    分類: 網(wǎng)站建設(shè)

作為中文系應(yīng)用語言學(xué)專業(yè)的學(xué)生以及一名數(shù)學(xué) Geek ,我非常熱衷于用計算的方法去分析漢語資料。漢語是一種獨特而神奇的語言。對漢語資料進行自然語言處理時,我們會遇到很多其他語言不會有的困難,比如分詞 ——漢語的詞與詞之間沒有空格,那計算機怎么才知道,“已結(jié)婚的和尚未結(jié)婚的青年都要實行計劃生育”究竟說的是“已/結(jié)婚/的/和/尚未/結(jié)婚/的/青年”,還是“已/結(jié)婚/的/和尚/未/結(jié)婚/的/青年”呢這就是所謂的分詞歧義難題。不過,現(xiàn)在很多語言模型已經(jīng)能比較漂亮地解決這一問題了。但在中文分詞領(lǐng)域里,還有一個比分詞歧義更令人頭疼的東西——未登錄詞。中文沒有首字母大寫,專名號也被取消了,這叫計算機如何辨認人名地名之類的東西更慘的則是機構(gòu)名、品牌名、專業(yè)名詞、縮略語、網(wǎng)絡(luò)新詞等等,它們的產(chǎn)生機制似乎完全無規(guī)律可尋。最近十年來,中文分詞領(lǐng)域都在集中攻克這一難關(guān)。自動發(fā)現(xiàn)新詞成為了關(guān)鍵的環(huán)節(jié)。

挖掘新詞的傳統(tǒng)方法是,先對文本進行分詞,然后猜測未能成功匹配的剩余片段就是新詞。這似乎陷入了一個怪圈:分詞的準確性本身就依賴于詞庫的完整性,如果詞庫中根本沒有新詞,我們又怎么能信任分詞結(jié)果呢此時,一種大膽的想法是,首先不依賴于任何已有的詞庫,僅僅根據(jù)詞的共同特征,將一段大規(guī)模語料中可能成詞的文本片段全部提取出來,不管它是新詞還是舊詞。然后,再把所有抽出來的詞和已有詞庫進行比較,不就能找出新詞了嗎有了抽詞算法后,我們還能以詞為單位做更多有趣的數(shù)據(jù)挖掘工作。這里,我所選用的語料是人人網(wǎng) 2011 年 12 月前半個月部分用戶的狀態(tài)。非常感謝人人網(wǎng)提供這份極具價值的網(wǎng)絡(luò)語料。

要想從一段文本中抽出詞來,我們的第一個問題就是,怎樣的文本片段才算一個詞大家想到的第一個標準或許是,看這個文本片段出現(xiàn)的次數(shù)是否足夠多。我們可以把所有出現(xiàn)頻數(shù)超過某個閾值的片段提取出來,作為該語料中的詞匯輸出。不過,光是出現(xiàn)頻數(shù)高還不夠,一個經(jīng)常出現(xiàn)的文本片段有可能不是一個詞,而是多個詞構(gòu)成的詞組。在人人網(wǎng)用戶狀態(tài)中,“的電影”出現(xiàn)了389 次,“電影院”只出現(xiàn)了175 次,然而我們卻更傾向于把“電影院”當(dāng)作一個詞,因為直覺上看,“電影”和“院”凝固得更緊一些。

為了證明“電影院”一詞的內(nèi)部凝固程度確實很高,我們可以計算一下,如果“電影”和“院”真的是各自獨立地在文本中隨機出現(xiàn),它倆正好拼到一起的概率會有多小。在整個 2400 萬字的數(shù)據(jù)中,“電影”一共出現(xiàn)了 2774 次,出現(xiàn)的概率約為 0.000113 。“院”字則出現(xiàn)了 4797 次,出現(xiàn)的概率約為 0.0001969 。如果兩者之間真的毫無關(guān)系,它們恰好拼在了一起的概率就應(yīng)該是 0.000113 × 0.0001969 ,約為 2.223 × 10-8 次方。但事實上,“電影院”在語料中一共出現(xiàn)了 175 次,出現(xiàn)概率約為 7.183 × 10-6 次方,是預(yù)測值的 300 多倍。類似地,統(tǒng)計可得“的”字的出現(xiàn)概率約為 0.0166 ,因而“的”和“電影”隨機組合到了一起的理論概率值為 0.0166 × 0.000113 ,約為 1.875 × 10-6 ,這與“的電影”出現(xiàn)的真實概率很接近——真實概率約為 1.6 × 10-5 次方,是預(yù)測值的 8.5 倍。計算結(jié)果表明,“電影院”更可能是一個有意義的搭配,而“的電影”則更像是“的”和“電影”這兩個成分偶然拼到一起的。

當(dāng)然,作為一個無知識庫的抽詞程序,我們并不知道“電影院”是“電影”加“院”得來的,也并不知道“的電影”是“的”加上“電影”得來的。錯誤的切分方法會過高地估計該片段的凝合程度。如果我們把“電影院”看作是“電”加“影院”所得,由此得到的凝合程度會更高一些。因此,為了算出一個文本片段的凝合程度,我們需要枚舉它的凝合方式——這個文本片段是由哪兩部分組合而來的。令 p(x) 為文本片段 x 在整個語料中出現(xiàn)的概率,那么我們定義“電影院”的凝合程度就是 p(電影院) 與 p(電) · p(影院) 比值和 p(電影院) 與 p(電影) · p(院) 的比值中的較小值,“的電影”的凝合程度則是 p(的電影) 分別除以 p(的) · p(電影) 和 p(的電) · p(影) 所得的商的較小值。

可以想到,凝合程度高的文本片段就是諸如“蝙蝠”、“蜘蛛”、“彷徨”、“忐忑”、“玫瑰”之類的詞了,這些詞里的每一個字幾乎總是會和另一個字同時出現(xiàn),從不在其他場合中使用。

光看文本片段內(nèi)部的凝合程度還不夠,我們還需要從整體來看它在外部的表現(xiàn)??紤]“被子”和“輩子”這兩個片段。我們可以說“買被子”、“蓋被子”、 “進被子”、“好被子”、“這被子”等等,在“被子”前面加各種字;但“輩子”的用法卻非常固定,除了“一輩子”、“這輩子”、“上輩子”、“下輩子”,基本上“輩子”前面不能加別的字了。“輩子”這個文本片段左邊可以出現(xiàn)的字太有限,以至于直覺上我們可能會認為,“輩子”并不單獨成詞,真正成詞的其實是 “一輩子”、“這輩子”之類的整體??梢姡谋酒蔚淖杂蛇\用程度也是判斷它是否成詞的重要標準。如果一個文本片段能夠算作一個詞的話,它應(yīng)該能夠靈活地出現(xiàn)在各種不同的環(huán)境中,具有非常豐富的左鄰字集合和右鄰字集合。

“信息熵”是一個非常神奇的概念,它能夠反映知道一個事件的結(jié)果后平均會給你帶來多大的信息量。如果某個結(jié)果的發(fā)生概率為 p ,當(dāng)你知道它確實發(fā)生了,你得到的信息量就被定義為 - log(p) 。 p 越小,你得到的信息量就越大。如果一顆骰子的六個面分別是 1 、 1 、 1 、 2 、 2 、 3 ,那么你知道了投擲的結(jié)果是 1 時可能并不會那么吃驚,它給你帶來的信息量是 - log(1/2) ,約為 0.693 。知道投擲結(jié)果是 2 ,給你帶來的信息量則是 - log(1/3) ≈ 1.0986 。知道投擲結(jié)果是 3 ,給你帶來的信息量則有 - log(1/6) ≈ 1.79 。但是,你只有 1/2 的機會得到 0.693 的信息量,只有 1/3 的機會得到 1.0986 的信息量,只有 1/6 的機會得到 1.79 的信息量,因而平均情況下你會得到 0.693/2 + 1.0986/3 + 1.79/6 ≈ 1.0114 的信息量。這個 1.0114 就是那顆骰子的信息熵。現(xiàn)在,假如某顆骰子有 100 個面,其中 99 個面都是 1 ,只有一個面上寫的 2 。知道骰子的拋擲結(jié)果是 2 會給你帶來一個巨大無比的信息量,它等于 - log(1/100) ,約為 4.605 ;但你只有百分之一的概率獲取到這么大的信息量,其他情況下你只能得到 - log(99/100) ≈ 0.01005 的信息量。平均情況下,你只能獲得 0.056 的信息量,這就是這顆骰子的信息熵。再考慮一個最極端的情況:如果一顆骰子的六個面都是 1 ,投擲它不會給你帶來任何信息,它的信息熵為 - log(1) = 0 。什么時候信息熵會更大呢換句話說,發(fā)生了怎樣的事件之后,你最想問一下它的結(jié)果如何直覺上看,當(dāng)然就是那些結(jié)果最不確定的事件。沒錯,信息熵直觀地反映了一個事件的結(jié)果有多么的隨機。

我們用信息熵來衡量一個文本片段的左鄰字集合和右鄰字集合有多隨機??紤]這么一句話“吃葡萄不吐葡萄皮不吃葡萄倒吐葡萄皮”,“葡萄”一詞出現(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 ??梢?,在這個句子中,“葡萄”一詞的右鄰字更加豐富一些。

在人人網(wǎng)用戶狀態(tài)中,“被子”一詞一共出現(xiàn)了 956 次,“輩子”一詞一共出現(xiàn)了 2330 次,兩者的右鄰字集合的信息熵分別為 3.87404 和 4.11644 ,數(shù)值上非常接近。但“被子”的左鄰字用例非常豐富:用得最多的是“曬被子”,它一共出現(xiàn)了 162 次;其次是“的被子”,出現(xiàn)了 85 次;接下來分別是“條被子”、“在被子”、“床被子”,分別出現(xiàn)了 69 次、 64 次和 52 次;當(dāng)然,還有“疊被子”、“蓋被子”、“加被子”、“新被子”、“掀被子”、“收被子”、“薄被子”、“踢被子”、“搶被子”等 100 多種不同的用法構(gòu)成的長尾⋯⋯所有左鄰字的信息熵為 3.67453 。但“輩子”的左鄰字就很可憐了, 2330 個“輩子”中有 1276 個是“一輩子”,有 596 個“這輩子”,有 235 個“下輩子”,有 149 個“上輩子”,有 32 個“半輩子”,有 10 個“八輩子”,有 7 個“幾輩子”,有 6 個“哪輩子”,以及“n 輩子”、“兩輩子”等 13 種更罕見的用法。所有左鄰字的信息熵僅為 1.25963 。因而,“輩子”能否成詞,明顯就有爭議了。“下子”則是更典型的例子, 310 個“下子”的用例中有 294 個出自“一下子”,

本文題目:基于SNS文本數(shù)據(jù)挖掘:分析關(guān)鍵詞分詞技巧
網(wǎng)站網(wǎng)址:http://www.bm7419.com/news35/122885.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供做網(wǎng)站、電子商務(wù)、品牌網(wǎng)站設(shè)計、企業(yè)網(wǎng)站制作、手機網(wǎng)站建設(shè)、網(wǎng)站建設(shè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

網(wǎng)站優(yōu)化排名