dedecms 股票网站模板,个人网页制作方法,学设计哪个网站好,深圳做网站公司有哪些地方文本是一类非常重要的非结构化数据#xff0c;如何表示文本数据一直是机器学习领域的一个重要研究方向。那么有哪些文本表示模型#xff1f;以及它们各有什么优缺点#xff1f;
1. 常见的文本表示模型
1.1. 词袋模型和N-gram模型
最基础的文本表示模型是词袋模型。顾名思…文本是一类非常重要的非结构化数据如何表示文本数据一直是机器学习领域的一个重要研究方向。那么有哪些文本表示模型以及它们各有什么优缺点
1. 常见的文本表示模型
1.1. 词袋模型和N-gram模型
最基础的文本表示模型是词袋模型。顾名思义就是将每篇文章看成一袋子的词并忽略每个词出现的顺序。具体地说就是将整段文本以词为单位切分开然后每篇文章可以表示成一个长向量向量中的每一维代表一个单词而该维对应的权重则反映了这个词在原文章中的重要程度。常用 TF-IDF 来计算权重公式为 其中 为单词 在文档 中出现的频率 是逆文档频率用来衡量单词 对表达语义所起的重要性表示为 直观的解释是如果一个单词在非常多的文章里面都出现那么他可能是一个比较通用的词汇对于区分某篇文章特殊语义的贡献较小因此对权重做一定惩罚也就是让权重变小。
将文章进行单词级别的划分有时候并不是一种好的做法比如英文中的 natural language processing自然语言处理一词如果将 naturallanguageprocessing 这3个词拆分开来所表达的含义与三个词连续出现时大相径庭。通常可以将连续出现的 n 个词nN组成的词组N-gram也作为一个单独的特征放到向量表中去构成 N-gram 模型。另外同一个词可能有多种词性变化却具有相似的含义。在实际应用中一般会对单词进行词干抽取Word Stemming处理即将不同词性的单词统一成为同一词干的形式。
1.2. 主题模型
主题模型用于从文本库中发现有代表性的主题得到每个主题上面词的分布特性并且能够计算出每篇文章的主题分布。关于主题模型后续会出文章详细展开这里不作具体说明。
1.3. 词嵌入与深度学习模型
词嵌入是一类将词向量化的模型的统称核心思想是将每个词都映射成低维空间通常 K50~300维上的一个稠密向量Dense Vector。K维空间的每一维也可以看作一个隐含的主题只不过不像主题模型中的主题那样直观。
由于词嵌入将每个词映射成一个K维的向量如果一篇文档有N个词就可以用一个N×K维的矩阵来表示这篇文档但是这样的表示过于底层在实际应用中如果仅仅把这个矩阵作为原文本的表示特征输入到机器学习模型中通常很难得到令人满意的结果。因此还需要在此基础之上加工出更高层的特征。
在传统的浅层机器学习模型中一个好的特征工程往往可以带来算法效果的显著提升
而深度学习模型正好为我们提供了一种自动地进行特征工程的方式模型中的每个隐层都可以认为对应着不同抽象层次的特征。
从这个角度来讲深度学习模型能够打败浅层模型也就顺理成章了。卷积神经网络和循环神经网络的结构在文本表示中取得了很好的效果主要是由于他们能够更好地对文本进行建模抽取出一些高层的语义特征。与全连接的网络结构相比卷积神经网络和循环神经网络一方面很好地抓住了文本的特性另一方面又减少了网络中待学习的参数提高了训练速度并且降低了过拟合的风险 2. Word2Vec
2.1. CBOW 和 Skip-gram
谷歌2013年提出的 Word2Vec 是目前最常用的词嵌入模型之一。Word2Vec 实际是一种浅层的神经网络模型它有两种网络结构分别是 CBOWContinues Bag of Words和 Skip-gram。
CBOW的目标是根据上下文出现的词语来预测当前词的生成概率如 图 1.3a所示Skip-gram 是根据当前词来预测上下文中各词的生成概率如 图 1.3b所示。 其中 是当前所关注的词、、、 是上下文中出现的词。这里前后滑动窗口大小均设为 2。
CBOW 和 Skip-gram 都可以表示成由输入层Input、映射层Projection和输出层Output组成的神经网络。
输入层中的每个词由独热编码方式表示即所有词均表示成一个 N 维向量其中 N 为词汇表中单词的总数。在向量中每个词都将与之对应的维度置为 1其余维度的值均设为 0。
在映射层又称为隐含层中K 个隐含单元Hidden Units的取值可以由 N 维输入向量以及连接输入和隐含单元之间的 N×K 维权重矩阵计算得到。在CBOW中还需要将各个输入词所计算出的单元求和。
同理输出层向量的值可以通过隐含层向量K 维以及连接隐含层和输出层之间的 K×N 维权重矩阵计算得到。输出层也是一个 N 维向量每维与词汇表中的一个单词相对应。最后对输出层向量应用 Softmax 激活函数可以计算出每个单词的生成概率。Softmax 激活函数的定义为 其中 代表 N 维的原始输出向量 为在原始输出向量中与单词 所对应维度的取值。
接下来的任务就是训练神经网络的权重使得语料库中所有单词的整体生成概率最大化。从输入层到隐含层需要一个维度为 N×K 的权重矩阵从隐含层到输出层有需要一个维度为 K×N 的权重矩阵学习权重可以用反向传播算法实现每次迭代时将权重沿梯度更优的方向进行一小步更新但是由于 Softmax 激活函数中存在归一化项的缘故推导出来的迭代公式需要对词汇表中的所有单词进行遍历使得每次迭代过程非常缓慢由此产生了 Hierarchical Softmax 和 Negative Sampling 两种改进方法有兴趣的读者可以参考 Word2Vec 的原论文Mikolov T, Chen K, Corrado G, et al. Efficient estimation of word representations in vector space[J]. Computer Science, 2013.。训练得到维度为 N×K 和 K×N 的两个权重矩阵之后可以选择其中一个作为N个词的K维向量表示。
2.2. Word2Vec与LDA的区别和联系
联系首先LDA是利用文档中单词的共现关系来对单词按主题聚类也可以理解为对“文档-单词”矩阵进行分解得到“文档-主题”和“主题-单词”两个概率分布。
而 Word2Vec 其实是对“上下文-单词”矩阵进行学习其中上下文由周围的几个单词组成由此得到的词向量表示更多地融入了上下文共现的特征。也就是说如果两个单词所对应的 Word2Vec 向量相似度较高那么他们很可能经常在同样的上下文中出现。
需要说明的是上述分析的是 LDA 与 Word2Vec 的不同不应该作为主题模型和词嵌入两类方法的主要差异。主题模型通过一定的结构调增可以基于“上下文-单词”矩阵进行主题推理。同样地词嵌入方法也可以根据“文档-单词”矩阵学习出词的隐含向量表示。
区别主题模型和词嵌入两类方法最大的不同其实在于模型本身主题模型是一种基于概率图模型的生成式模型其似然函数可以写成若干条件概率连乘的形式其中包括需要推测的隐含变量即主题而词嵌入模型一般表达为神经网络的形式似然函数定义在网络的输出之上需要通过学习网络的权重以得到单词的稠密向量表示。