之前一直和中文的自然語言處理打交道,最近因為工作關係需要進行英文相關的自然語言處理,本以為相對較難中文的nlp都搞的定,英文的還不是手到擒來:-) 事實證明不同語系的nlp之間存在著較大的差異。
中文雖然和拉丁語系的語音相比更為繁瑣,由拼音組成字音,再有字組成詞語,詞語組成句子文章等等等。但英語等拉丁語系語種以字母組成單詞,而單詞直接組成句子文章。雖然看上去好像省略了中文中字到詞的一部,但並不是簡單的跨越,中間也有很多中文中沒有的問題。
我接到的第乙個英文任務是分詞操作,場景是英文ocr之後的分詞,由於ocr識別結果中的空格識別效果不好,常常出現「areyouok」這種形式,期望能夠將這種文字切分為「are you ok」的形式。
拿到任務的第一感覺是「so easy」,事實也是如此,如果是簡單的正確的英文文字分詞,難度確實不大。這是乙個輕鬆達到90分的任務,但想繼續往上提高則頓時難度飆公升。
前面也提到了,這是ocr的識別結果,所以誤識別是不可避免的,「wnereareyou」。當遇到這種形式時,未登入詞的問題會格外顯著。中文nlp中分詞是非常重要和最基本的技能,但中文常用字數在萬級別一下,詞語數目龐大,但可以通過字來拆解。但英文不一樣,雖然字元數只有26個,算上大小寫也不到100,但長度不定,最長的單詞也可以上百位,未登入詞更是不計其數(地名、人名、機構名、**)。這就是我遇到的第乙個也是最大的麻煩「未登入詞」。
英文分詞和中文分詞
由於英語的基本組成單位就是詞,所以相對來說簡單很多。大致分為三步 3s 根據空格拆分單詞 split 排除停止詞 stop word 提取詞幹 stemming 1 根據空格拆分單詞 這一步是是最簡單的一步,英語的句子基本上就是由標點符號 空格和詞構成,那麼只要根據空格和標點符號將詞語分割成陣列即可...
Python 英文分詞
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...
英文分詞演算法 Porter stemmer
porter stemmer 並不是要把單詞變為規範的那種原來的樣子,它只是把很多基於這個單詞的變種變為某一種形式!換句話說,它不能保證還原到單詞的原本,也就是 created 不一定能還原到 create 但卻可以使 create 和 created 都得到 creat 比如我輸入 create ...