我收集了一些「文章」,每篇1至10個句子,用嘈雜的非正式英語(即社交媒體風格)書寫。 我需要從每篇文章中提取一些信息,如可用日期和時間。我還需要了解這篇文章正在談論什麼,誰是主要的「演員」。從非結構化文本中提取信息
舉例:給出句子:「明天早晨從10.30開始,每個人都需要參與討論公司的財務預測。」,我需要提取:
- 日期/時間=>「10.30明天早上」。
- 該話題=>「公司的財務預測」。
- the actor =>「Everybody」。
據我所知,日期和時間可以在不使用NLP技術的情況下提取,但我還沒有發現任何與Python中的Natty(http://natty.joestelmach.com/)一樣好的東西。
我如何讀NLTK本書的一些章節,看對Coursera的NLP課程的一些影片後進行理解如下:
- 數據的使用部分創建註釋的語料庫。由於文本的非正式特性(例如拼寫錯誤,無意義的大寫,單詞縮寫等),我無法使用現成的語料庫。
- 手動(嘆氣...)用Penn TreeBank標記集中的標記註釋每篇文章。 有沒有什麼辦法可以自動完成這一步驟,只需檢查/修復結果?
- 在註釋文章上訓練POS標記器。我發現似乎很有前途的NLTK教練項目(http://nltk-trainer.readthedocs.org/en/latest/train_tagger.html)。
- Chunking/Chinking,這意味着我將不得不使用IOB符號再次手動註釋語料庫(...)。不幸的是根據這個bug報告,n-gram chunkers被破壞:https://github.com/nltk/nltk/issues/367。這似乎是一個重大問題,並且讓我懷疑是否應該繼續使用NLTK,因爲它已經有一年多了。
- 在這一點上,如果我已經正確地做了一切,我假設我會在大塊中找到actor,topic和datetime。 正確嗎?
我可以(暫時)跳過1,2和3並生成一個工作,但可能具有較高的錯誤率實施? 我應該使用哪個語料庫?
我也在考慮一個預處理步驟來糾正常見的拼寫錯誤或快捷方式,如「yess」,「c u」和其他可憎物。 任何已有的東西我都可以利用?
這個問題,簡而言之,是:我的方法解決這個問題是否正確?如果不是,我做錯了什麼?
在學術水平,這是http://en.wikipedia.org/wiki/Semantic_role_labeling。 – cyborg