今天开始记录一下本狗学习机器学习以及深度学习的过程。
先从与大数据相关的最基础的开始
今天先记录一下NLP文本相似度
开始相似度之前先了解一下相似度与距离之间的关系:
显然,越相似距离越近,成正比的关系;
接下来记录一下文本相似度,文本相似度分两类
1、语意相似:语意相似但字面不相似
eg:本狗的学习之旅
我的学习之路
2、字面相似:字面相似,但是语义不相似
eg:我吃饱饭了
我吃不饱饭
那怎样来解决呢?
1、语意相似:基于共点击的行为(协同过滤,后面本狗会更新),
借助回归算法(后面会更新)
2、字面相似:LCS最大公共子序列
中文分词(eg:本狗/的/学习/之路
字面相似的问题解决
1)余弦相似度:cos=ab/|a|*|b|
举个例子:
句子1:这件衣服尺寸大了,那件尺寸合适
句子2:这件衣服尺寸不大,那件更合适
对这两句话就行分词
句子1:这件/衣服/尺寸/大了,那件/尺寸/合适
句子2:这件/衣服/尺寸/不/大,那件/更/合适
接下来进行去重穷举列出所有分词BOW(bag of words)
这件,衣服,尺寸,大了,那件,合适,不,大,更
计算词频:
句子1:这件 1,衣服 1,尺寸2,大了1,那件 1,合适 0,不 0,大 0,更 0
句子2:这件 1,衣服1,尺寸 1,大了 0,那件1,合适 1,不 1,大 1,更1
句子1:(1,1,2,1,1,0,0,0,0)
句子2:(1,1,1,0,1,1,1,1,1)
计算余弦相似度:=0.625
值越大越相似
接下来看TFIDF
tf:词频:一个词在文章中出现的次数
关键词:在当前文章出现较多,但在其他文章中出现较少
当然要注意的是:文章中出现最多的不一定是关键词,要注意出现最多的是“的”,“是”,“在”,“了”,这类最常用的词叫停用词
停用词对结果毫无帮助,必须过滤掉
还需要注意:如果某个词比较少见,但是在这篇文章中多次出现,那么它很可能反映了这篇文章的特性,正是我们需要的关键词
因此,在词频的基础上,赋予每一个词的权重,进一步体现该词的重要性
最常见的词:(“的”,“是”,“在”)给予最小的权重
较常见的词:(“国内”,“中国”,“报道”)给予较小的权重
少见的词:(“祸害”,“繁殖”)给予较高的权重
idf:反文档频率
将tf和idf相乘,就得到一个tf-idf值,某个词对文章重要性越高,该值越大
词频和反文档频率怎样计算呢
词频(TF)= 某个词在文章中出现的次数 / 文章的总词数
词频(TF)=某个词在文章中出现的次数 / 该文出现次数最多的词的出现次数
反文档频率(IDF)= log( 语料库的文档总数 / 包含该词的文档数+1)
使用log函数为了是得到的曲线更加平滑,文档数加1,为了是得到的IDF是一个正值。
关于NLP文本出路的TFIDF原理到此,怎样分词后面会更新。LCS的方式下一次更新。