英文文本预处理流程总结
1、英文文本預處理的特點以及與中文文本與處理的區別
1.1與中文文本預處理的區別
首先中文文本預處理一般不需要做分詞處理(特殊需求除外,例如推特上文本數據,部分用戶編寫的內容存在連詞的情況,如onlinecommunities可以分為 online communities,LakeCounty分為Lake Country效果會更好)而中文預處理分詞是必不可少的一環。
第二點是,大部分英文文本都是utf-8的編碼,這樣在大多數處理的時候不用考慮編碼轉換的問題,而中文文本處理必須要處理unicode編碼問題。
1.2 英文文本處理的特點
除了上面兩個特點之外,英文文本的預處理還有自己特殊的地方,第三點是拼寫檢查,比如說“helo world”這樣的拼寫錯誤需要在預處理階段加以糾正。第四點是詞干提取(stemming)和詞形還原(lemmatization),這是由于英文存在單復數和各種時態,導致一個詞有多種不同的形式。
2. 英文文本挖掘預處理一:數據收集
獲取方法一般有兩種:使用比人做好的語料庫、自己用爬蟲去網上自己爬自己的預料數據
對于第一種方法,常用的文本語料庫在網上有很多,如果大家只是學習,則可以直接下載下來使用,但如果是某些特殊主題的語料庫,比如“deep learning”相關的語料庫,則這種方法行不通,需要我們自己用第二種方法去獲取。
對于第二種使用爬蟲的方法,開源工具有很多,通用的爬蟲我一般使用beautifulsoup。但是我們我們需要某些特殊的語料數據,比如上面提到的“deep learning”相關的語料庫,則需要用主題爬蟲(也叫聚焦爬蟲)來完成。這個我一般使用ache。 ache允許我們用關鍵字或者一個分類算法模型來過濾出我們需要的主題語料,比較強大。
3. 英文文本挖掘預處理二:除去數據中非文本部分
這一部分主要針對我們用爬蟲收集的語料數據,內容中含有很多html的一些標簽,有的比賽提供的語料數據也存在這些問題,可以通過數據探索性分析觀察數據是否需要進行這步操作。通常利用python正則表達式re刪除即可。
4. 英文文本挖掘預處理三:拼寫檢查糾正
由于英文文本中可能有拼寫錯誤,因此一般需要進行拼寫檢查。如果確信我們分析的文本沒有拼寫問題,可以略去此步。
拼寫檢查,我們一般用pyenchant類庫完成。pyenchant的安裝很簡單:"pip install pyenchant"即可。
對于一段文本,我們可以用下面的方式去找出拼寫錯誤:
from enchant.checker import SpellChecker chkr = SpellChecker("en_US") chkr.set_text("Many peope likee to watch In the Name of People.") for err in chkr:print "ERROR:", err.word找出錯誤后,我們可以自己來決定是否要改正。當然,我們也可以用pyenchant中的wxSpellCheckerDialog類來用對話框的形式來交互決定是忽略,改正還是全部改正文本中的錯誤拼寫。大家感興趣的話可以去研究pyenchant的官方文檔。
5. 英文文本挖掘預處理四:詞干提取和詞形還原
詞干提取(stemming)和詞型還原(lemmatization)是英文文本預處理的特色。兩者其實有共同點,即都是要找到詞的原始形式。只不過詞干提取(stemming)會更加激進一點,它在尋找詞干的時候可以會得到不是詞的詞干。比如"imaging"的詞干可能得到的是"imag", 并不是一個詞。而詞形還原則保守一些,它一般只對能夠還原成一個正確的詞的詞進行處理。個人比較喜歡使用詞型還原而不是詞干提取。
在實際應用中,一般使用nltk來進行詞干提取和詞型還原。安裝nltk也很簡單,"pip install nltk"即可。只不過我們一般需要下載nltk的語料庫,可以用下面的代碼完成,nltk會彈出對話框選擇要下載的內容。選擇下載語料庫就可以了。
import nltk nltk.download()在nltk中,做詞干提取的方法有PorterStemmer,LancasterStemmer和SnowballStemmer。個人推薦使用SnowballStemmer。這個類可以處理很多種語言,當然,除了中文。
from nltk.stem import SnowballStemmer stemmer = SnowballStemmer("english") # Choose a language stemmer.stem("countries") # Stem a word輸出是"countri",這個詞干并不是一個詞。
而如果是做詞型還原,則一般可以使用WordNetLemmatizer類,即wordnet詞形還原方法。
from nltk.stem import WordNetLemmatizer wnl = WordNetLemmatizer() print(wnl.lemmatize('countries'))輸出是"country",比較符合需求。
在實際的英文文本挖掘預處理的時候,建議使用基于wordnet的詞形還原就可以了。
6. 英文文本挖掘預處理五:轉化為小寫
由于英文單詞有大小寫之分,我們期望統計時像“Home”和“home”是一個詞。因此一般需要將所有的詞都轉化為小寫。這個直接用python的lower(_)就可以搞定。命題實體識別項目一般需要保留大寫。
7. 英文文本挖掘預處理六:引入停用詞
在英文文本中有很多無效的詞,比如“a”,“to”,一些短詞,還有一些標點符號,這些我們不想在文本分析的時候引入,因此需要去掉,這些詞就是停用詞。個人常用的英文停用詞表下載地址在這。當然也有其他版本的停用詞表,不過這個版本是我常用的。
在我們用scikit-learn做特征處理的時候,可以通過參數stop_words來引入一個數組作為停用詞表。這個方法和前文講中文停用詞的方法相同。
需要注意的是,如果我們使用預訓練模型,則通常不需要進行去除停用詞的操作。
8. 英文文本挖掘預處理七:特征處理
現在我們就可以用scikit-learn來對我們的文本特征進行處理了,在文本挖掘預處理之向量化與Hash Trick中,我們講到了兩種特征處理的方法,向量化與Hash Trick。而向量化是最常用的方法,因為它可以接著進行TF-IDF的特征處理。在文本挖掘預處理之TF-IDF中,我們也講到了TF-IDF特征處理的方法。
TfidfVectorizer類可以幫助我們完成向量化,TF-IDF和標準化三步。當然,還可以幫我們處理停用詞。這部分工作和中文的特征處理也是完全相同的。
轉載自https://www.cnblogs.com/pinard/p/6756534.html,作者劉建平Pinard
總結
以上是生活随笔為你收集整理的英文文本预处理流程总结的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: VA78L05V6DYE 24V转5V电
- 下一篇: 【时空】冰与火之歌一文弄懂时间复杂度与空