精华内容
下载资源
问答
  • 用于个向量求相似度,main 函数里的int1,int2是编码,它们间的元素是可重复的。dou1是对应int1的值,dou2是对应int2的值。
  • 文本相似度,顾名思义是指两个文本(文章)之间的相似度,在搜索引擎、推荐系统、论文鉴定、机器翻译、自动应答、命名实体识别、拼写纠错等领域有广泛的应用。 与之相对应的,还有一个概念——文本距离——指的是两...

    文本相似度,顾名思义是指两个文本(文章)之间的相似度,在搜索引擎、推荐系统、论文鉴定、机器翻译、自动应答、命名实体识别、拼写纠错等领域有广泛的应用。

    与之相对应的,还有一个概念——文本距离——指的是两个文本之间的距离。文本距离和文本相似度是负相关的——距离小,“离得近”,相似度高;距离大,“离得远”,相似度低。业务上不会对这两个概念进行严格区分,有时用文本距离,有时则会用文本相似度。

    欧氏距离

    欧氏距离是数学中的一个非常经典的距离,公式如下:
    在这里插入图片描述
    文本向量 A={一,二,三,四},即 x1 = 一,x2 = 二,x3 = 三,x4 = 四
    文本向量 B={一,四,六,八},即 y1 = 一,y2 = 四,y3 = 六,y4 = 八
    这里规定,若 xi=yi,则 xi-yi=0;若 xi≠yi,|xi-yi|=1。
    所以,欧氏距离d是 1。

    (1)适用场景
    编码检测等类似领域。两串编码必须完全一致,才能通过检测,这时一个移位或者一个错字,可能会造成非常严重的后果。比如下图第一个二维码是 “这是一篇文本相似度的文章”,第二个是 “这是一篇文本相似度文章”。从人的理解来看,这两句话相似度非常高,但是生成的二维码却千差万别。
    (2)不适用场景
    文本相似度,意味着要能区分相似 / 差异的程度,而欧氏距离更多的只能区分出是否完全一样。而且,欧氏距离对位置、顺序非常敏感,比如 “我的名字是孙行者” 和“孙行者是我的名字”,在人看来,相似度非常高,但是用欧氏距离计算,两个文本向量每个位置的值都不同,即完全不匹配。

    曼哈顿距离

    和欧氏距离非常相似(把平方换成了绝对值,拿掉了根号),公式如下:
    在这里插入图片描述
    适用场景同欧氏距离。

    编辑距离(Levenshtein 距离、莱文斯坦距离)

    顾名思义,编辑距离指的是将文本 A 编辑成文本 B 需要的最少变动次数(每次只能增加、删除或修改一个字)。编辑距离是对称的,即将 A 转化成 B 的最小变动次数和将 B 转化成 A 的最小变动次数是相等的。
    同时,编辑距离与文本的顺序有关。

    (1)适用场景

    编辑距离算出来很小,文本相似度肯定很高。如果用算法语言来说的话,就是准确率很高(即虽然会漏掉一些好的 case,但可以确保选出来的 case 一定非常好)。

    (2)不适用场景

    反过来说,虽然准确率很高,但召回率不高。在某些业务场景中,漏掉的 case 会引起严重后果,比如 “批发零售” 和“零售批发”,人的理解应该非常相似,可编辑距离却是 4,相当于完全不匹配,这显然不符合预期。

    Jaccard 相似度(杰卡德相似度)

    杰卡德相似度,指的是文本 A 与文本 B 中交集的字数除以并集的字数,公式非常简单:
    在这里插入图片描述
    杰卡德相似度与文本的位置、顺序均无关。比如 “王者荣耀” 和“荣耀王者”的相似度是 100%。无论 “王者荣耀” 这 4 个字怎么排列,最终相似度都是 100%。在某些情况下,会先将文本分词,再以词为单位计算相似度。比如将 “王者荣耀” 切分成 “王者 / 荣耀”,将“荣耀王者” 切分成“荣耀 / 王者”,那么交集就是{王者,荣耀},并集也是{王者,荣耀},相似度恰好仍是 100%。

    (1)适用场景
    对字 / 词的顺序不敏感的文本,比如前述的 “零售批发” 和“批发零售”,可以很好地兼容。
    长文本,比如一篇论文,甚至一本书。如果两篇论文相似度较高,说明交集比较大,很多用词是重复的,存在抄袭嫌疑。
    (2)不适用场景
    重复字符较多的文本,比如 “这是是是是是是一个文本” 和“这是一个文文文文文文本”,这两个文本有很多字不一样,直观感受相似度不会太高,但计算出来的相似度却是 100%(交集 = 并集)。
    对文字顺序很敏感的场景,比如 “一九三八年” 和“一八三九年”,杰卡德相似度是 100%,意思却完全不同。

    余弦相似度

    余弦相似度的灵感来自于数学中的余弦定理,这里对数学内容不做过多解释,直接上公式:
    在这里插入图片描述
    其中,A、B 分别是文本一、文本二对应的 n 维向量。
    举例:
    文本A是 “一个雨伞”,文本B是 “下雨了开雨伞”,它们的并集是 {一,个,雨,伞,下,了,开},共 7 个字。
    若并集中的第 1 个字符在文本一中出现了 n 次,则 A1=n(n=0,1,2……)。若并集中的第 2 个字符在文本一中出现了 n 次,则 A2=n(n=0,1,2……)。依此类推,算出 A3、A4、……、A7,B1、B2、……、B7,最终得到:
    A=(1,1,1,1,0,0,0)
    B=(0,0,2,1,1,1,1)
    将 A、B 代入计算公式,得到
    在这里插入图片描述
    1)适用场景

    余弦相似度和杰卡德相似度虽然计算方式差异较大,但性质上很类似(与文本的交集高度相关),所以适用场景也非常类似。
    余弦相似度相比杰卡德相似度最大的不同在于它考虑到了文本的频次,比如上面例子出现了 2 次 “雨”,和只出现 1 次“雨”,相似度是不同的;再比如“这是是是是是是一个文本” 和“这是一个文文文文文文本”,余弦相似度是 39%,整体上符合 “相同的内容少于一半,但超过 1/3” 的观感(仅从文本来看,不考虑语义)。

    (2)不适用场景

    向量之间方向相同,但大小不同的情况(这种情况下余弦相似度是 100%)。比如 “太棒了” 和“太棒了太棒了太棒了”,向量分别是(1,1,1)和(3,3,3),计算出的相似度是 100%。

    这时候要根据业务场景进行取舍,有些场景下我们认为它们意思差不多,只是语气程度不一样,这时候余弦相似度是很给力的;有些场景下我们认为它们差异很大,哪怕意思差不多,但从文本的角度来看相似度并不高(最直白的,一个 3 个字,一个 9 个字),这时候余弦相似度就爱莫能助了。

    展开全文
  • 杰卡德相似系数(Jaccard similarity coefficient),也称杰卡德指数(Jaccard Index),是用来衡量两个集合相似度的一种指标。 Jaccard相似指数用来度量两个集合之间的相似性,它被定义为两个集合交集的元素个数除...

    杰卡德距离(Jaccard Distance) 是用来衡量两个集合差异性的一种指标,它是杰卡德相似系数的补集,被定义为1减去Jaccard相似系数。而杰卡德相似系数(Jaccard similarity coefficient),也称杰卡德指数(Jaccard Index),是用来衡量两个集合相似度的一种指标。

    Jaccard相似指数用来度量两个集合之间的相似性,它被定义为两个集合交集的元素个数除以并集的元素个数。

    image

    Jaccard距离用来度量两个集合之间的差异性,它是Jaccard的相似系数的补集,被定义为1减去Jaccard相似系数。

    image

    转载于:https://www.cnblogs.com/leezx/p/7110124.html

    展开全文
  • 个集合的杰卡德相似度,返回阈值大于 0.5 0.5 0 . 5 的集合。 然而,这种查询的复杂度依然是线性的,即 O ( N ) O(N) O ( N ) ,即随着集合数量线性增长,当 N N N 足够大时,查询依然将是比较耗时的过程。 一种...

    概要

    假设你有一个数量非常大的集合S=[S1,S2...,Sn]S=[S_1,S_2...,S_n]nn非常巨大,你现在想要知道这nn个集合中,有哪些与给定集合SS的杰卡德相似度大于0.50.5。一种方法是你给这nn个集合,每个集合计算一个miniHashminiHash值,并用同样的方法计算出AAminiHashminiHash值,然后逐个比较该值与SS中的nn个集合的杰卡德相似度,返回阈值大于0.50.5的集合。

    然而,这种查询的复杂度依然是线性的,即O(N)O(N),即随着集合数量线性增长,当NN足够大时,查询依然将是比较耗时的过程。

    一种快于线性的方法是局部敏感哈希索引,由于使用了miniHashminiHash(LSH)局部敏感哈希(LSH),故该方法可能存在一定误判,即不符合查询条件,但结果被返回了。总体上,更大相似度具有更大概率被返回。

    一个例子

    from datasketch import MinHash, MinHashLSH
    
    set1 = {'minhash', 'is', 'a', 'probabilistic', 'data', 'structure', 'for', 'estimating', 'the', 'similarity', 'between',
            'datasets'}
    set2 = {'minhash', 'is', 'a', 'probability', 'data', 'structure', 'for', 'estimating', 'the', 'similarity', 'between',
            'documents'}
    set3 = {'minhash', 'is', 'probability', 'data', 'structure', 'for', 'estimating', 'the', 'similarity', 'between',
            'documents'}
    
    m1 = MinHash(num_perm=128)
    m2 = MinHash(num_perm=128)
    m3 = MinHash(num_perm=128)
    for d in set1:
        m1.update(d.encode('utf8'))
    for d in set2:
        m2.update(d.encode('utf8'))
    for d in set3:
        m3.update(d.encode('utf8'))
    
    # Create LSH index
    lsh = MinHashLSH(threshold=0.5, num_perm=128)
    lsh.insert("m2", m2)
    lsh.insert("m3", m3)
    result = lsh.query(m1)
    print("Approximate neighbours with Jaccard similarity > 0.5", result)
    

    输出:
    Approximate neighbours with Jaccard similarity > 0.5 [‘m3’, ‘m2’]

    展开全文
  • 文本相似度,顾名思义是指两个文本(文章)之间的相似度,在搜索引擎、推荐系统、论文鉴定、机器翻译、自动应答、命名实体识别、拼写纠错等领域有广泛的应用。 与之相对应的,还有一个概念——文本距离——指的是两...

    文本相似度,顾名思义是指两个文本(文章)之间的相似度,在搜索引擎、推荐系统、论文鉴定、机器翻译、自动应答、命名实体识别、拼写纠错等领域有广泛的应用。

    与之相对应的,还有一个概念——文本距离——指的是两个文本之间的距离。文本距离和文本相似度是负相关的——距离小,“离得近”,相似度高;距离大,“离得远”,相似度低。业务上不会对这两个概念进行严格区分,有时用文本距离,有时则会用文本相似度。

    欧氏距离
    欧氏距离是数学中的一个非常经典的距离,公式如下:

    文本向量 A={一,二,三,四},即 x1 = 一,x2 = 二,x3 = 三,x4 = 四
    文本向量 B={一,四,六,八},即 y1 = 一,y2 = 四,y3 = 六,y4 = 八
    这里规定,若 xi=yi,则 xi-yi=0;若 xi≠yi,|xi-yi|=1。
    所以,欧氏距离d是 1。

    (1)适用场景
    编码检测等类似领域。两串编码必须完全一致,才能通过检测,这时一个移位或者一个错字,可能会造成非常严重的后果。比如下图第一个二维码是 “这是一篇文本相似度的文章”,第二个是 “这是一篇文本相似度文章”。从人的理解来看,这两句话相似度非常高,但是生成的二维码却千差万别。
    (2)不适用场景
    文本相似度,意味着要能区分相似 / 差异的程度,而欧氏距离更多的只能区分出是否完全一样。而且,欧氏距离对位置、顺序非常敏感,比如 “我的名字是孙行者” 和“孙行者是我的名字”,在人看来,相似度非常高,但是用欧氏距离计算,两个文本向量每个位置的值都不同,即完全不匹配。

    曼哈顿距离
    和欧氏距离非常相似(把平方换成了绝对值,拿掉了根号),公式如下:

    适用场景同欧氏距离。

    编辑距离(Levenshtein 距离、莱文斯坦距离)
    顾名思义,编辑距离指的是将文本 A 编辑成文本 B 需要的最少变动次数(每次只能增加、删除或修改一个字)。编辑距离是对称的,即将 A 转化成 B 的最小变动次数和将 B 转化成 A 的最小变动次数是相等的。
    同时,编辑距离与文本的顺序有关。

    (1)适用场景

    编辑距离算出来很小,文本相似度肯定很高。如果用算法语言来说的话,就是准确率很高(即虽然会漏掉一些好的 case,但可以确保选出来的 case 一定非常好)。

    (2)不适用场景

    反过来说,虽然准确率很高,但召回率不高。在某些业务场景中,漏掉的 case 会引起严重后果,比如 “批发零售” 和“零售批发”,人的理解应该非常相似,可编辑距离却是 4,相当于完全不匹配,这显然不符合预期。

    Jaccard 相似度(杰卡德相似度)
    杰卡德相似度,指的是文本 A 与文本 B 中交集的字数除以并集的字数,公式非常简单:

    杰卡德相似度与文本的位置、顺序均无关。比如 “王者荣耀” 和“荣耀王者”的相似度是 100%。无论 “王者荣耀” 这 4 个字怎么排列,最终相似度都是 100%。在某些情况下,会先将文本分词,再以词为单位计算相似度。比如将 “王者荣耀” 切分成 “王者 / 荣耀”,将“荣耀王者” 切分成“荣耀 / 王者”,那么交集就是{王者,荣耀},并集也是{王者,荣耀},相似度恰好仍是 100%。

    (1)适用场景
    对字 / 词的顺序不敏感的文本,比如前述的 “零售批发” 和“批发零售”,可以很好地兼容。
    长文本,比如一篇论文,甚至一本书。如果两篇论文相似度较高,说明交集比较大,很多用词是重复的,存在抄袭嫌疑。
    (2)不适用场景
    重复字符较多的文本,比如 “这是是是是是是一个文本” 和“这是一个文文文文文文本”,这两个文本有很多字不一样,直观感受相似度不会太高,但计算出来的相似度却是 100%(交集 = 并集)。
    对文字顺序很敏感的场景,比如 “一九三八年” 和“一八三九年”,杰卡德相似度是 100%,意思却完全不同。

    余弦相似度
    余弦相似度的灵感来自于数学中的余弦定理,这里对数学内容不做过多解释,直接上公式:

    其中,A、B 分别是文本一、文本二对应的 n 维向量。
    举例:
    文本A是 “一个雨伞”,文本B是 “下雨了开雨伞”,它们的并集是 {一,个,雨,伞,下,了,开},共 7 个字。
    若并集中的第 1 个字符在文本一中出现了 n 次,则 A1=n(n=0,1,2……)。若并集中的第 2 个字符在文本一中出现了 n 次,则 A2=n(n=0,1,2……)。依此类推,算出 A3、A4、……、A7,B1、B2、……、B7,最终得到:
    A=(1,1,1,1,0,0,0)
    B=(0,0,2,1,1,1,1)
    将 A、B 代入计算公式,得到

    1)适用场景

    余弦相似度和杰卡德相似度虽然计算方式差异较大,但性质上很类似(与文本的交集高度相关),所以适用场景也非常类似。
    余弦相似度相比杰卡德相似度最大的不同在于它考虑到了文本的频次,比如上面例子出现了 2 次 “雨”,和只出现 1 次“雨”,相似度是不同的;再比如“这是是是是是是一个文本” 和“这是一个文文文文文文本”,余弦相似度是 39%,整体上符合 “相同的内容少于一半,但超过 1/3” 的观感(仅从文本来看,不考虑语义)。

    (2)不适用场景

    向量之间方向相同,但大小不同的情况(这种情况下余弦相似度是 100%)。比如 “太棒了” 和“太棒了太棒了太棒了”,向量分别是(1,1,1)和(3,3,3),计算出的相似度是 100%。

    这时候要根据业务场景进行取舍,有些场景下我们认为它们意思差不多,只是语气程度不一样,这时候余弦相似度是很给力的;有些场景下我们认为它们差异很大,哪怕意思差不多,但从文本的角度来看相似度并不高(最直白的,一个 3 个字,一个 9 个字),这时候余弦相似度就爱莫能助了。
    ————————————————

    原文链接:https://blog.csdn.net/weixin_42080490/article/details/108912665

    展开全文
  • 杰卡德( Jaccard)相似度

    2020-11-26 10:54:56
    两个集合A和B交集元素的个数在A、B并集中所占的比例,称为这两个集合的杰卡德系数,用符号 J(A,B) 表示。 当集合A,B都为空时,J(A,B)定义为1。 是用来衡量两个样本相似度的指标。 可用于用于数据聚类,特别适合于...
  • # 计算杰卡德系数 return 1.0 * numerator / denominator def main ( ) : content_c = readFile ( "1.txt" ) content_z = readFile ( "2.txt" ) #相似度 similiar = ...
  • 增添规则keywords的杰卡德相似度 keywords的杰卡德相似度
  • 该方法将用户评分差异的数目融入相似度计算,并综合杰卡德相似度建立神经网络学习模型,选取 Movielens数据作为训练集,得到合适的权重.实验结果表明,与pearson相似性度量相比,该方法在用户评价较少时给出相对...
  • 协同过滤相似度

    2021-04-09 09:28:13
    如果 买/没买 点/没点数据 0/1 适合使用杰卡德相似度 - from sklean.metrics import jaccard_similarity_score - jaccard_similarity_score(df['item A'],df['item B']) - 一般使用评分去做协同过滤 推荐使用皮尔逊...
  • 计算文本相似度杰卡德系数计算

    千次阅读 2018-10-18 16:25:36
    杰卡德系数,英文叫做 Jaccard index, 又称为 Jaccard 相似系数,用于比较有限样本集之间的相似性与差异性。Jaccard 系数值越大,样本相似度越高。实际上它的计算方式非常简单,就是两个样本的交集除以并集得到的...
  • 关键词的相似度计算

    2020-06-30 22:46:12
    关键词的相似度刚开始采用的是杰卡德相似度,但是会出现非常多0的情况,这个情况不太利于区分关键词之间的相似度。所以进行改进变为向量化关键词后算embedding的余弦相似度。 ELMO原理 尝试ELMO模型进行单词向量化 ...
  • 因此,根据杰卡德相似度系数定义了通信相似度,并提出了一种基于用户请求域名系统(DNS,domain name system)的通信相似度计算方法,用于基于网络流量的僵尸网络节点检测。最后,基于Spark框架对所提出的方法进行了...
  • 协同过滤相似度计算

    千次阅读 2018-08-27 20:17:48
    (1)传统的杰卡德相似度计算公式如下,  其中A,B可以为不同用户的购物品类,  当用户量特别大的时候,导致计算复杂度比较高,因为直接进行了笛卡尔积运算,这时候可能没有办法进行运算。优化方法如下:  ...
  • 1、如果用余弦相似度,似乎可以按照原来的计划,分权重进行叠加,然后统一计算,这个方法比较简单,但是从历史经验上看,使用杰卡德相似度,视乎在CTR等指标上会有较好的效果 2、如果用杰卡...
  • 在数据分析和数据挖掘中,经常需要数值化样本个体间差异的大小,进而评价个体的相似度或者进行分类。比如统计分析中的相关性分析,数据挖掘中...杰卡德相似度 皮尔逊相关系数 样本 特征1 特征2 特征3 特征4 .
  • 关键词的相似度刚开始采用的是杰卡德相似度,但是会出现非常多0的情况,这个情况不太利于区分关键词之间的相似度。所以进行改进变为向量化关键词后算embedding的余弦相似度。 ELMO原理 尝试ELMO模型进行单词向量化 ...
  • 文章目录1.3 推荐算法学习目标1 推荐模型构建流程2 最经典的推荐算法:协同过滤推荐算法(Collaborative Filtering)3 相似度计算(Similarity Calculation)4 协同过滤推荐...应用杰卡德相似度实现简单协同过滤推荐案...
  • 闵科夫斯基距离(Minkowski) 计算公式: dist(X,Y)=(∑i=1n∣xi−yi∣p)1pdist(X,Y)=\big(\sum_{i=1}^{n}|x_i-y_i|^p\big)^\frac...杰卡德距离(Jaccard) 计算公式: J(A,B)=∣A⋂B∣∣A⋃B∣J(A,B)=\frac{ |{A} \...
  • 局部敏感哈希(LSH)相似度杰卡德)分析TopN 概念 局部敏感哈希,英文locality-sensetive hashing,常简称为LSH。局部敏感哈希在部分中文 文献中也会被称做位置敏感哈希。LSH是一种哈希算法,最早在1998年由...
  • 6-24 根据队友找的提取关键词的模型,处理数据集+定义求杰卡德相似度的函数 创新实训记录10处理数据集定义求杰卡德相似度的函数 处理数据集 根据队友找的模型(这里只采用了一个无监督SingleRank模型,没有进行模型...
  • 杰卡德相似系数是衡量两个集合相似度的一种指标(余弦距离也可以用来衡量两个集合的相似度)。 (2)杰卡德距离 与杰卡德相似系数相反的概念是杰卡德距离(Jaccard Distance),可以用如下公式来表示: ...
  • 相似度计算之杰卡德相似度 Jaccard index, 又称为Jaccard相似系数(Jaccard similarity coefficient)用于比较有限样本集之间的相似性与差异性。Jaccard系数值越大,样本相似度越高。 杰卡德相似系数 两个集合A和...
  • 机器学习:文本相似度计算方法【欧氏距离、余弦距离、皮尔逊相关系数、杰卡德相似系数、KL散度】
  • 特征评价对理解数据集是非常必要的。根据你随后想建立的模型的类型,有多种策略可以完成特征评价,其中最重要的如下。... 杰卡德相似度——离散型特征。 互信息——既适用于离散型特征,也适用于连续型特征。 ...
  • 杰卡德相似系数是衡量两个集合的相似度一种指标。 代码 def jaccard_coefficient(a, b): set_a = set(a) set_b = set(b) #set1 & set2求的是交集,就是共同拥有的元素 #set1 | set2求的是并集,相当于合并...
  • 应用杰卡德相似度实现简单协同过滤推荐案例 1 推荐模型构建流程 Data(数据)->Features(特征)->ML Algorithm(选择算法训练模型)->Prediction Output(预测输出) 数据清洗/数据处理 数据来源 显性数据 ...

空空如也

空空如也

1 2 3 4 5 ... 10
收藏数 191
精华内容 76
关键字:

杰卡德相似度