加入收藏 | 设为首页 | 会员中心 | 我要投稿 济源站长网 (https://www.0391zz.cn/)- 数据工具、数据仓库、行业智能、CDN、运营!
当前位置: 首页 > 大数据 > 正文

推荐系统技术之文本相似性计算(一)

发布时间:2021-03-16 17:49:21 所属栏目:大数据 来源:网络整理
导读:推荐系统技术 --- 文本相似性计算(模型化 上) 1. 前言 推荐系统分为两种,一种是基于用户的,根据某个用户的特性推荐一些东西,还有一种是根据内容,推荐一些相似的内容,或者是两种的结合,任何推荐系统,仔细分析下来,都属于这两种情况的组合。 今天我
副标题[/!--empirenews.page--]

推荐系统技术 --- 文本相似性计算(模型化 上)

1. 前言

推荐系统分为两种,一种是基于用户的,根据某个用户的特性推荐一些东西,还有一种是根据内容,推荐一些相似的内容,或者是两种的结合,任何推荐系统,仔细分析下来,都属于这两种情况的组合。

今天我们说一下基于内容推荐中的一个分支,也是使用得比较多的内容推荐方式,那就是基于文本相似性的推荐,我们说文本相似性的计算,文本相似性应用范围是比较广的:

  • 普通的阅读文章,底下的相关文章推荐可以用

  • 论文查重也可以用

  • 过滤相似度很高的新闻,或者网页去重

本系列我们会写三篇。

  • 前两篇是模型化,分为上和下,这两篇是重点,开篇会用说人话的方式说说计算文本相似性的一些思想和套路,对文本相似性有个感性的了解,然后会把人话变成数学化的东西,只有数学化了才能计算,才有计算机能做的文本相似性,当然不会出现大量数学公式,只会有一些数学概念。

  • 第三篇是工程化,这篇是非重点,会介绍一下相关的工程的工具包或者代码片段,相当于局部实战吧,没有理解第一篇说的直接看这篇没什么含义。

2. 直观理解

假如我们有以下这么些篇文档

  • 用Golang写一个搜索引擎

  • 搜索引擎的实现

  • 推荐系统的技术要点

  • 常用的推荐算法总结

  • 广告系统是一个搜索引擎和推荐引擎的组合

  • 计算广告中都有哪些数学原理

有个一个小朋友,他叫小明,但是他还在上学前班,你让他来说这些文章中哪几篇比较相似,他现在字都认不全,更别说理解这些文章中的概念了,如果他特别聪明,那么他很可能说1和5比较相似,因为都有个长得一样的东西一个搜索引擎。

又过了一些年,小明已经读初中了,你再让他来看哪几篇比较相似,他可能会告诉你1和2比较相似,然后和5也比较相似,因为他现在已经学会了主谓宾定状补的语法,知道第一条的主要表述的是搜索引擎,第二篇主要表述的也是搜索引擎,第五篇虽然主要不是说的搜索引擎,但宾语的定语也是搜索引擎,也是相关的。所以会给出1和2相似,5和他们也比较相似。

再过一些年,小明已经大学毕业了,学的就是计算机专业,这时候你再来看,他会给出6个都比较相似,因为他已经知道了搜索,推荐,广告三个领域的基础技术都差不多,如果对一个感兴趣,那么对另外的主题也会比较感兴趣,只不过相似性有高有低而已。

上面的三个阶段,实际上也是文本相似性计算发展的三个阶段,从最开始的字面的匹配相似,到第二阶段的词汇的匹配相似,再到第三阶段的语义的相似,我们一个一个来说说每个阶段使用的数学方法和原理,每个阶段都会有数学原理,但我们对数学公式不做深入讨论,感兴趣的可以自己查阅具体的数学原理。

下面,我们再用计算机和数学的思想来看看计算机如何在上述三个阶段中进行文本相似性的计算的。

4. 前期准备

在开始三个阶段之前,我们先准备一些必要的知识。

4.1 分词

分词也叫切词,因为文档的最小单位是词,所以我们默认都是讨论分词过的情况,为了方便,我们把每个词都分配一个唯一id,我们叫这个词的token。后面出现token这个概念,就是表示切词后的唯一id

4.2 词袋模型

维基百科解释 :Bag-of-words model是个在自然语言处理和信息检索下被简化的表达模型。此模型下,像是句子或是文件这样的文字可以用一个袋子装着这些词的方式表现,这种表现方式不考虑文法以及词的顺序。

通俗的说就是把一个文档分词得到的一堆token放到一个袋子里,用这个袋子来表示这个文档,这是一种简化的文本描述方法。

5. 学前班阶段

学前班阶段也叫直接计算相似的阶段,我们其实不关心这篇文章到底讲什么,用计算机的理解就是,分词完成以后,我们找到一种方法,来计算各个token集合之间的相似性就行了。

5.1 JaccardSimilarity方法

分词以后,我们得到的一堆token,按照学前班的小明的思想,找到两两之间相似性即可,JaccardSimilarity方法可以满足这个条件,JaccardSimilarity说起来非常简单,容易实现,实际上就是两个集合的交集除以两个集合的并集,所得的就是两个集合的相似度,直观的看就是下面这个图。

数学表达式是:

很明显,我们可以很容易的把上面的那几个文档两两进行上述计算,然后得到每两个文档的相似性,再一排,就知道每个文档和其他每个文档的相似性了。

即便新来一个文档,按照上面的公式计算一下,就知道它和每个文档的相似性了,完全没有难度,当然,你会发现算出来真的就像个学前班的学生弄出来的,完全没有可用性。

6. 初中阶段

学前班阶段实在是太Low了,我们看看初中阶段都出现了一些什么新东西?

6.1 数学化

要将表达意思的文本变成可计算相似度的东西,首先,必须将文本数字化,并且数字化以后还能保留文本的一些基本信息,只有数字化以后才有可计算性,只有保留了基本信息,这个可计算性才有可信度。

线性代数给我们提供了一个数学工具叫向量,向量看上去特别简单,就是一串数字,别看它看上去非常简单,但却是非常强大的数学工具,有多强大呢?我们从侧面来说说,我们知道无论哪个编程语言,都有一个最基本的数据结构,是内嵌在语言中的,那就是数组,而数组就是向量,数组有多强大不用我说了吧?谁敢说他没用过?它都已经强大到我们感觉不到他的强大了,就像空气一样,重要到我们不觉得他重要了(北京除外,呵呵)。

如果我们能将一个文本变成一个向量,那么我们就将一篇复杂的文章变成了一个可以用数组描述的数学概念了。

啰嗦了这么多,如果有一个向量了会怎么样?再往上一步,线性代数还给了我们一个概念,就是空间,任何向量都可以表示为某一个空间上的一个点。

所以说,先有了文本,文本变成了向量,再有了空间,向量变成了空间的点,那么我们通过求两个点之间的距离,就求得了两个文档的相似性。

至此,数学化完成了,文本相似性的计算就变成了空间中两个点的距离的计算,就像下图一样。

6.2 向量化

6.2.1 最简单的向量化

(编辑:济源站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读