Quora句子相似度匹配

预备知识

NLP基础:
    包括词袋模型、TF-IDF算法、主题模型(PCA、LDA、NMF)
相关模型:
    包括Logistic Regression,GBDT(Xgboost,lightgbm),RandomForest
句子相似度测度:
    包括余弦相似度、编辑距离、Word Mover Distance

NLP基础:

词袋模型(Bag-of-words model):
是个在自然语言处理和信息检索(IR)下被简化的表达模型。
此模型下,一段文本(比如一个句子或是一个文档)可以用一个装着这些词的袋子来表示,这种表示方式不考虑文法以及词的顺序。



实例:
  (1) John likes to watch movies. Mary likes movies too.

  (2) John also likes to watch football games.

基于以上两个文件,可以建构出下列清单:

[
    "John",
    "likes",
    "to",
    "watch",
    "movies",
    "also",
    "football",
    "games",
    "Mary",
    "too"
]

此处有10个不同的词,使用清单的索引表示长度为10的向量:

(1) [1, 2, 1, 1, 2, 0, 0, 0, 1, 1]    (2) [1, 1, 1, 1, 0, 1, 1, 1, 0, 0] 
每个向量的索引内容对应到清单中词出现的次数。

举例来说,第一个向量(文件一)前两个内容索引是1和2,第一个索引内容是"John"对应到清单第一个词并且该值设定为1,因为"John"出现一次。

此向量表示法不会保存原始句子中词的顺序。该表示法有许多成功的应用,像是邮件过滤。
TF-IDF算法(term frequency–inverse document frequency):
是一种用于信息检索与文本挖掘的常用加权技术。
tf-idf是一种统计方法,用以评估一字词对于一个文件集或一个语料库中的其中一份文件的重要程度。
字词的重要性随着它在文件中出现的次数成正比增加,但同时会随着它在语料库中出现的频率成反比下降。


举例说明:
有很多不同的数学公式可以用来计算tf-idf。这边的例子以上述的数学公式来计算。
词频(tf)是一词语出现的次数除以该文件的总词语数。假如一篇文件的总词语数是100个,而词语“母牛”出现了3次,那么“母牛”一词在该文件中的词频就是3/100=0.03。
而计算文件频率(IDF)的方法是以文件集的文件总数,除以出现“母牛”一词的文件数。
所以,如果“母牛”一词在1,000份文件出现过,而文件总数是10,000,000份的话,其逆向文件频率就是lg(10,000,000 / 1,000)=4。

最后的tf-idf的分数为0.03 * 4=0.12。

主题模型(Topic Model)

主成分分析PCA、
隐含狄利克雷分布LDA、
非负矩阵拆解法NMF、
主成分分析(Principal components analysis,PCA)
是一种分析、简化数据集的技术。
主成分分析经常用于减少数据集的维数,同时保持数据集中的对方差贡献最大的特征。

PCA的数学定义是:一个正交化线性变换,把数据变换到一个新的坐标系统中,
使得这一数据的任何投影的第一大方差在第一个坐标(称为第一主成分)上,第二大方差在第二个坐标(第二主成分)上,依次类推。
隐含狄利克雷分布LDA:
是一种主题模型,它可以将文档集中每篇文档的主题按照概率分布的形式给出。
同时它是一种无监督学习算法,在训练时不需要手工标注的训练集,需要的仅仅是文档集以及指定主题的数量k即可。
此外LDA的另一个优点则是,对于每一个主题均可找出一些词语来描述它。
非负矩阵拆解法(Non-negative matrix factorization,NMF)

你可能感兴趣的:(Quora句子相似度匹配)