【NLP】经典文本匹配算法


文本匹配主要是将两段文本进行相似度计算,以选择最匹配的内容,如搜索场景下选择相似的内容、问答场景下在问题库中匹配最相近的问题并返回对应的回答等。也可延伸用于序列形式的匹配,如地址匹配、路径序列等。

本文主要整理一下经典的文本匹配/相似度计算算法,包括Jaccard相似度、Levenshtein编辑距离、Simhash、TF-IDF、BM25。

Jaccard相似度

参考链接:https://en.wikipedia.org/wiki/Jaccard_index

Jaccard相似度,是用于比较有限样本集合的相似性的统计量,定义为两个集合的交集与并集的比例。
J ( A , B ) = ∣ A ∩ B ∣ ∣ A ∪ B ∣ = ∣ A ∩ B ∣ ∣ A ∣ + ∣ B ∣ − ∣ A ∩ B ∣ 0 ≤ J ( A , B ) ≤ 1 J(A,B)={ {|A\cap B|} \over {|A\cup B|}}={ {|A\cap B|} \over {|A|+|B|-|A\cap B|}}\\ 0 \le J(A,B) \le 1 J(A,B)=ABAB=A+BABAB0J(A,B)1
对应的Jaccard距离为:
d J ( A , B ) = 1 − J ( A , B ) = ∣ A ∪ B ∣ − ∣ A ∩ B ∣ ∣ A ∪ B ∣ d_{J}(A,B)=1-J(A,B)={ {|A\cup B|-|A\cap B|} \over |A\cup B|} dJ(A,B)=1J(A,B)=ABABAB
在这里插入图片描述

Levenshtein编辑距离

参考链接:

https://zh.wikipedia.org/wiki/%E8%90%8A%E6%96%87%E6%96%AF%E5%9D%A6%E8%B7%9D%E9%9B%A2

https://zhuanlan.zhihu.com/p/43009353

Levenshtein距离,是编辑距离的一种,指两个字符串之间,由一个转换成另一个所需的最少编辑次数。其中编辑操作包括:插入、删除、替换。编辑操作可以有不同权重,这里以等权为例。求解算法通常为动态规划

定义a、b两个字符串,则其编辑距离如下:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值