当前位置:   article > 正文

NLP—小任务一:文本相似度计算_nlp4j 文本相似度

nlp4j 文本相似度

任务描述:

文本相似度计算

任务

  • 找出其中可能存在的重复项
  • 编号仅仅后4位不同
  • 文本描述相同或者相似

例如:
300030280004 油漆笔-[规格:红色,斑马]
300030280010 油漆笔-[规格:红色,斑马]

分词

  • 结巴分词
  • 其他分词方式

实现方式

  • 数据存到excel文档中
    例如在这里插入图片描述

  • python实现

实现思路:

  1. 先读取excel文件数据
  2. 先挑出一个需要对比的数据,用这个数据与所有的数据进行相似度比较
  3. 每次比较前先判断一下编号是否仅后四位不同
  4. 然后对比较的两组词进行结巴分词。
  5. 分词后使用杰卡德和最小编辑举例计算相似度
  6. 将相似度超过0.4的数据输出到csv表格中

贴出部分算法代码

# 杰卡德相似度计算

def similarity_jacard(set1, set2):
    """
    杰卡德相似度,相同则为1
    similarity=len(A and B)/len(A or B)
    0<=similarity<=1
    :param set1: set
    :param set2: set
    :return: float
    """
    similarity=0
    try:
        if len(set1 | set2)==0:
            return similarity
        similarity=float(len(set1 & set2) / len(set1 | set2))
    except:
        print("division by error")
    return similarity
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

#最小编辑距离

def minDistance(word1, word2):
    """
    最小编辑距离(Levenshtein)实现
    :param word1: str
    :param word2: str
    :return: int  返回两个字符串的距离
    """
    if not word1:
        return len(word2 or '') or 0

    if not word2:
        return len(word1 or '') or 0

    size1 = len(word1)
    size2 = len(word2)

    last = 0
    tmp = [i for i in range(size2 + 1)]
    # print(tmp)
    value = None

    for i in range(size1):
        tmp[0] = i + 1
        last = i
        # print word1[i], last, tmp
        for j in range(size2):
            if word1[i] == word2[j]:
                value = last
            else:
                value = 1 + min(last, tmp[j], tmp[j + 1])
                # print(last, tmp[j], tmp[j + 1], value)
            last = tmp[j+1]
            tmp[j+1] = value
        # print(tmp)
    return value
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/凡人多烦事01/article/detail/366405
推荐阅读