我是自然语言生成的新手,目前处于实验阶段。激发用例的目的是为图像生成一个句子标题,但是我的问题/问题并非仅针对当前的NLG用例。
我尝试的第一个模型使用了CNN和RNN的组合。除了有时以第一人称语音,有时以第二人称语音以及其他时候以第三人称语音书写所生成的图像说明语句之外,一切工作都按预期进行。
对于图片字幕用例,我希望所有图片字幕都以第二人称语音书写。我已经用我能想到的每个关键字组合搜索了google,google Scholar,堆栈交换,GitHub等,但在这个主题上我什么都没想到。
他们的NLG技术是否可以使我在生成的输出中控制作者的观点?
如果没有,我唯一能想到的就是建立一个训练语料库,它只包含以第二人称视角写的句子;但似乎很难建立足够大小的语料库。
答案 0 :(得分:0)
如果只训练一个单独的网络进行标准化,那会容易得多。我不确定是否有特定任务的数据集。但是,我相信通过创建一个很小的数据集并微调bert来接收具有不同视角的序列并生成第二人称语音版本,您可以获得满意的结果并节省一些时间。
答案 1 :(得分:0)
基于规则的NLG系统(例如SimpleNLG)使您可以更改短语的人称和时态。您面临的问题是您的语料库包含自由文本描述,而不是由这种正式语法定义的描述。
虽然可以将您的描述转换为这样的语法,但对您而言可能是过大了。如果您的描述相对简单,则可以尝试通过spaCy之类的解析器运行它们。这将在您的描述中识别代词的人(和时态)。您也许可以更改它们(“我”更改为“您”,“我”更改为“您的”等)。或者,您可以拒绝不在第二人称中的那些,并在语料库的一部分上进行训练。
Python代码:
// Primary template
template <class T>
class Table_Inside;
// Specialization
template <>
class Table_Inside<int> { /* implementation for int */ };
template <>
class Table_Inside<char> { /* implementation for char */ };
给出输出:
import spacy
nlp = spacy.load('en_core_web_sm')
doc = nlp(u'A photo of you beside your car')
for token in doc:
print(token.text, token.lemma_, token.pos_, token.tag_, token.dep_,
token.shape_, token.is_alpha, token.is_stop, nlp.vocab.morphology.tag_map[token.tag_])
您可以编写一些简单的词法规则来更改您的描述,用相应的第二人称等价词代替第一和第三人称代词。看一下SimpleNLG MorphologyRules的一些想法。如果在某些情况下简单的代词替换还不够,这可能会导致语料库中的一些错误,但是如果没有看到您的语料库的一些示例,就很难再发表评论了。