2013-12-20 94 views
2

我是NLP領域的新成員,但是我目前的研究需要從URL地址(例如,URL)中進行一些文本解析(或稱爲關鍵字提取)。假網址,NLP中的英文分詞?

http://ads.goole.com/appid/heads 

兩個約束都放在我的分析,

  1. 第一個「廣告」和最後一個「頭」應該是不同的,因爲「廣告」中的「頭」是指多後綴而不是廣告。

  2. 「appid」可以分解爲兩部分;即'app'和'id',它們都在互聯網中具有語義意義。

我試過Stanford NLP工具包和Google搜索引擎。前者試圖按照我所期望的語法來分類每個單詞。谷歌引擎顯示更多關於「appid」的智能,它給了我關於「app id」的建議。

我無法查看Google搜索中的搜索歷史記錄引用,因此它給了我「app id」,因爲有很多人搜索過這些單詞。我可以得到一些離線行方法來執行類似的解析嗎?

更新:請跳過正則表達式建議,因爲在甚至簡單的URL中,可能存在未知數量的單詞組合,如「appid」。

感謝,

賈敏

回答

6

而不是符號化,這聽起來像你真正想做的事情被稱爲分詞。例如,這是一種理解空白空間的方法。

我還沒有經歷過這整個教程,但這應該讓你開始。他們甚至將網址作爲潛在用例。

http://jeremykun.com/2012/01/15/word-segmentation/

+1

我已經完成了教程,發現給定的語料庫(來自書籍文本)與Internet網址(例如appid)無法正常工作。但這是一個很好的起點。所以我會搜索其他免費的語料庫以外的非免費的谷歌 - 2006年的數據。謝謝。 – caesar0301

1

Python wordsegment module可以做到這一點。它是一個用於英文分詞的Apache2許可模塊,以純Python編寫,基於萬億字的語料庫。

根據Peter Norvig從「Beautiful Data」(Segaran and Hammerbacher,2009)一書的「自然語言語料庫數據」一章的代碼。

數據文件來自Google Web Trillion Word語料庫,如Thorsten Brants和Alex Franz所述,並由語言數據聯盟分發。該模塊僅包含該數據的一個子集。單字符數據僅包含最常見的333,000個單詞。同樣,bigram數據僅包含最常見的250,000個短語。每個單詞和短語都刪除了標點符號。

安裝很容易與pip

$ pip install wordsegment 

直接讓segment得到的單詞列表:

>>> import wordsegment as ws 
>>> ws.segment('http://ads.goole.com/appid/heads') 
['http', 'ads', 'goole', 'com', 'appid', 'heads'] 

正如你注意到沒有,老語料庫排名並不靠前 「應用程序ID」 非常高。沒關係。我們可以輕鬆地教它。只需將其添加到bigram_counts字典中即可。

>>> ws.bigram_counts['app id'] = 10.2e6 
>>> ws.segment('http://ads.goole.com/appid/heads') 
['http', 'ads', 'goole', 'com', 'app', 'id', 'heads'] 

我做一個谷歌搜索「應用程序ID」,並指出結果數選擇了價值10.2e6

+0

請注意,在''wordsegment''的最新版本(v1.0 +)中,代碼有點不同:http://www.grantjenks.com/docs/wordsegment/using-a-different-corpus.html – GrantJ