此篇博客是关于一篇发表在ACL2018上的论文《Mining Cross-Cultural Differences and Similarities in Social Media》的阅读笔记。该博客主要用于叙述个人对于所读论文的理解,如有不对之处,欢迎各位批评指正!
在展开原文之前,我们首先需要了解在原文中出现的一些英语术语的含义:
culture:这里的culture不单纯指“文化”的含义,在本文中,它是以“国家”作为“culture不同”的标准。也就是说,英国和美国是两个culture,二者之间就可以看作是cross-cultural。但它们不是cross-lingual的,因为二者说的都是英语。但假设我们以中国和英国作为例子,那么二者之间既是cross-cultural的,又是cross-lingual的。本文探讨的就是基于后面这些情况的一些问题。
term:普通单词、命名实体和俚语都算作是term,本文重点讨论的是后两者。
简述:
1. 对于相同的一个命名实体(named entity),不同国家、不同语言的认往往能够有不同的见解和认识:
以上图为例,画红框处所表示的命名实体是“名古屋”(Nagoya)。由于一些历史原因,中国人对名古屋这个地方非常不满,因此评价会倾向于负面。而对于英国人而言,名古屋是他们旅游的一大去处,因此他们对于该地的评价则非常正面。在cross-cultural且cross-lingual的情景下,不同人们对同样一个named entity有着极为不同的认知,因此这提示着作者去深入探究这种差异性。
2. 在翻译的时候,我们可能会遇到将某一国的俚语(slang term)翻译成另一国语言的问题。比如中文中的“浮云”“二百五”,它们具有自己的字面意思,但在特定的语境下却有着完全不同的意思。然而现有的翻译系统(Google, Bing, Baidu)在处理slang term的时候,其效果常常无法使人满意,因此本文作者同时也在考虑如何可以将一个国家的一种俚语翻译成另一国家所用语言的term。形式化而言,本研究是在给定上下文时,探索在已知一种语言下某一slang term的前提下,如何自动得到另一种语言的下该俚语的表达。
任务:
针对如上两个问题,作者提出了两个任务:
1. 挖掘相同命名实体之间的跨文化差异。
2. 寻找跨文化俚语之间的相似性。举例而言,我们有一个中文的slang term “浮云”,然后我们需要找英文中相应的解释。
而如上两个问题都涉及的一个核心方面是:如何对不同语言及文化的terms之间相似性(或差异性)进行计算?
那么如何去计算?一个直观的想法是,对于两个不同语言下的单词,我们可以首先把二者变成相应的vector形式,然后再利用一些计算相似度的方法(如余弦相似度)来计算二者之间的。但问题在于,一般意义下我们得到的vector space是基于某一特定语言的,那么对于两种语言,它们的单词所在的vector space是不同的,也就无法直接进行相似性的计算。因此,作者提出了一种称为SocVec的vector space,其目的是在将两种语言下的vector所在的space映射到同一个space下(称为social space),然后对二者直接进行相似度计算。
SocVec:
为什么是“social” vector?根据一些文献的研究表明,文化差异与人们情绪和观点的表达相关,因此本文作者希望更好地capture到这些方面的内容,从而构建文化间差异的模型。
在建立模型之前,首先要收集来自于3方面的data:
(1)英文的和中文的语料库
(2)英文到中文的双语词典(BL)
(3)英文的social word vocabulary(ESV)和中文的social word vocabulary(CSV)
构建SocVec的流程如下图所示:
Step1:使用中文和英文的corpus分别train二者语言下单词的word vectors(EnVec和CnVec)。
Step2:利用BL,ESV和CSV建立bilingual social lexicon(BSL)
Step3:通过BSL将原先的EnVec和CnVec统一映射到SocVec这个空间中,于是就得到了两个comparable的word vectors
Step1的方法有很多,因此不作过多阐述。
至于Step2,其核心问题是:如何构建BSL?
BSL的构建如上图所示。本文作者首先通过BL,将ESV中的每一个英文单词翻译成其中文的形式。但由于一个英文单词往往有好几种中文的翻译,因此翻译的结果会对应于一个由各种中文翻译结果词组成的集合。但实际上有些中文的翻译结果可能更常见,而有些中文的翻译结果可能比较少见。对于这种情况,作者将其表达为概率分布的形式:即越常见的翻译结果就给它越高的概率,在本文中被称为“confidence score”。
然后,我们从翻译的这些结果中滤掉非social word(通过CSV进行过滤操作)。于是我们就得到了每一个英文social word和由其翻译而来的中文social words的集合(translation set)。
最后是采用这个translation set,产生与每一个English social word所相对应的Chinese pseudo-word,这个pseudo-word可以是某一个真实的Chinese word,或者是在这个translation set中的一些Chinese word的集合。
如何产生pseudo-word?作者提出了4种generator:
(1)Max:把在translation set中的所有Chinese word的词向量都排出来,针对每一个维度,取其中最大的那个值,最终组成了一个向量,作为pseudo-word
(2)Avg:把set中的词向量加起来再求平均
(3)WAvg:根据confidence score,对set中单词的各个vector进行加权求和。
(4)Top: 直接把confidence score最高的那个单词所对应的vector作为结果。
于是BSL就建立完毕了。
现在的问题在于如何构建从monolingual词向量到SocVec space的映射:
由于我们有了BSL,所以可以用当前待研究的英文单词的vector与BSL中所有的英文social word的vector进行余弦相似度的计算,然后得到当前英文单词在SocVec中的一维。遍历BSL中所有英文social word的vector,即得到当前英文单词最终在SocVec中的表示。对于中文单词,也是同理,只不过此时用于计算相似度的是,中文单词和BSL中的各个Chinese pseudo-word vector。
到这里,这篇文章中核心的主要的任务和核心的模型就介绍完了,如有必要,之后会对文章任务中的具体做法和实验结果进行补充。
总结
SocVec确实是较为新颖并且简单的方式,将不同language下的word vectors映射到同一个空间中,使二者之间便于比较(comparable)。但在第一个任务相关的实验中,个人认为针对该任务的qualitative analysis做的却有一些不充分,因为严谨来说,此处不仅要展示那些不相似单词不相似的原因,也要展示那些相似单词为何相似的原因。