【NLP】一行Python代码中自动化文本处理
作者|Satyam Kumar
編譯|VK
來源|Towards Data Science
自然語言處理(NLP)是人工智能的一個子領域,涉及計算機與自然語言之間的交互。它圍繞著如何訓練一個能夠理解和實現自然語言任務使用的數據科學模型展開。
典型的NLP項目遵循管道的各個方面來訓練模型。管道中的各個步驟包括文本清理、標記化、詞根化、編碼為數字向量等,然后是模型訓練。
NLP任務的數據集是文本數據,主要來自互聯網。大多數情況下,用于NLP建模的文本數據是臟的,需要在數據處理的早期階段進行清理。數據科學家把大部分時間花在數據預處理上,包括清理文本數據。
在本文中,我們將討論一個有趣的CleanText庫,它簡化了清理文本數據的過程,并加快了數據預處理流程。
什么是CleanText
CleanText是一個開放源碼的Python庫,它可以清除從web或社交媒體中爬取的文本數據。CleanText使開發人員能夠創建規范化的文本表示。CleanText使用ftfy、unidecode和各種其他硬編碼規則(包括RegEx)將損壞或臟的輸入文本轉換為干凈文本,可以進一步處理這些文本來訓練NLP模型。
安裝:
可以使用以下命令從PyPl安裝CleanText庫:
pip?install?clean-text安裝后,可以使用以下方法導入庫:
from?cleantext?import?clean用法:
CleanText庫只提供了一個函數“Clean”,它接受各種參數,這些參數可以進行調優以執行文本清理。clean可執行11種類型的清理,包括:
Unicode:
s1?=?'Zürich' clean(s1,?fix_unicode=True)#?Output:?zurichASCII:
它將文本轉換為最接近的ASCII表示形式。
s2?=?"ko\u017eu\u0161\u010dek" clean(s2,?to_ascii=True)#?Output:?kozuscekLower:
將文本數據轉換為小寫。
s3?=?"My?Name?is?SATYAM" clean(s3,?lower=True)#?Output:?my?name?is?satyam替換URL/電子郵件/電話號碼:
用特殊標記替換文本數據中的所有URL、電子郵件或電話號碼。
s4?=?"https://www.Google.com?and?https://www.Bing.com?are?popular?seach?engines.?You?can?mail?me?at?satkr7@gmail.com.?If?not?replied?call?me?at?9876543210"clean(s4,?no_urls=True,?replace_with_url="URL", no_emails=True,?replace_with_email="EMAIL" no_phone_numbers=True,?replace_with_email="PHONE")#?Output:?url?and?url?are?popular?search?engines.?You?can?mail?me?at?EMAIL.?If?not?replied?call?me?at?PHONE替換貨幣:
用特殊標記替換文本數據中的所有貨幣。
s5?=?"I?want???40" clean(s5,?no_currency_symbols?=?True) clean(s5,?no_currency_symbols?=?True,?replace_with_currency_symbol="Rupees")#?Output:?i?want?<cur>?40 #?Output:?i?want?rupees?40刪除號碼:
用特殊標記替換或刪除所有數字。
s7?=?'abc123def456ghi789zero0'clean(s7,?no_digits?=?True) clean(s7,?no_digits?=?True,?replace_with_digit="")#?Output:?abc000def000ghi000zero0 #?Output:?abcdefghizero替換標點符號:
刪除或用特殊標記替換文本數據中的所有標點。
s6?=?"40,000?is?greater?than?30,000." clean(s6,?no_punct?=?True)#?Output:?40000?is?greater?than?30000組合所有參數:
我們已經分別討論了上述所有參數。現在,讓我們在Clean函數中組合所有這些函數,為示例文本調用它,并觀察干凈的文本結果。
from?cleantext?import?cleantext?=?""" Zürich?has?a?famous?website?https://www.zuerich.com/? WHICH?ACCEPTS?40,000?€?and?adding?a?random?string,?: abc123def456ghi789zero0?for?this?demo.?Also?remove?punctions?,.? my?phone?number?is?9876543210?and?mail?me?at?satkr7@gmail.com.'?"""clean_text?=?clean(s8,?fix_unicode=True,?to_ascii=True,?lower=True,?no_line_breaks=True,no_urls=True,?no_numbers=True,?no_digits=True,?no_currency_symbols=True,?no_punct=True,?replace_with_punct="",?replace_with_url="<URL>",?replace_with_number="<NUMBER>",?replace_with_digit="",?replace_with_currency_symbol="<CUR>",lang='en')print(clean_text)#?Output:?zurich?has?a?famous?website?<url>?which?accepts?<number>?<cur>?and?adding?a?random?string?abcdefghizero?for?this?demo?also?remove?punctions?my?phone?number?is?<number>?and?mail?me?at?satkrgmailcom因此,只需編寫一行Python代碼,就可以清除臟的文本數據并進行進一步的預處理。
結論
CleanText是一個高效的庫,它可以處理或清除爬取的臟數據,只需一行代碼就可以獲得標準化的干凈文本輸出。開發人員只需要根據自己的需要調整參數。它簡化了數據科學家的工作,因為現在他/她不必寫很多行復雜的正則表達式代碼來清理文本。
CleanText不僅適用于英語輸入文本,而且可以處理德語,只需設置lang='de'。
CleanText庫只包含一些文本清理參數,還有改進的余地。盡管如此,開發人員仍然可以將其用于一些清理任務,然后繼續手動編碼以完成剩余的任務。
閱讀下面提到的文章了解AutoNLP-一個自動NLP庫。
https://medium.com/swlh/autonlp-sentiment-analysis-in-5-lines-of-python-code-7b2cd2c1e8ab
參考文獻:
[1] Clean-Text Repository: https://github.com/jfilter/clean-text
謝謝閱讀!
往期精彩回顧適合初學者入門人工智能的路線及資料下載機器學習及深度學習筆記等資料打印機器學習在線手冊深度學習筆記專輯《統計學習方法》的代碼復現專輯 AI基礎下載機器學習的數學基礎專輯黃海廣老師《機器學習課程》課件合集 本站qq群851320808,加入微信群請掃碼:總結
以上是生活随笔為你收集整理的【NLP】一行Python代码中自动化文本处理的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Windows平台Unity3d下如何同
- 下一篇: websocket python爬虫_p