在保留语义的同时重写句子

use*_*544 6 algorithm nlp wordnet semantics

是否可以使用WordNet重写句子,使句子的语义仍然相同(或大致相同)?

假设我有这句话:

Obama met with Putin last week.
Run Code Online (Sandbox Code Playgroud)
  1. 是否可以使用WordNet将句子重新改写为以下替代方案:

    Obama and Putin met the previous week.
    Obama and Putin met each other a week ago.
    
    Run Code Online (Sandbox Code Playgroud)
  2. 如果无法更改句子结构,WordNet是否可以仅用于替换相关的同义词?

    例如:

    Obama met Putin the previous week.
    
    Run Code Online (Sandbox Code Playgroud)

alv*_*vas 7

如果问题是可以WordNet用来做句子释义.它可以有很多语法/语法组件.你需要系统:

  • 首先获取标记的单个语义并解析句子的语法.
  • 然后理解复合句子的整体语义(特别是如果它是隐喻的)
  • 然后用一些语法生成器重新翻译句子.

到目前为止,我只知道ACE解析器/生成器可以做类似的事情,但它需要大量的黑客攻击系统才能使它成为一个复述生成器.http://sweaglesw.org/linguistics/ace/

所以回答你的问题,

是否可以使用WordNet将句子改写为替代词?可悲的是,WordNet不是一个银饰.对于复述任务,您将需要的不仅仅是语义.

如果无法更改句子结构,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
Run Code Online (Sandbox Code Playgroud)

[OUT]:

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')]
Run Code Online (Sandbox Code Playgroud)

那么,即使你知道这种感觉(让我们说第一感觉),每个意义上你会得到多个单词,并且不会在句子中替换每个单词.此外,它们的lemma形式不是表面形式(例如,动词是基本形式(简单现在时),名词是单数形式):

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
Run Code Online (Sandbox Code Playgroud)

[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']
Run Code Online (Sandbox Code Playgroud)