机器学习中的NLP文本相似性,它是如何工作的以及它背后的数学
看看这些句子对,你认为哪一对语句有类似的句子?
你可能对前两项很有信心,但对前两项却没有那么大的信心。在现实中,你是对的,因为前两组的句子都是一样的(independently),所以很相似。然而,最后两组的句子谈论的是非常不同的事情,因此不会被视为类似的句子。
令人惊讶的是,NLP模型恰恰相反。根据文本相似性在NLP中的工作方式,最后两对中的句子非常相似,但不是前两个中的句子!
在开始判断NLP的能力之前,让我们看看它是如何工作的以及它背后的数学。那么,让我们看看机器如何看待这些句子!
句子1: “Global warming is here(全球变暖在这里)”
句子2: “Ocean temperature is rising(海洋温度正在上升)”
对于这两者来说,即使从机器的角度来看,也需要探索全新的语义分析维度,根据这两个维度,这两个句子非常相似。
现在,回到我们的NLP模型,现在是我们破解它的时候了!
步骤1:从两个句子中只选择唯一的单词,即等于7。
唯一词:global, warming, is, here, ocean, temperature, rising
步骤2:计算每个句子中唯一词的出现次数
分析句子1
global, 1
warming, 1
is, 1
here, 1
ocean, 0
temperature, 0
rising, 0
分析句子2
global, 0
warming, 0
is, 1
here, 0
ocean, 1
temperature, 1
rising, 1
简单的部分已经结束,在我们继续之前,您必须知道NLP的文本相似性是基于余弦相似性的。余弦相似度基本上是两个矢量之间角度的余弦。所以,我们想把句子转换成两个向量,我们已经完成了!
句子1的矢量: [1,1,1,1,0,0,0]
句子2的矢量: [0,0,1,0,1,1,1]
让我们想象这些矢量。
请注意,在我们的例子中,我们有一个7D矢量,并且由于无法将7D矢量可视化,我将向您展示两个3D矢量并解释工作。
所以,这里我们有两个3D矢量[ 1,1,1 ]和[0,0,1]。你可以将这些向量想象成总共有3个独特单词的2个句子。在这里,[1,1,1]意味着所有3个唯一字在第一句中出现一次,而[0,0,1]意味着在第二句中只出现第三个唯一字。
我们只关心这两个向量之间的角度。两条线越接近,角度越小,因此相似度增加。所以,如果任何两个句子完全相似,那么在3D空间中只会看到一条线,因为这两条线会相互重叠。
由于两个句子现在都有两个共同的词汇,所以相似度增加了
完美匹配的2句话
我希望你能理解我们想要在这里实现什么或者NLP想要做什么的想法。所以,让我们回到我们的原始矢量并计算两者之间的余弦角。我们的载体:
句子1的矢量: [1,1,1,1,0,0,0]
句子2的矢量: [0,0,1,0,1,1,1]
测量2个矢量之间的角度
你需要知道的是这个公式:
在分子中,我们有矢量的点积和分母中的两个矢量长度的乘积。
- 1.让我们找出这个例子的dot product
The Formula -> (u1 * v1) + (u2 * v2) + ….. + (un * vn)
That’d be -> (1*0) + (1*0) +(1*1) +(1*0) +(1*0) +(1*0) +(1*0) = 1
- 2.找到两个向量的长度:
所以,现在我们必须计算:1/4等于0.25
总之,根据NLP文本的相似性,“ 全球变暖在这里 ”和“ 海洋温度在上升 ” 这两个句子只有25%的相似,这与语义分析所显示的完全相反。
现在,让我们快速执行相同的步骤来处理另外一对句子:
句子1: “This place is great(这个地方很棒)”
句子2: “This is great news(这是个好消息)”
独特的词语: this, is, great, place, news
句子1的矢量: [1,1,1,1,0]
句子2的矢量: [1,1,1,0,1]
将这些向量放入余弦公式中,得到0.75的值,即相似度为75%
请注意,角度越小,句子越相似。
因此,下一次当您考虑在项目中使用NLP文本相似性时,您会知道它的真实目的以及它与语义分析的不同之处。