lipiji / SongNet

Code for ACL 2020 paper "Rigid Formats Controlled Text Generation":https://www.aclweb.org/anthology/2020.acl-main.68/
MIT License
230 stars 40 forks source link

训练与生成时 ys_tpl与xs_tpl 不匹配的问题 #26

Closed jackbyebye closed 3 years ago

jackbyebye commented 3 years ago

请问一下,训练时ys_tpl与xs_tpl(代表格式与押韵信息)只有c0,c2,c1,而生成(polish)时,对应的ys_tpl和xs_tpl却会包含已有的字的信息,比如C={c0,c0,love,c1,,bends,c0,remove,c1,,} 。 1)那么模型在生成时真的能够正确识别到ys_tpl和xstpl中字的信息吗,考虑到在训练时它从未见过这样的输入。如果缺失的字的比例只有20%甚至更低时,模型真的还能有相应的生成能力吗? 2)在代码里面,对应的缺失的字“” 会被统一替换为c1,这里是不是没有考虑到字如果是韵脚的情况,即“_”应该被替换为c2?

lipiji commented 3 years ago

@jackbyebye 1) 在训练或者预训练的时候也设置了polishing这类的样本进行训练,虽然是随机,但也期望模型可以学到一些信息。2)具体指哪里的代码?可以给个链接我看看

jackbyebye commented 3 years ago

@lipiji
1)训练的代码里面有包含吗(可能我没有看到,请指出)?没有的话我可以自己加一下。 2) data.py 文件 如果要押韵脚的话,应该补CS[3]吧?

for w in sent:

ws.append(w)

if w == "_":

这里面有bug

ys_tpl.append(CS[2])

else:

ys_tpl.append(w)

lipiji commented 3 years ago

@jackbyebye 嗯 mask那个我只在pre-train阶段加了,这个代码之前没开源也用不大到,见这里:https://github.com/lipiji/big_tpl_zh_10_base/blob/master/data.py#L137 。 2)可以在结尾改成韵脚的符号,这里我直接用cs[2]表示这里要生成一个字,具体是不是韵脚让模型去自己定吧,当然韵脚位置用cs[3]应该更准。