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

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

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

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

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

為了證明“電影院”一詞的內(nèi)部凝固程度確實(shí)很高,我們可以計(jì)算一下,如果“電影”和“院”真的是各自獨(dú)立地在文本中隨機(jī)出現(xiàn),它倆正好拼到一起的概率會(huì)有多小。在整個(gè) 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 次方。但事實(shí)上,“電影院”在語料中一共出現(xiàn)了 175 次,出現(xiàn)概率約為 7.183 × 10-6 次方,是預(yù)測(cè)值的 300 多倍。類似地,統(tǒng)計(jì)可得“的”字的出現(xiàn)概率約為 0.0166 ,因而“的”和“電影”隨機(jī)組合到了一起的理論概率值為 0.0166 × 0.000113 ,約為 1.875 × 10-6 ,這與“的電影”出現(xiàn)的真實(shí)概率很接近——真實(shí)概率約為 1.6 × 10-5 次方,是預(yù)測(cè)值的 8.5 倍。計(jì)算結(jié)果表明,“電影院”更可能是一個(gè)有意義的搭配,而“的電影”則更像是“的”和“電影”這兩個(gè)成分偶然拼到一起的。

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

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

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

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

我們用信息熵來衡量一個(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è)句子中,“葡萄”一詞的右鄰字更加豐富一些。

在人人網(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)成的長(zhǎng)尾⋯⋯所有左鄰字的信息熵為 3.67453 。但“輩子”的左鄰字就很可憐了, 2330 個(gè)“輩子”中有 1276 個(gè)是“一輩子”,有 596 個(gè)“這輩子”,有 235 個(gè)“下輩子”,有 149 個(gè)“上輩子”,有 32 個(gè)“半輩子”,有 10 個(gè)“八輩子”,有 7 個(gè)“幾輩子”,有 6 個(gè)“哪輩子”,以及“n 輩子”、“兩輩子”等 13 種更罕見的用法。所有左鄰字的信息熵僅為 1.25963 。因而,“輩子”能否成詞,明顯就有爭(zhēng)議了。“下子”則是更典型的例子, 310 個(gè)“下子”的用例中有 294 個(gè)出自“一下子”,

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

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

廣告

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

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