2014-03-25 90 views
5

我收集了一些「文章」,每篇1至10個句子,用嘈雜的非正式英語(即社交媒體風格)書寫。 我需要從每篇文章中提取一些信息,如可用日期和時間。我還需要了解這篇文章正在談論什麼,誰是主要的「演員」。從非結構化文本中提取信息

舉例:給出句子:「明天早晨從10.30開始,每個人都需要參與討論公司的財務預測。」,我需要提取:

  • 日期/時間=>「10.30明天早上」。
  • 該話題=>「公司的財務預測」。
  • the actor =>「Everybody」。

據我所知,日期和時間可以在不使用NLP技術的情況下提取,但我還沒有發現任何與Python中的Natty(http://natty.joestelmach.com/)一樣好的東西。

我如何讀NLTK本書的一些章節,看對Coursera的NLP課程的一些影片後進行理解如下:

  1. 數據的使用部分創建註釋的語料庫。由於文本的非正式特性(例如拼寫錯誤,無意義的大寫,單詞縮寫等),我無法使用現成的語料庫。
  2. 手動(嘆氣...)用Penn TreeBank標記集中的標記註釋每篇文章。 有沒有什麼辦法可以自動完成這一步驟,只需檢查/修復結果?
  3. 在註釋文章上訓練POS標記器。我發現似乎很有前途的NLTK教練項目(http://nltk-trainer.readthedocs.org/en/latest/train_tagger.html)。
  4. Chunking/Chinking,這意味着我將不得不使用IOB符號再次手動註釋語料庫(...)。不幸的是根據這個bug報告,n-gram chunkers被破壞:https://github.com/nltk/nltk/issues/367。這似乎是一個重大問題,並且讓我懷疑是否應該繼續使用NLTK,因爲它已經有一年多了。
  5. 在這一點上,如果我已經正確地做了一切,我假設我會在大塊中找到actor,topic和datetime。 正確嗎?

我可以(暫時)跳過1,2和3並生成一個工作,但可能具有較高的錯誤率實施? 我應該使用哪個語料庫?

我也在考慮一個預處理步驟來糾正常見的拼寫錯誤或快捷方式,如「yess」,「c u」和其他可憎物。 任何已有的東西我都可以利用?

這個問題,簡而言之,是:我的方法解決這個問題是否正確?如果不是,我做錯了什麼?

+1

在學術水平,這是http://en.wikipedia.org/wiki/Semantic_role_labeling。 – cyborg

回答

4

我能(臨時)跳過1,2和3,併產生一個工作,但具有高錯誤率,實現 可能?哪個語料庫應該使用 ?

我也在考慮一個預處理步驟,以糾正常見的拼寫錯誤或像「yess」,「c u」和其他可憎的快捷方式。 任何已有的東西我都可以利用?

我建議你先去處理標準語言文本。您所指的預處理本身就是一項NLP任務,稱爲標準化。下面是Twitter的規範化的資源:http://www.ark.cs.cmu.edu/TweetNLP/,此外,還可以使用拼寫檢查,句子邊界檢測,...

的問題,一言以蔽之,就是:是我解決這個問題 正確的做法?如果不是,我做錯了什麼?

如果你抽象規範化,我認爲你的方法是有效的。關於自動化註釋過程:您可以先使用現成的組件,然後在不同的迭代過程中糾正,重新訓練等,從而引導過程。要獲得可接受的結果,您需要多次執行步驟2,3和4。

如果您有興趣瞭解問題並優化現有解決方案,我建議您將重點放在允許您開發自己的模型的工具上。如果您優先考慮通過開發自己的模型獲得結果,我建議您查看現有的開源文本工程框架,如Gate(https://gate.ac.uk/)UIMA(http://uima.apache.org/)和DKPro(它擴展UIMA)(https://code.google.com/p/dkpro-core-asl/)。所有這三個框架都包裝了現有的組件,因此您有各種可能的解決方案。

相關問題