1

我正在从事自然语言生成项目。我已经从段落中创建了词袋,比如名词、动词、形容词等,我正在尝试生成模式主语+动词+宾语的句子。
例子:

  • 名词:伊丽莎白,狗,埃菲尔铁塔,自行车
  • 动词:唱歌,吠叫,闪耀
  • 当前输出:伊丽莎白闪耀,埃菲尔铁塔吠叫,自行车唱歌..等
  • 预期配对:伊丽莎白唱歌,狗吠,埃菲尔铁塔闪耀,自行车闪耀

主语和动词必须有一种关系才能创造出有意义的句子。有没有办法在名词和可能的动词之间建立关系以产生主语+动词模式?

另外,如果我们有动词,那么使用输入语料库找到可能的对象来生成新的有意义的句子?
例子:

  • 动词:骑马,阅读
  • 对象:马、自行车、书籍、小说。
  • 预期配对:骑马,骑自行车,看书,看小说。
4

2 回答 2

2

让我们这样想。有些像吠叫和唱歌这样的行为只有有生命的人才能做到,因此自行车,一个无生命的物体,是不会唱歌的。此外,吠叫是由动物完成的,即,人类不能是发出吠叫行为的人。因此,让我们为每个组成部分定义某些特征。例如:

eli = {'CAT': 'N', 'ORTH': 'Elizabeth', 'FEAT':'human'}
dog = {'CAT': 'N', 'ORTH': 'dog', 'FEAT':'animal'}
eiffel = {'CAT': 'N', 'ORTH': 'Eiffel Tower', 'FEAT':'inanimate'}
bike = {'CAT': 'N', 'ORTH': 'Bike', 'FEAT':'inanimate'}

nouns = [eli, dog, eiffel, bike]

sings = {'CAT': 'V', 'ORTH': 'sings', 'FEAT':'human'}
barks = {'CAT': 'V', 'ORTH': 'barks', 'FEAT':'animal'}
shines = {'CAT': 'V', 'ORTH': 'shines', 'FEAT':'inanimate'}

verbs = [sings, barks, shines]

# Our sentence pattern is: noun + verb + noun

for n in nouns:
    for v in verbs:
        if n['FEAT'] == v['FEAT']:
            print('{} {}'.format(n['ORTH'], v['ORTH']))

当你运行它时,你会得到:

>>> 
Elizabeth sings
dog barks
Eiffel Tower shines
Bike shines
>>>

将动词与合适的对象配对也是如此。您只需为您的配对分配适当的功能。

于 2016-04-28T11:14:39.000 回答
1

参见Nate Chambers名为“叙事图式”的作品集。他做你想做的事。

也可能是相关的。

于 2016-04-28T20:26:54.777 回答