【NLP】如何清理文本數(shù)據(jù)
作者 | Matt Przybyla? ?編譯 | VK? ?來源 | Towards Data Science
目錄
介紹
清除文本數(shù)據(jù)
總結(jié)
參考引用
介紹
數(shù)據(jù)在大多數(shù)情況下都是雜亂無章、雜亂無章、難以處理的,這一點(diǎn)也不足為奇。
當(dāng)你從教育實(shí)踐中學(xué)習(xí)數(shù)據(jù)科學(xué)時,你將看到大多數(shù)數(shù)據(jù)都是從多個來源、多個查詢中獲得的,這可能會導(dǎo)致一些不干凈的數(shù)據(jù)。
在某些或大多數(shù)情況下,你必須提供最終用于訓(xùn)練模型的數(shù)據(jù)集。有一些文章關(guān)注數(shù)字?jǐn)?shù)據(jù),但我希望本文的重點(diǎn)主要是文本數(shù)據(jù),這與自然語言處理是一致的。
話雖如此,這里有一個簡單的方法來清理Python中的文本數(shù)據(jù),以及它何時有用。我將使用來自TMBDF5000電影數(shù)據(jù)集[2]的流行數(shù)據(jù)集。
清除文本數(shù)據(jù)

刪除停用詞
另一種解釋“停用詞”的方法是刪除不必要的文本。
但是,需要注意的是,當(dāng)你使用常用的停用詞庫時,你可能正在刪除你實(shí)際上想要保留的單詞。
這就是為什么你應(yīng)該首先考慮你想要刪除的單詞列表。停用詞的常見例子有“the”、“of”等。你想要刪除這些單詞的原因是你想要保留這些單詞、短語、句子等的主題。
例如“ there was the time where they went to the store in July for the holiday party’”。如果你刪除了停用詞和一些不必要的詞,你就會得到 time, July, holiday, party 。
話雖如此,讓我們看看如何從電影標(biāo)題中刪除一些停用詞:
import?pandas?as?pd
import?nltk.corpus
nltk.download(‘stopwords’)
from?nltk.corpus?import?stopwords
df?=?pd.read_csv('...path/tmdb_5000_movies.csv')
stop_words?=?stopwords.words('english')
df['clean_title']?=?df['title'].apply(lambda?x:?'?'.join([word?for?word?in?x.split()?if?word?not?in?(stop_words)]))
在上面的代碼中,我們導(dǎo)入必要的庫,然后將數(shù)據(jù)讀入數(shù)據(jù)框。
從這里,我們刪除“title”列文本中的停用詞,它們將在“ clean_title ”列中顯示各自的效果。
輸出是我們在下面看到的。在第1行、第3行和第8行中,刪除了stopwords,你可以通過before和after并排看到這一點(diǎn)。

除了nltk中的停用詞庫外,你還可以“手動”添加其他停用詞。為了實(shí)現(xiàn)這個功能,你可以簡單地添加一個字符串列表來添加停用詞。
例如,如果我們想刪除文本“3”,因?yàn)樗诒纠胁皇且粋€數(shù)字,我們可以將其添加到列表中,以及單詞“At”和字母“v”。其工作原理如下所示:
stop_words?=?stopwords.words(‘english’)?+?[‘At’,?‘v’,?‘3’]
#?應(yīng)用與上面相同的代碼,但分配一個新列來查看差異
df['clean_title_v2']?=?df['title'].apply(lambda?x:?'?'.join([word?for?word?in?x.split()?if?word?not?in?(stop_words)]))
在下面的屏幕截圖中,你可以看到lambda函數(shù)如何刪除添加的字符串列表中的值。

現(xiàn)在我們已經(jīng)展示了一種清理文本數(shù)據(jù)的方法,讓我們討論一下這個過程對數(shù)據(jù)科學(xué)家有用的可能應(yīng)用:
刪除不必要的單詞以便可以執(zhí)行詞干分析
與上面類似,你可以使用詞形還原
只保留必要的單詞可以讓你更容易地標(biāo)記數(shù)據(jù)中的詞類,例如,如果你只標(biāo)記形容詞,并在數(shù)據(jù)中使用該文本作為模型,那么像“ beautiful ”、“ amazing ”、“ loud ”就可以用來預(yù)測電影評論的目標(biāo)變量。一個模型將能夠更容易地從形容詞中識別情感,從而辨別電影評論是好是壞,或者電影需要改進(jìn)什么
根據(jù)更新文本的主要詞語創(chuàng)建摘要儀表板,例如,去掉“蜘蛛俠1”、“蜘蛛俠2”和“蜘蛛俠3”中的數(shù)字,將允許對所有蜘蛛俠電影進(jìn)行分析
更容易進(jìn)行主題建模
少量文本,以便你的建模可以更快、更便宜地進(jìn)行訓(xùn)練和預(yù)測
可以用來刪除錯誤的文本,你可以自動刪除通常被語音錯誤解釋的單詞。
當(dāng)然,有更多的理由刪除停用詞,并清理文本數(shù)據(jù)。同樣重要的是要記住,有一些新興的算法可以很好地處理文本數(shù)據(jù),比如CatBoost。
總結(jié)
如你所見,清理數(shù)據(jù)的一部分可以為進(jìn)一步清理和處理數(shù)據(jù)奠定基礎(chǔ)。最終會使模型更加健壯和準(zhǔn)確。
總而言之,以下是如何從文本數(shù)據(jù)中刪除停用詞:
*?導(dǎo)入庫
*?導(dǎo)入數(shù)據(jù)集
*?刪除停用詞
*?添加單獨(dú)的停用詞
更新:由于單詞的大小寫是大寫的,所以沒有按應(yīng)該的方式刪除它,因此請確保在清理之前將所有文本都小寫。
感謝閱讀!
參考引用
[1] Photo by JESHOOTS.COM on Unsplash, (2019)
[2] Kaggle, TMBDF 5000 Movie Dataset, (2021 — accessed)
[3] Photo by Marylou Fortier on Unsplash, (2020)
[4] M.Przybyla, cleaning text example, (2021)
[5] M.Przybyla, cleaning text example plus adding individual stop words, (2021)
往期精彩回顧 本站qq群955171419,加入微信群請掃碼:
