2011-12-18 84 views
2

我目前正在研究一個項目,我需要根據給定的句子創建WH問題的可能答案。Java中的名詞類型確定

例一句話是:

Anna went to the store. 

我需要建立能夠回答以下問題。

Who went to the store? 
Where did ana go? 

我已經實現了單詞的POST-Tagging,現在我知道該詞的詞性。

我很難確定什麼類型的名詞是這個詞,如果它是一個名詞,所以我可以爲我的答案創建一個模板。

例子是:

Anna - noun - person: possible answer to question who. 

Store - noun - place: possible answer to question where. 

我想實現這個用java

+2

你的解決方案當然是基於搜索一個巨大的詞典和名字詞典? – 2011-12-18 12:12:57

+0

你想自己實現這個還是會使用第三方庫(比如http://nlp.stanford.edu/software/lex-parser.shtml)好嗎? – cherouvim 2011-12-18 12:20:36

+0

我們可以發佈這個問題到那個鏈接? – 2011-12-20 02:10:34

回答

3

你不應該嘗試從出現在一個句子中的名詞推斷可能提出的問題進行解答。相反,你應該推斷你可以從動詞所描述的活動中提出的問題類型。在你的例子中,系統應該推斷出去的活動需要一個主體誰去(可能回答「誰」問題),主題去的地方(可能回答「哪裏」的問題)以及主題去那裏的時間(對「何時」問題的可能答案)以及可能更多(從哪裏?與誰?以什麼方式?以哪種方式?等等)。然後它應該檢查問題中提供了哪些答案。在你的例子中,提供了「who」和「where」的答案,但「when」不是。換句話說,你應該有一個從動詞到每個動詞都有意義的問題的映射。

然後,對於適用於動詞的每個問題,您應該存儲用於在句子中表示答案的介詞。例如,對「何處」問題的回答往往是前面加「to」,對「何時」問題的回答往往是前面加上「at」或「on」。請注意,主題(這裏回答「誰」問題)需要特殊處理。另外,一些動詞後面可以緊跟一個沒有介詞的對象,動詞數據集應該指出它們構成答案的問題。例如,動詞「進入」之後可以跟隨一個對象,該對象回答「Anna進入房間」中的「where/what」問題。另外,一些名詞是例外,並且從不在介詞前面。例如「安娜回家」中的「家」。你也需要特別對待這些。另一件需要注意的是「安娜竭盡全力」等慣用表情。同樣,需要特殊處理。

通常,英語中的名詞沒有足夠的結構來確定它們表示什麼類型的東西(例如地點,對象,人物,概念等)。您需要有一個大型數據集,將系統已知的所有單詞分解爲不同的類別。如果你確實使用這樣的名詞,它應該有一個輔助角色來提高系統的準確性。

依靠動詞和介詞遠爲靈活,因爲它允許系統處理未知表達式。例如,有人可能會說「安娜去了鮑勃」,但「鮑勃」不是一個地方。從動詞和介詞推斷每個元素角色的系統仍然處理這種情況,並將「Bob」正確地對待「何處」問題。

0

我只會專注於確定名詞類型的問題,而不是回答真實問題的方法。

SuperSense Tagger是一種爲POS提供更具體類型/感知信息的資源/工具。您可以檢查包含名詞:person和noun:location的標記類別。有Java的包裝(你可以搜索它們)。