链接中的文章写的都非常好,在这里就简略记录一下每篇文章写了什么以及一些想法。
1、语义分析的一些方法(上)
http://dataunion.org/10748.html
文章首先介绍了文本基本处理,包括分词、语言模型、Team weighting等。
分词方法
- 基于字符串匹配的分词方法。
-
全切分方法。它首先切分出与词库匹配的所有可能的词,再运用统计语言模型决定最优的切分结果。
-
由字构词的分词方法。可以理解为字的分类问题,将每个字分为词的开头Begin、中间Inside、结尾End或单字成词Single,然后维特比搜送总词图的最大概率路径。
语言模型
- N-gram
例如2-gram
LOOK 3
LOOK THE 2
LOOK IT 1
PREPARING 1
PREPARING YOUR 1
THE 9
THE PEPSY 1
统计每两个单词之间出现的次数,进而统计出出现概率。它只考虑了词的位置关系,没有考虑词之间的相似度,词语法和词语义,并且还存在数据稀疏(因为是取n个单词的排列,很多排列情况是没有出现的)的问题。
-
神经网络语言模型
在n-gram的基础上将n个词对应的向量组合成一个更长的向量输出其出现概率
目前效果最好的是RNN网络,因为它可以较好地考虑到前后相关性。文章也介绍了一下LSTM。
说到这里想起上一篇提到的Word2Vec,是训练语言模型得到的副产物,那么他是怎么训练的呢?这就涉及到第二篇文章了。
关键词
最后一部分是寻找每个词的重要程度。包括TF-IDF、Okapi等方法。
2、 Word2Vec&Doc2Vec
Ref:
https://blog.csdn.net/mpk_no1/article/details/72458003
语义分析的一些方法(中篇)
pythonNLP-文本相似度计算-Demo
单词级别的表示包括Word2Vec CBOW Skip-gram两种模型的训练方式。模型训练过程中需要调整树的路径,Word2Vec实际是语言模型训练得到的副产物。可以理解为在训练一个网络时任务是减小损失函数,副产物是相应的网络的权重,从第一层走到最后一层,走过的路径所对应的权重,就是一个Word对应的Vec。
如果不关心内部的实现方式的话,可以这样从大局思考:CBOW Skip-gram模型把上下文都关联在了一起,为了更好地复现上下文(例如给定附近的单词预测中间的单词、或是给定单词预测附近的上下文),网络需要调整这个单词所对应的权重以完成这个目的。和其他网络中的权重不同的是,该权重和输入的单词关联最紧密,因此该权重就可以代表这个单词的含义。虽然两个模型搭建之初形式不同,但最终产生的权重含义都是一样的。
再来看一下Doc2Vec的DM(给定上下文和文档向量的情况下预测单词的概率)和 DBOW(给定文档向量的情况下预测文档中一组随机单词的概率)模型。
DM模型在训练时,首先将每个文档ID和语料库中的所有词初始化一个K维的向量,然后将文档向量和上下文词的向量输入模型,隐层将这些向量累加(或取均值、或直接拼接起来)得到中间向量,作为输出层softmax的输入。感觉这个做法十分巧妙,目的是为了提出整个文章的特点,按照正常思路应该是根据单词什么的来判断,但这里作者就直接把文章的特点设定成一个向量,在每个单词训练的时候都塞进去影响其训练。在一个文档的训练过程中,文档ID保持不变,共享着同一个文档向量,相当于在预测单词的概率时,都利用了整个句子的语义,也就是说这个文档向量和文档中每一个出现的上下文都建立起了联系,和文档中每一个出现的上下文都能建立起联系的自然也就是文档的共性,也就是其代表向量了。
DBOW模型的输入是文档的向量,预测的是该文档中随机抽样的词。同样也是将文档ID和文档中每一个出现的上下文都建立起了联系。
而SVD和LSI等模型做的工作也是主成分抽取,主成分,即和文章联系最多的部分,二者的作用是一样的。
不过Doc2Vec每遇到一篇文章都需要重新训练一次,速度堪忧。
思考
Doc2Vec的主要工作就是将文章中的各个词和同一个文章向量联系在了一起,Word2Vec同样也是将上下文的各个单词联系在了一起。这样的公共成分提取思路能否应用到图像、语音?如果将这样固定的Input放到每个特征层去训练,能不能提取出某一类图像的共有特征?
另外思考一下网络是如何构成运作的。网络结构固定,我们可以调整的是Input,Label,Weight。
- 训练过程,Input+Label=Weight。给定训练集(Input,Label),得到能够拟合训练集的网络权重Weight。
- 普通的分类模型,Weight+Input=Label。输入Input到训练好的网络,得到分类结果Label。
- DeepDream,Weight+Label=Input。权重Weight固定,最大化想要输出的Label,得到调整后的Input图像。
然而,第一种和第三种都涉及到了重新训练,需要不断调整Loss到最小,速度比不上直接计算而不需要反向传播的第二种。
附:一个课程推荐的小项目
可以实现寻找类似主题的功能
内容包括
1) TF-IDF,余弦相似度,向量空间模型
2)SVD和LSI
3 ) LDA
等。
该项目的一些参考链接
特征值 SVD介绍
https://www.cnblogs.com/pinard/p/6251584.html
NLTK语料库如何下载
https://blog.csdn.net/cxq2046/article/details/50972715
链接: https://pan.baidu.com/s/1UfJhJY9bJ9hqeTuzKxgQvw 密码: 2ce5
coursea课程介绍文本
百度网盘链接: http://t.cn/RhjgPkv,密码: oppc