英文分詞和中文分詞


英文分詞

由於英語的基本組成單位就是詞,所以相對來說簡單很多。

大致分為三步(3S):

根據空格拆分單詞(Split) 排除停止詞(Stop Word 提取詞干(Stemming

1、根據空格拆分單詞

這一步是是最簡單的一步,英語的句子基本上就是由標點符號、空格和詞構成,那么只要根據空格和標點符號將詞語分割成數組即可。

如“Nobody knows how ancient people started using fire”分割成{"Nobody","knows","how","ancient","people","started","using","fire"}。

2、排除停止詞

停止詞,是由英文單詞:stopword翻譯過來的,原來在英語里面會遇到很多a,the,or等使用頻率很多的字或詞,常為冠詞、介詞、副詞或連詞等。如果搜索引擎要將這些詞都索引的話,那么幾乎每個網站都會被索引,也就是說工作量巨大。可以毫不誇張的說句,只要是個英文網站都會用到a或者是the。那么這些英文的詞跟我們中文有什么關系呢? 在中文網站里面其實也存在大量的stopword,我們稱它為停止詞。比如,我們前面這句話,“在”、“里面”、“也”、“的”、“它”、“為”這些詞都是停止詞。這些詞因為使用頻率過高,幾乎每個網頁上都存在,所以搜索引擎開發人員都將這一類詞語全部忽略掉。如果我們的網站上存在大量這樣的詞語,那么相當於浪費了很多資源。

常見停止詞請看附錄:http://www.cybermkd.com/stop-word-list/

如{"Nobody","knows","how","ancient","people","started","using","fire"}去掉停止詞后得到 {"Nobody","ancient","people","started","fire"}

3、提取詞干

提取詞干是西方語言特有的處理,比如說英文單詞有 單數復數的變形,-ing和-ed的變形,但是在計算相關性的時候,應該當做同一個單詞。比如 apple和apples,doing和done是同一個詞,提取詞干的目的就是還原成最基本的詞。

同時我們可以將所有的大小寫統一。

{"Nobody","ancient","people","started","fire"}處理成{"nobody","ancient","people","start","fire"}

經過上面三個步驟基本上一個英文句子就處理完了。

 

 

中文分詞

對於中文而言,詞是承載語義的最小單元,由詞構成語句,又由語句構成篇章。但是,中文文本是由連續的字序列構成,詞與詞之間是沒有天然的分隔符 ,所以中文分詞相對來說困難很多。中文分詞目前來說基本上都還是基於分詞用的詞典來進行分詞的,將字和字組成不同的詞然后放入詞典中查找。

中文分詞面臨着相當多的挑戰,首當其沖的就是歧義問題,不同的分割方式會導致不同的意思。

如:結婚/的/和尚/未/結婚/的 和 結婚/的/和/尚未/結婚/的

還有個重要的挑戰就是未登錄詞,用人話就是沒有收錄進詞典的詞,人名就是最簡單的例子,還有就是網友發明的詞,諸如:“草泥馬”、“不明覺厲”之類雲雲。

所以一個好的分詞詞典是決定中文分詞質量的關鍵,還有就是做中文分詞的話必須經常更新、與時俱進。

大致可以將中文分詞算法分為兩種:

1、詞典分詞

詞典分詞簡單來說就是直接將句子拆成字,然后字和字組合進入詞典中匹配,這種方式雖然簡單直接但是容易引起歧義問題。比如jieba分詞。

2、基於統計的分詞

通過人工標注,對中文建模然后將准備好的語料進行訓練,通過計算不同階段下出現的概率並選出概率最大的情況作為結果來進行分詞。

這種分詞方法雖然能盡量避免分詞導致的歧義,但卻需要耗費相當大的性能。

還有一種是基於語義,但是目前還沒有很好的方案所以姑且不議。

在常見的分詞中建議是使用第一種,並且將常見的、唯一的詞如地名、人名等等先單獨建個詞庫,分詞前先將這些詞提取出來然后再進行分詞。然后可以針對自身的情況的建一個歧義糾正詞庫,將一些分詞結果進行糾正。

如分詞結果為“王/小明”(這個名字在未登錄的情況下),但是在糾正詞庫中已經記錄了“王小明”,所以最終結果為“王小明”。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM