
自然语言处理面试题 有哪些文本表示模型,它们各有什么优缺点? 词袋模型与N-gram 最基本的文本表示模型是词袋模型(Bag of Words)。基本思想是把每篇文章看成一袋子词,并忽略每个词出现的顺序。具体来看:将整段文本表示成一个长向量,每一维代表一个单词。该维对应的权重代表这个词在原文章中的重要程度。 常用TF-IDF计算权重。公式为: 其中TF(t,d)为单词t在文档中出现的频率,IDF(t)是逆文档频率,用来衡量单词t对表达语义所起的重要性。表示为IDF(t)=log文章总数包含单词t的文章总数+1IDF(t)=log\frac{文章总数}{包含单词t的文章总数+1}IDF(t)=log包含单词t的文章总数+1文章总数?
直观的解释是如果一个单词在非常多的文章里面都出现,那么它可能是一个比较通用的词汇,对于区分某篇文章特殊语义的贡献较小,因此对权重做一定惩罚。 缺点 单词程度的划分有时候并不是一个好的做法。比如Natural Language Processing一词,单个单词拆分的语义与三个词连续出现的语义并不相同。 改进 通常可将连续出现的N个单词构成的词组作为一个特征放到向量表示中去。构成N-gram模型 主题模型 主题模型用于从文本库中发现有代表性的主题(得到每个主题上的词的分布特性),并且能够计算出每篇文章的主题分布。词嵌入与深度学习模型 词嵌入是一类将词向量化的模型的统称,核心思想是将每个单词都映射成地位空间上的一个稠密向量。低维空间上的每一个单词也可以看做是一个隐含的主题,只不过不像主题模型中那么明显。 对有N个单词的文档,词嵌入用K维向量映射单词,可以得到一个的矩阵来表示这篇文档。但是还需要抽象出更高层的特征,通常使用深度学习来得到更高维的特征。
Word2vec是如何工作的?它和LDA有什么区别和联系? word2vec
CBOW目标是根据上下文出现的单词预测当前词的生成概率。而Skip-gram根据当前词预测上下文各词的生成概率。[图片上传失败...(image-50c410-1583640689140)]其中w(t)w(t)w(t)是当前所关注的词,w(t?2),w(t?1),w(t+1),w(t+2)w(t-2),w(t-1),w(t+1),w(t+2)w(t?2),w(t?1),w(t+1),w(t+2)是上下文单词,这里前后滑动窗口大小均设为2。 CBOW和skip-gram都可以表示为有输入层、映射层、输出层组成的浅层神经网络。 输入层中每个单词是由独热编码表示。所有词均表示一个N维向量,N为词汇表中单词的总数。在向量中,每个单词对应的维度为1,其余维度为0。 在映射层中,K个隐含单元的值可以由N维输入向量以及连接输入和隐含单元的NK维权重矩阵计算得到。 输出层向量的值可以由隐含层向量(K维),以及连接隐含层和输出层之间的KN维权重矩阵计算得到。输出层也是一个N维向量,每一维与词汇表中的一个单词对应。最后对输出层向量应用Softmax函数,可以得到每个单词的生成概率。 接下来需要训练神经网络权重,使得所有单词的整体生成概率最大化。共有两大参数:从输入层到隐含层的一个维度为NK的权重矩阵,从隐含层到输出层的一个维度为KN的权重矩阵。学习权重可以使用BP算法实现。 训练得到维度为N * K和K * N的两个权重矩阵之后,可以选择其中一个作为N个词的K维向量表示。 但是由于Softmax激活函数存在归一化项的缘故,推导出来的迭代公式需要对词汇表中的所有单词进行遍历,使得迭代过程非常缓慢。由此产生了Hierarchical Softmax和Negative Sampling两种方法。 word2vec与LDA区别首先,LDA是按照文档中单词的共现关系来对单词按照主题聚类,也可以理解为对“文档-单词”矩阵进行分解,得到“文档-主题”和“主题-单词”两个概率分布。而word2vec实际上是对“上下文-单词”矩阵进行学习,其中上下文由周围几个单词组成,由此学到的词向量更多融入了上下文特征。 主题模型和词嵌入两类方法最大的不同在于模型本身。主题模型是一种基于概率图模型的生成式模型。其似然函数可以写为若干条件概率连乘的形式,其中包含需要推测的隐含变量(即主题)词嵌入模型一般表示为神经网络的形式,似然函数定义在网络的输出之上。需要学习网络的权重来得到单词的稠密向量表示。
标题回顾:nlp面试题大全
回顶部