Vintage NLP for Work
他们还对开发集中的值组合按比例选取了概率最高的k个句子,来验证对不同的6个属性值是否得到了正确的控制。效果也都非常好。 对于职业性和情感倾向方面,由于无法用自动化的方式评价生成的句子,他们借助 Amazon Mechanical Turk 进行评价。统计了职业性方面达到了72.1%的准确性,在积极和消极情感方面得到了86.3%的准确性,而当评价积极与中立、消极与中立时就较难区分,效果只有60%多
在数据中手工去掉所有评论主题为情节、且是个人观点的样本,重新训练一次模型,再测试,能看出模型又一定的泛化能力。虽然它没有见过这两种组合同时出现,但测试时100%的句子都是个人观点,同时82.4%的带有“情节”分类的关键词(用数据集训练的则为97.8%)。上图为一些例子。
其他实验就不一一叙述,可以说做得非常充分,不难看出为什么老兄之前会对夸大的文章那么愤怒。
其他实验就不一一叙述,可以说做得非常充分,不难看出为什么老兄之前会对夸大的文章那么愤怒。
SAM: Semantic Attribute Modulated Language Modeling
https://arxiv.org/abs/1707.00117
Wenbo Hu, Lifeng Hua, Lei Li, Tian Wang, Jun Zhu, Hang Su, Bo Zhang
https://arxiv.org/abs/1707.00117
Wenbo Hu, Lifeng Hua, Lei Li, Tian Wang, Jun Zhu, Hang Su, Bo Zhang
Vintage NLP for Work
SAM: Semantic Attribute Modulated Language Modeling https://arxiv.org/abs/1707.00117 Wenbo Hu, Lifeng Hua, Lei Li, Tian Wang, Jun Zhu, Hang Su, Bo Zhang
本文来自清华和今日头条,顾名思义他们希望能把新闻的属性带入语言模型中。
一篇新闻除了正文以外,类型、标题、作者等等都可以看成属性。正常的语言模型只知道前面的词,要预测后一个词,而他们将这些属性糅合成一个上下文向量,加入到模型中,获得了更低的困惑度。
一篇新闻除了正文以外,类型、标题、作者等等都可以看成属性。正常的语言模型只知道前面的词,要预测后一个词,而他们将这些属性糅合成一个上下文向量,加入到模型中,获得了更低的困惑度。
Vintage NLP for Work
本文来自清华和今日头条,顾名思义他们希望能把新闻的属性带入语言模型中。 一篇新闻除了正文以外,类型、标题、作者等等都可以看成属性。正常的语言模型只知道前面的词,要预测后一个词,而他们将这些属性糅合成一个上下文向量,加入到模型中,获得了更低的困惑度。
模型相对简单,标题属性是一个词序列,因此用一个 RNN 和 self-attention 获得一个表示,而其他属性则直接用 one-hot 输入乘一个表示矩阵得到一个对应表示。然后对不同属性再用一个 attention 求和,传给最后的 GRU 语言模型做预测。
Vintage NLP for Work
模型相对简单,标题属性是一个词序列,因此用一个 RNN 和 self-attention 获得一个表示,而其他属性则直接用 one-hot 输入乘一个表示矩阵得到一个对应表示。然后对不同属性再用一个 attention 求和,传给最后的 GRU 语言模型做预测。
实验效果上也是在所有属性都用上以后最好,-State 表示用标题 RNN 的最后一个隐向量初始化 RNNLM。
Vintage NLP for Work
实验效果上也是在所有属性都用上以后最好,-State 表示用标题 RNN 的最后一个隐向量初始化 RNNLM。
生成效果上他们只做了一个中文流行音乐歌词数据集上的实验,保持标题相同而作者改为了另一个乐队名以后,生成的内容更贴近新乐队的风格,从而演示了他们的模型能被属性变化所控制。
Automatic Generation of Natural Language Explanations
https://arxiv.org/abs/1707.01561
Felipe Costa, Sixun Ouyang, Peter Dolog, Aonghus Lawlor
https://arxiv.org/abs/1707.01561
Felipe Costa, Sixun Ouyang, Peter Dolog, Aonghus Lawlor
Vintage NLP for Work
Automatic Generation of Natural Language Explanations https://arxiv.org/abs/1707.01561 Felipe Costa, Sixun Ouyang, Peter Dolog, Aonghus Lawlor
这篇文章与推荐有关,发在一个今年的推荐系统 workshop 上。
他们的出发点叙述得并不那么让人信服,但大体来说是为了让用户更容易接受推荐系统的结果。
光推荐商品给用户是不够的,更多人希望看到一条解释。解释最好是清楚而令人信服的。最令人信服的莫过于已经购买过的人的评论了。因此,他们利用已有评论和打分属性训练一个生成模型。
然而,个人认为他们这个东西不该叫解释,生成的就是个促销的句子,完全没有解释推荐系统为什么给用户推某个商品。
回过头来看上图他们的模型,以前的模型只是把一个得分拼到输入里而已,他们……恩,他们拼了多个得分,因为他们爬的那个啤酒网站支持用户在多个维度上给商品打分。
他们的出发点叙述得并不那么让人信服,但大体来说是为了让用户更容易接受推荐系统的结果。
光推荐商品给用户是不够的,更多人希望看到一条解释。解释最好是清楚而令人信服的。最令人信服的莫过于已经购买过的人的评论了。因此,他们利用已有评论和打分属性训练一个生成模型。
然而,个人认为他们这个东西不该叫解释,生成的就是个促销的句子,完全没有解释推荐系统为什么给用户推某个商品。
回过头来看上图他们的模型,以前的模型只是把一个得分拼到输入里而已,他们……恩,他们拼了多个得分,因为他们爬的那个啤酒网站支持用户在多个维度上给商品打分。
Vintage NLP for Work
这篇文章与推荐有关,发在一个今年的推荐系统 workshop 上。 他们的出发点叙述得并不那么让人信服,但大体来说是为了让用户更容易接受推荐系统的结果。 光推荐商品给用户是不够的,更多人希望看到一条解释。解释最好是清楚而令人信服的。最令人信服的莫过于已经购买过的人的评论了。因此,他们利用已有评论和打分属性训练一个生成模型。 然而,个人认为他们这个东西不该叫解释,生成的就是个促销的句子,完全没有解释推荐系统为什么给用户推某个商品。 回过头来看上图他们的模型,以前的模型只是把一个得分拼到输入里而已,他们……
关于自动化指标方面,他们选了8个阅读性指标来跑,它们可以把句子的难度对应到适合几年级阅读的数字上。大体上就是用文字的音节数、词数、句子数等等特征做一个复杂的初等运算得到的。具体可以参考 wikipedia Readability_test。图中他们生成句子的阅读难度除以标准句子,难度基本相当(只有FRE稍难)
Vintage NLP for Work
关于自动化指标方面,他们选了8个阅读性指标来跑,它们可以把句子的难度对应到适合几年级阅读的数字上。大体上就是用文字的音节数、词数、句子数等等特征做一个复杂的初等运算得到的。具体可以参考 wikipedia Readability_test。图中他们生成句子的阅读难度除以标准句子,难度基本相当(只有FRE稍难)
另一个实验是生成效果。选择了某个特定用户和商品的评价后,alpha 为权重,取1时评论接近用户的平均,取0时接近商品的平均水平。
Vintage NLP for Work
另一个实验是生成效果。选择了某个特定用户和商品的评价后,alpha 为权重,取1时评论接近用户的平均,取0时接近商品的平均水平。
这篇文章的问题主要有这样三点:
- 出发点不清,前面已经说过了
- 阅读性指标几乎没有什么用处,生成的单词难度和标准句子相当,就说明生成的句子好吗?
- 缺少比较实验,甚至连生成句子的 perplexity 都没有计算,既没有 baseline,也没有质量的评价,这也是最严重的问题,甚至在国内的会议文章都不太会出现
- bonus: 就一个 RNN 能分三个模块凑两页写也是很有水平的
- 出发点不清,前面已经说过了
- 阅读性指标几乎没有什么用处,生成的单词难度和标准句子相当,就说明生成的句子好吗?
- 缺少比较实验,甚至连生成句子的 perplexity 都没有计算,既没有 baseline,也没有质量的评价,这也是最严重的问题,甚至在国内的会议文章都不太会出现
- bonus: 就一个 RNN 能分三个模块凑两页写也是很有水平的
Adversarial Examples for Evaluating Reading Comprehension Systems
https://arxiv.org/abs/1707.07328
Robin Jia, Percy Liang
https://arxiv.org/abs/1707.07328
Robin Jia, Percy Liang
Vintage NLP for Work
Adversarial Examples for Evaluating Reading Comprehension Systems https://arxiv.org/abs/1707.07328 Robin Jia, Percy Liang
本文来自斯坦福 Percy Liang 组,发表在 EMNLP2017 上。去年斯坦福公布了 SQuAD 阅读理解数据集以后,各种各样的模型如雨后春笋般出现,在 SQuAD 主页上能看到当前最好的排名(当前第一名为哈工大科大讯飞联合实验室77%)。
然而,本文就想测试一下这些模型是否真正做到了“阅读理解”。在图像任务中常会加入一些人看不出来的扰动,同时保持标签不变,以此来看看模型是否会被这些扰动欺骗。然而在文字中,哪怕只是改一个词,也可能让段落的含义发生巨大变化。正确的类比是对句子做复述(paraphrase)(Madnani and Dorr, 2010),事实上这很难做到。
他们没有尝试费力地寻找保持语义不变扰动,而是通过增加干扰句子来创建新样本。
因此从本质上来说,图像加噪声是在检查模型是否对难以察觉的噪音“过度敏感”,而他们的工作则是检查模型是否“过度稳定”,即不能识别出毫无相关词的干扰句子。
如上图,加入干扰句之前,一个相当好的模型可以得出正确答案,而加入后答案就被干扰句带偏了。
然而,本文就想测试一下这些模型是否真正做到了“阅读理解”。在图像任务中常会加入一些人看不出来的扰动,同时保持标签不变,以此来看看模型是否会被这些扰动欺骗。然而在文字中,哪怕只是改一个词,也可能让段落的含义发生巨大变化。正确的类比是对句子做复述(paraphrase)(Madnani and Dorr, 2010),事实上这很难做到。
他们没有尝试费力地寻找保持语义不变扰动,而是通过增加干扰句子来创建新样本。
因此从本质上来说,图像加噪声是在检查模型是否对难以察觉的噪音“过度敏感”,而他们的工作则是检查模型是否“过度稳定”,即不能识别出毫无相关词的干扰句子。
如上图,加入干扰句之前,一个相当好的模型可以得出正确答案,而加入后答案就被干扰句带偏了。
Vintage NLP for Work
本文来自斯坦福 Percy Liang 组,发表在 EMNLP2017 上。去年斯坦福公布了 SQuAD 阅读理解数据集以后,各种各样的模型如雨后春笋般出现,在 SQuAD 主页上能看到当前最好的排名(当前第一名为哈工大科大讯飞联合实验室77%)。 然而,本文就想测试一下这些模型是否真正做到了“阅读理解”。在图像任务中常会加入一些人看不出来的扰动,同时保持标签不变,以此来看看模型是否会被这些扰动欺骗。然而在文字中,哪怕只是改一个词,也可能让段落的含义发生巨大变化。正确的类比是对句子做复述(paraphrase)(Madnani…
他们总共提出了 AddSent 和 AddAny 两种加句子的方法,顾名思义一个是构造句子加到末尾,一个是加随机词。
Vintage NLP for Work
他们总共提出了 AddSent 和 AddAny 两种加句子的方法,顾名思义一个是构造句子加到末尾,一个是加随机词。
先简单描述一下步骤比较繁琐的 AddSent 是怎么做的。
首先从问题句出发,他们依据 WordNet 用反义词替换了名词和形容词,用 GloVe 词向量和词性(依据宾州树库)替换了命名实体和数字。如果没替换就保持原句
其次他们再生成一些和原答案类型相同的假答案。类型是用命名实体和词性定义的26个手工类型(比如人名、地名、日期、名词短语等),然后为26个类型手工对应一个假答案。然后他们计算原问题答案的类型(没说怎么做的),再返回相应的假答案。
然后用人肉写的50多个规则(利用成分句法树),把假问题和假答案合并转为陈述句。为避免生成不合语法或与原答案矛盾的句子,他们又用亚马逊的众包平台让人工修改。然后他们把人工审核的句子(每个原句由5个人修改得5份)交给待评测模型跑,选出一个得分最低的来。
因此他们还设计了另一类方案 AddOneSent,即随机选一个人工审核的句子加到末尾。
另一个 AddAny 方法就比较简单
随机从1000个高频词采样20个,加上所有原问句的词,再选出 d(=5/10) 个来。每选一个词都把假句子加到原文后用模型再跑一遍得到答案分布,然后选出F1值最低的来。
由于这样随机生成的句子基本是胡说八道,他们就没有再做语法检查和正确性检查了。
AddAny 也有一个只从高频词采样(不包括问句里的词)的方案变种 AddCommon。
首先从问题句出发,他们依据 WordNet 用反义词替换了名词和形容词,用 GloVe 词向量和词性(依据宾州树库)替换了命名实体和数字。如果没替换就保持原句
其次他们再生成一些和原答案类型相同的假答案。类型是用命名实体和词性定义的26个手工类型(比如人名、地名、日期、名词短语等),然后为26个类型手工对应一个假答案。然后他们计算原问题答案的类型(没说怎么做的),再返回相应的假答案。
然后用人肉写的50多个规则(利用成分句法树),把假问题和假答案合并转为陈述句。为避免生成不合语法或与原答案矛盾的句子,他们又用亚马逊的众包平台让人工修改。然后他们把人工审核的句子(每个原句由5个人修改得5份)交给待评测模型跑,选出一个得分最低的来。
因此他们还设计了另一类方案 AddOneSent,即随机选一个人工审核的句子加到末尾。
另一个 AddAny 方法就比较简单
随机从1000个高频词采样20个,加上所有原问句的词,再选出 d(=5/10) 个来。每选一个词都把假句子加到原文后用模型再跑一遍得到答案分布,然后选出F1值最低的来。
由于这样随机生成的句子基本是胡说八道,他们就没有再做语法检查和正确性检查了。
AddAny 也有一个只从高频词采样(不包括问句里的词)的方案变种 AddCommon。
Vintage NLP for Work
先简单描述一下步骤比较繁琐的 AddSent 是怎么做的。 首先从问题句出发,他们依据 WordNet 用反义词替换了名词和形容词,用 GloVe 词向量和词性(依据宾州树库)替换了命名实体和数字。如果没替换就保持原句 其次他们再生成一些和原答案类型相同的假答案。类型是用命名实体和词性定义的26个手工类型(比如人名、地名、日期、名词短语等),然后为26个类型手工对应一个假答案。然后他们计算原问题答案的类型(没说怎么做的),再返回相应的假答案。 然后用人肉写的50多个规则(利用成分句法树),把假问题和…
最后的答案当然也是狂打深度模型的脸,原本可以做80%(F1值)的模型,仅仅在段落末尾加入一个句子,问题不变,就让模型性能降到30%甚至个位数。而另一个实验显示(表没有在这里贴截图),让人去做同样的问题,原本可以做到92%,而加入干扰句子后也依然能做到89%(AddOneSent 方案)。
**为什么会这样呢?(明明是我先)**
**为什么会这样呢?(明明是我先)**
Vintage NLP for Work
最后的答案当然也是狂打深度模型的脸,原本可以做80%(F1值)的模型,仅仅在段落末尾加入一个句子,问题不变,就让模型性能降到30%甚至个位数。而另一个实验显示(表没有在这里贴截图),让人去做同样的问题,原本可以做到92%,而加入干扰句子后也依然能做到89%(AddOneSent 方案)。 **为什么会这样呢?(明明是我先)**
他们猜测,只要问句里和原文中 n-gram 重合度比较高时,模型才能做对。另外短问句上模型也能做对,因为改了短问句的词后句子可能就毫不相关了,因此加进去不会和问题有重合词。
Vintage NLP for Work
他们猜测,只要问句里和原文中 n-gram 重合度比较高时,模型才能做对。另外短问句上模型也能做对,因为改了短问句的词后句子可能就毫不相关了,因此加进去不会和问题有重合词。
最后,让模型在加入了对抗句的语料上训练,模型性能貌似恢复了正常。然而,新加入一个方案 AddSentMod,一方面把那26个类型对应的假答案再换一下(比如人名和时间都改一改),然后对抗句加到段落开头而不是结尾。这时模型又打回了原形。于是猜测它们刚才只是学会了忽略最后一句话而已。