2014-04-06 81 views
4

是否可以使用WordNet來重寫一個句子,以便句子的語義含義仍然相同(或基本相同)?重寫句子,同時保留語義

比方說,我有這樣的一句話:

Obama met with Putin last week. 
  1. 是否有可能利用共發現修改句子到像選擇:

    Obama and Putin met the previous week. 
    Obama and Putin met each other a week ago. 
    
  2. 如果改變句子結構不可能的話,WordNet可以只用來替換相關的同義詞嗎?

    例如:

    Obama met Putin the previous week. 
    
+0

看看這個討論:http://stackoverflow.com/q/21990004/3279460。 –

回答

6

如果問題是使用WordNet做句話轉述的可能性。它可能有很多語法/語法組件。您需要的系統是:

  • 首先獲取標記的單個語義並解析句子的語法。
  • 然後理解複合句的整體語義(特別是如果它是隱喻的話)
  • 然後用一些語法生成器重新編排句子。

到目前爲止,我只知道ACE解析器/生成器可以做類似的事情,但它需要很多黑客入侵系統才能使其成爲釋義生成器。 http://sweaglesw.org/linguistics/ace/

因此,要回答你的問題,

是否有可能利用共發現修改句子成替代品?可悲的是,WordNet不是一個silverbullet。您將需要比釋義任務更多的語義。

如果更改句子結構是不可能的,WordNet可以只用來替換相關的同義詞嗎?是的,這是可能的。但要弄清楚哪一個同義詞是可替換的 - 很難......而且你還需要一些形態/語法組件。

首先你會遇到每個字的多種感官的問題:

from nltk.corpus import wordnet as wn 
sent = "Obama met Putin the previous week" 

for i in sent.split(): 
    possible_senses = wn.synsets(i) 
    print i, len(possible_senses), possible_senses 

[出]:

Obama 0 [] 
met 13 [Synset('meet.v.01'), Synset('meet.v.02'), Synset('converge.v.01'), Synset('meet.v.04'), Synset('meet.v.05'), Synset('meet.v.06'), Synset('meet.v.07'), Synset('meet.v.08'), Synset('meet.v.09'), Synset('meet.v.10'), Synset('meet.v.11'), Synset('suffer.v.10'), Synset('touch.v.05')] 
Putin 1 [Synset('putin.n.01')] 
the 0 [] 
previous 3 [Synset('previous.s.01'), Synset('former.s.03'), Synset('previous.s.03')] 
week 3 [Synset('week.n.01'), Synset('workweek.n.01'), Synset('week.n.03')] 

那麼即使你知道感(比方說第一感覺),你會得到多個單詞,而不是每個單詞都可以在句子中被替換。此外,它們在形式上不是表面形式(例如,表面形式)。動詞是在它們的鹼形式(一般現在時)和名詞是在單數):

from nltk.corpus import wordnet as wn 
sent = "Obama met Putin the previous week" 

for i in sent.split(): 
    possible_senses = wn.synsets(i) 
    if possible_senses: 
     print i, possible_senses[0].lemma_names 
    else: 
     print i 

[OUT]:

Obama 
met ['meet', 'run_into', 'encounter', 'run_across', 'come_across', 'see'] 
Putin ['Putin', 'Vladimir_Putin', 'Vladimir_Vladimirovich_Putin'] 
the 
previous ['previous', 'old'] 
week ['week', 'hebdomad'] 
0

ö NE方法是語法分析與nltk讀更多here和分析後將您的句子轉換爲active voice或​​。