2011-06-26 96 views
8

目前我正在試圖理解這種形式的句子:從句子中提取「有用」信息?

The problem was more with the set-top box than the television. Restarting the set-top box solved the problem.

我完全新的自然語言處理和使用Python的NLTK包讓我的手髒開始。但是,我想知道是否有人可以給我一個關於實現這一目標所涉及的高級步驟的概述。

我所試圖做的是找出問題是什麼,所以在這種情況下,set-top box和已採取的措施是否解決了問題,所以在這種情況下,由於yes重新起動解決了這一問題。所以,如果所有的句子都是這種形式,我的生活會更容易,而是因爲它是自然語言,句子也可以是以下形式:

I took a look at the car and found nothing wrong with it. However, I suspect there is something wrong with the engine

因此,在這種情況下,問題是與car。由於存在suspect這個詞,所採取的措施未能解決問題。潛在的問題可能是engine

我不是在尋找一個絕對的答案,因爲我懷疑這是非常複雜的。我所尋找的是更高層次的概述,這將使我指向正確的方向。如果有更容易/替代的方式來做到這一點,那也是受歡迎的。

+7

在NLP/NLTK方面有一些經驗,我認爲這個問題在「像箭一樣飛的時間,像香蕉一樣的果蠅」這樣的語義分析鼠洞中堅定不移。這個小難題還沒有任何我知道的通用解決方案。 – msw

+0

@msw:哦... :)好一個!我不打算設計一個通用的解決方案。這將是一個非常特定領域的解決方案。我想了解的是如何解決這些問題(即需要什麼領域知識,需要編譯哪些數據庫,分類器應該接受什麼培訓等) – Legend

+0

示例短語是一個古老的NLP栗子,它表明甚至無法接近您的目標。按照你的例子,將「引擎」替換爲「立體聲」,並告訴我你如何 - 以你的所有個人NLP技能 - 可以消除你的樣本(一件壞事)和我的修改(一種無所謂的事)的歧義。 – msw

回答

3

也許,如果都能很好地形成的句子,我會嘗試dependency parsing(http://nltk.googlecode.com/svn/trunk/doc/api/nltk.parse.malt.MaltParser-class.html# raw_parse)。這給你一個句子成分的圖表,你可以告訴詞彙項目之間的關係。稍後,您可以從依賴分析器的輸出中提取短語(http://nltk.googlecode.com/svn/trunk/doc/book/ch08.html#code-cfg2)這可以幫助您提取直接對象一個句子,或一個句子中的動詞短語。

如果您只想從句子中獲取短語或「塊」,您可以嘗試塊解析器(http://nltk.googlecode.com/svn/trunk/doc/api/nltk.chunk-module.html )。您也可以執行命名實體識別(http://streamhacker.com/2009/02/23/chunk-extraction-with-nltk/)。它通常用於提取場所,組織或人名的實例,但它也可以適用於您的案例。

假設你解決了從句子中提取名詞/動詞短語的問題,你可能需要將它們過濾掉以緩解你的領域專家的工作(太多短語可能會壓倒法官)。你可以對你的短語進行頻率分析,刪除非常頻繁的,通常與問題領域無關的詞彙,或者編輯一個白名單並保留包含預定詞組的詞組等。

4

真的,你所希望的最好的是一個Naive Bayesian Classifier與一個足夠大(可能比你更多)的訓練集,並願意容忍一個公平的錯誤判斷率。

尋求NLP的聖盃一定會讓你有點不滿意。

+0

與「樸素貝葉斯分類器」在同一句話中,「你能希望得到的最好」能讓你獲得-1。有許多**,**許多**更強大的機器學習模型用於信息提取。我懷疑編寫一套正則表達式比試圖讓一個弱的學習算法如樸素貝葉斯解決這個複雜問題要容易得多。 –