根據文件相關性計算公式
分詞質量對於基於詞頻的相關性計算是無比重要的
英文(西方語言)語言的基本單位就是單詞,所以分詞特別容易做,只需要3步:
根據空格/符號/段落 分隔,得到單詞組
過濾,排除掉stop word
提取詞幹
用正規表示式很容易
pattern =r'''(?x) # set flag to allow verbose regexps
([a-z]\.)+ # abbreviations, e.g. u.s.a.
| \w+(-\w+)* # words with optional internal hyphens
| \$?\d+(\.\d+)?%? # currency and percentages, e.g. $12.40, 82%
| \.\.\. # ellipsis
| [.,;"'?():-_`] # these are separate tokens
'''
re.findall(pattern,待分詞文字)
stopword就是類似a/an/and/are/then
的這類高頻詞,高頻詞會對基於詞頻的算分公式產生極大的干擾,所以需要過濾
stemming有3大主流演算法
lucene 英文分詞自帶了3個stemming演算法,分別是
englishminimalstemmer
著名的 porter stemming
kstemmer
詞幹提取演算法並不複雜,要麼是一堆規則,要麼用對映表,程式設計容易,但是必須是這種語言的專家,了解構詞法才行啊
做計算機語言學研究才會涉及到lemmatization,我個人覺得做搜尋完全可以不考慮,stemming已經可以解決大問題了
參考
英文分詞和中文分詞
由於英語的基本組成單位就是詞,所以相對來說簡單很多。大致分為三步 3s 根據空格拆分單詞 split 排除停止詞 stop word 提取詞幹 stemming 1 根據空格拆分單詞 這一步是是最簡單的一步,英語的句子基本上就是由標點符號 空格和詞構成,那麼只要根據空格和標點符號將詞語分割成陣列即可...
英文分詞演算法 Porter stemmer
porter stemmer 並不是要把單詞變為規範的那種原來的樣子,它只是把很多基於這個單詞的變種變為某一種形式!換句話說,它不能保證還原到單詞的原本,也就是 created 不一定能還原到 create 但卻可以使 create 和 created 都得到 creat 比如我輸入 create ...
英文分詞 英文分詞處理中遇到的問題
之前一直和中文的自然語言處理打交道,最近因為工作關係需要進行英文相關的自然語言處理,本以為相對較難中文的nlp都搞的定,英文的還不是手到擒來 事實證明不同語系的nlp之間存在著較大的差異。中文雖然和拉丁語系的語音相比更為繁瑣,由拼音組成字音,再有字組成詞語,詞語組成句子文章等等等。但英語等拉丁語系語...