分詞是搜尋中最基本也是非常重要的乙個功能,正確的分詞是好的搜尋效果的必要條件。
1. 分詞粒度
分詞中,最主要的問題是分詞粒度問題。例如「射鵰英雄傳」,下面的幾種分詞方式,哪一種最正確?
最細粒度分詞:【射鵰,英雄,傳】
正常粒度分詞:【射鵰,英雄傳】
最粗粒度分詞:【射鵰英雄傳】
混合粒度分詞:【射鵰,射鵰英雄傳,英雄,英雄傳,傳】
上述4種都沒有錯,要根據具體的應用場景,來決定使用哪種分詞方式。
在構建索引時,為了擴大召回,一般要求粗細粒度都要有,第4種是最好的。表示索引中,【射鵰,射鵰英雄傳,英雄,英雄傳,傳】這5個詞都有,使用者輸入不全時,例如輸入「射鵰」,也可以把它搜出來。
如果索引中只用粗粒度分詞,例如第3種【射鵰英雄傳】,索引中只有乙個詞【射鵰英雄傳】,使用者搜尋「射鵰英雄」,就會與之匹配不上,搜尋不到這個結果。
細粒度分詞:(與粗粒度分詞的優劣正好相反)
如果是約定俗成的內容,例如成語、人名、地名等,不建議再做進一步細分詞。否則,搜尋出的結果會有明顯偏差。
如果是可粗可細的,可以考慮乙個折中辦法:先用粗粒度分詞去做搜尋,如果搜尋結果夠多、質量夠好,就不再用細粒度分詞去做檢索。否則,如果搜尋結果數量偏少,或質量不佳,則再細分詞,去做進一步的查詢。
舉個例子:人名「周杰倫」,建索引時,盡可能的各種粒度都有,例如分成【周,周杰,周杰倫,杰倫】。
2 詞形還原&詞幹提取
在涉及英語等語言時,會涉及時態、單複數等變化問題,中文裡沒有這個問題。分詞時如果不考慮詞形還原&幹提取問題中,會導致漏召回。
詞形還原,是將詞還原成最原始的狀態。例如過去式、過去分詞,變成原樣(running -> run)。複數變成單數等(dogs -> dog)。
也就是使用者在搜尋dog時,也要能搜尋出dogs的內容。同樣,搜尋dogs,也要能搜尋出dog的內容。所以分詞時,需要將dogs識別出原形是dog。
詞形還原一般是通過詞典實現,準確率高。也可以基於規則做,但是我們知道英語裡不規則的單複數、時態例子太多了,用規則解決不了。
詞幹提取是去除詞的字尾,得到詞根。與詞形還原乙個很明顯的區別是,詞形還原後的仍然是乙個有意義的詞,但是詞幹提取出來的詞根,可能不是乙個單詞,只是單詞的一部分。例如electricity的詞根是electr。
相比詞形還原,用了詞幹提取後,召回更多,準確率同時也會下降。
在搜尋中,如果要使用詞形還原與詞幹提取,使用者輸入的原詞,與還原後的詞或詞根,這2者之間的權重可能要做些區分。否則,會搜尋出一些有偏差的結果。
中文分詞和搜尋引擎
搜尋引擎,上網的人基本上都不陌生了,cnnic的第17次 網際網路調查報告 顯示,使用搜尋引擎服務的網民,僅次於電子郵件。中文分詞,估計了解的人並不多,畢竟太技術,太底層。但中文分詞是中文搜尋引擎系統中非常重要的模組,這裡之所以強調是中文搜尋引擎,是針對英文搜尋引擎來講,因為對於英文來說,空格代表詞...
中文分詞和搜尋引擎
winter 搜尋引擎,上網的人基本上都不陌生了,cnnic的第17次 網際網路調查報告 顯示,使用搜尋引擎服務的網民,僅次於電子郵件。中文分詞,估計了解的人並不多,畢竟太技術,太底層。但中文分詞是中文搜尋引擎系統中的非常重要的模組,這裡之所以強調是中文搜尋引擎,是針對英文搜尋引擎來講,因為對於英文...
中文分詞和搜尋引擎
winter 搜尋引擎,上網的人基本上都不陌生了,cnnic的第17次 網際網路調查報告 顯示,使用搜尋引擎服務的網民,僅次於電子郵件。中文分詞,估計了解的人並不多,畢竟太技術,太底層。但中文分詞是中文搜尋引擎系統中的非常重要的模組,這裡之所以強調是中文搜尋引擎,是針對英文搜尋引擎來講,因為對於英文...