AIPM要知道的NLP知识(1):词的表达

编辑导语:NLP为Neuro-Linguistic Programming的缩写 , 是研究思维、语言和行为中的规律;这是一种对优秀(excellence)进行编码和复制的方式 , 它能使你不断达到你和你的公司想要的结果;本文是作者关于NLP知识中词的表达的分享 , 我们一起来看一下 。
AIPM要知道的NLP知识(1):词的表达文章插图
个人认为pm懂一点技术好处是大大的有 。
总结这个系列 , 把NLP相关的常见模型进行了梳理 , 分为词的表达、RNN、seq2seq、transformer和bert五个部分 。
基本的想法是重点理解模型是什么(what)、为什么要用这种模型(why)以及哪些场景中可以用这种模型(where) , 至于如何实现模型(how)可以留给RD小哥哥们 。
一、词的表达要知道计算机是看不懂人类语言的 , 要想让机器理解语言、实现自然语言处理 , 第一步就是把自然语言转化成计算机语言——数字 。
由于词是人类语言表达时的一种基本单位(当然更细的单位是字或者字母) , NLP处理的时候很自然的想要用一组特定的数字代表一个特定的词 , 这就是词的表达 , 把这些表示词的数字连起来就可以表达一句话、一篇文章了 。
这一part里有很多常见的名词 , distributed representation、word embedding、word2vec等等 , 它们的关系大概是这样的:
AIPM要知道的NLP知识(1):词的表达文章插图
1. one-hot representation v.s. distributed representation
表达方式 , 我觉得就是自然语言到机器语言怎么转化的一套规则;比如“我”这个词转化到机器语言应该用“1”还是“100”表示呢?而且机器语言中代表“我”的这个数还不能和代表其他词的数重复吧 , 必须是一个唯一的id 。
顺着id这个思路 , 假设我们的词典收录了10个词 , 那么我们就给词典里的每一个词分配一个唯一的id;词表示的时候用一个和字典一样长的向量表示 , 这个向量里只有id这一位为1 , 其他位都为0;比如说abandon这个词的id是1 , 那么就表示成abandon=[1 0 0 0 0 0 0 0 0 0] , 这就是one-hot representation 。
这种表示好理解 , 但是也有问题:
问题一:向量会随着字典变大而变大 。
很明显如果我的词典有100000个词的话 , 每一个词都要用长度100000的向量表示;如果一句话有20个词 , 那么就是一个100000*20的矩阵了 , 按这种操作基本就走远了 。
另外一个问题是这种表示不能体现语义的相关性 。
比如香蕉和苹果在人看来是非常类似的 , 但是用one-hot表示香蕉可能是[1 , 0 , 0 , 0 , 0] , 苹果可能是[0 , 0 , 1 , 0 , 0] , 之间没有任何相关性;这样的话如果我们用“我吃了香蕉”训练模型 , 结果模型可能并不能理解“我吃了苹果” , 泛化能力就很差 。
【AIPM要知道的NLP知识(1):词的表达】于是机智的大佬们提出了一个假说 , 就是distributed hypothesis:词的语义由其上下文决定 。
基于这种假说生成的表示就叫做distributed representation , 用在词表示时也就是word embedding , 中文名有词向量、词嵌入;所以distributed representation≈word embedding , 因为现阶段主流的nlp处理大都是基于词的 , 当然也有对字、句子、甚至文章进行embedding的 , 所以不能说完全完全相等 。
至于具体如何基于这种假说实现词表示 , 根据模型不同可以分成基于矩阵(GloVe)、基于聚类、基于神经网络(NNLM、Word2Vec等)的方法 。
2. word embedding个人理解 , 从字面意思上看word embedding就是把一个one-hot这样的稀疏矩阵映射成一个更稠密的矩阵;比如上边栗子中abandon用one-hot(词典大小为10)表示为[1 0 0 0 0 0 0 0 0 0];但word embedding可能用维度为2的向量[0.4 0.5]就可以表示;解决了前边说的one-hot的维度过大问题 , 还增大了信息熵 , 所以word embedding表示信息的效率要高于one-hot 。
但词向量这个名字没有体现出它表示语义的本质 , 所以第一次看到很容易会不知所云;为了说明word embedding可以体现语义 , 这时候就可以搬出著名的queen、king、woman、man的栗子了 。
(图来自Andrew Ng deeplearning.ai)
AIPM要知道的NLP知识(1):词的表达文章插图
上图是通过训练得出的词向量 , man=[-1 0.01 0.03 0.09] , woman=[1 0.02 0.02 0.01] , king=[-0.95 0.93 0.70 0.02] , queen=[0.97 0.95 0.69 0.01] 。
矩阵相减man-woman=[-2 -0.01 0.01 0.08] , king-queen=[-1.92 -0.02 0.01 0.01] , 两个差值非常相近 , 或者说两个向量的夹角很小 , 可以理解为man和woman之间的关系与king和queen之间非常相近;而apple-orange=[-0.01 -0.01 0.05 -0.02]就和man-woman、king-queen相差很大 。