2017-05-09 13 views
0

我正在處理一個清理凌亂的社交媒體和電子商務訂單文本數據的項目,並且希望理智地檢查我的方法並查看是否有庫和其他我應該考慮使用的資源。修復拼寫錯誤和在雜亂文本中查找地址

我正在處理數十萬個英文文本片斷,但不是完整的句子,並且包含人名,商家名稱,聯繫信息,郵寄地址以及來自社交媒體帖子的內容,包括鏈接和處理社交媒體處理,如Twitter和Instagram處理。我得到的文本只是一個未格式化的非結構化文本。我會指出,文本通常是一堆短語和單詞,因此不能被認爲是完整的英語句子;我提到這一點是因爲我認爲這可能會限制我使用標準NLP和詞性標記技術(但我不確定這一點)的語義解析量。

我的目標是對每個文本片段實施以下修復和增強功能: 當我可以放心地修復拼寫錯誤時修復拼寫錯誤,但在沒有可用的替換文件時保留現有的記號。請注意,我的文本中有一些多餘的換行符,有時缺少空格,所以拼寫錯誤有三種:1)常規拼寫錯誤(例如「bananna」);沒有空格拼寫錯誤(例如,「yellowbanana」);額外的空格拼寫錯誤(例如,「ban ana」) 標記地址和地名,以便我可以對它們進行地理編碼並鏈接到該地點的地圖。

下面是一些由但代表性的例子:

實施例1:

7pcs gillette razors and 1 mens cardi 
gan sweater 231 E Front St Missoula 
MT Order total $34.39 shipping ground UPS 

在本例中,我想修復「開襟」的拼寫錯誤,並且還注意到,「231Ë Front St Missoula MT「是郵寄地址。

實施例2:

6600 cartons yellowbanana for @metmuseum 
Marpa was a seminal figure of early Tibetan Bud 
dhism and principal teacher of Milarapa 

在本例中,我想解決的「yellowbanana」拼寫錯誤和修復「佛教」

的拼寫錯誤雖然我當然可以寫一堆規則和正則表達式,我試圖利用現有的NLP和其他工具來避免大量特殊的外殼。我正在查看以下實用程序:

  • https://hunspell.github.io/是Google Chrome,Firefox和其他許多項目使用的拼寫檢查程序。
  • https://textblob.readthedocs.io/en/dev/建立在NLTK之上,似乎有許多不同的功能,雖然我不確定它是否可以處理我的非句子文本數據來解決上述問題。這看起來很強大,但我不確定如何利用它來解決我的問題。
  • 對於例2,我發現https://geocode.xyz/,它不能在完整的地址(雖然它得到米蘇拉MT)拿起。 https://pypi.python.org/pypi/pyap也看起來很有趣,雖然它只適用於美國和加拿大,我需要能夠解析世界各地的地址。我很遺憾先不知道哪個國家的每個文本片段都在。

我非常感謝任何可以給我的指針,並讓我知道我是否在正確的軌道上。謝謝。

回答

0

從NLP的角度來看,您的問題存在多個問題(或數據挖掘問題需要解決):1)拼寫糾正,2)實體提取(這是您的案例中的地址提取)。

我會說專注於問題1,即先拼寫糾正,然後將該拼寫糾正文本傳遞給解決上述問題2的信息提取器模型。

對於您的案例中的拼寫,最好的選擇是從數據(特別是您的數據)中學習的概率框架。目前,最好的基於概率/機器學習的拼寫糾正器是基於深度神經網絡的模型。看到這裏 - https://medium.com/@majortal/deep-spelling-9ffef96a24f6這裏是代碼https://github.com/MajorTal/DeepSpell(和它的改進https://hackernoon.com/improving-deepspell-code-bdaab1c5fb7e)。您可以開始制定標準拼寫校正數據,然後可能會添加一些您自己的手工訓練數據來針對您的特定情況調整模型。

現在對於實體提取,鑑於其格式不正確的文本,請從訓練社交媒體文本(例如Twitter)和其他在線論壇的模型開始。 http://www.cs.cmu.edu/~ark/TweetNLP/https://github.com/aritter/twitter_nlp並從中取出,並通過添加自己的標記數據和參數調整來調整它們。

相關問題