文档章节

python编辑距离

o
 osc_isezqdgg
发布于 2019/09/18 14:42
字数 237
阅读 9
收藏 0

精选30+云产品,助力企业轻松上云!>>>

import numpy as np
import json
import codecs

# 计算编辑距离
def edit_distance(word1, word2):
    len1 = len(word1)
    len2 = len(word2)
    dp = np.zeros((len1 + 1, len2 + 1))
    for i in range(len1 + 1):
        dp[i][0] = i
    for j in range(len2 + 1):
        dp[0][j] = j

    for i in range(1, len1 + 1):
        for j in range(1, len2 + 1):
            if word1[i - 1] == word2[j - 1]:
                temp = 0
            else:
                temp = 1
            dp[i][j] = min(dp[i - 1][j - 1] + temp, min(dp[i - 1][j] + 1, dp[i][j - 1] + 1))
    return dp[len1][len2]


# 190801
# 根据编辑距离计算相似度
def simility(word1, word2):
    res = edit_distance(word1, word2)
    maxLen = max(len(word1), len(word2))
    return 1-res*1.0/maxLen

bianhaos = []
sub_sens = []
with codecs.open(r'C:\Users\Administrator.SC-201812211013\PycharmProjects\untitled29\yiwoqu\code\xianbingshi_write_sub.txt','r','utf8') as f:
    for line in f:
        # bianhao,sub_sen = line.split('<->')
        # sub_sen = sub_sen.strip().strip('<b>').strip('<e>')
        # bianhaos.append(bianhao)
        sub_sens.append(line)
count = len(sub_sens)
leibie = [-1]*count
cla = 0
print(count)
for i in range(count):
    if leibie[i] != -1:
        continue
    leibie[i] = cla
    sub1 = sub_sens[i]
    for j in range(count):
        if leibie[j] != -1:
            continue
        sub2 = sub_sens[j]
        sim = simility(sub1,sub2)
        if sim >= 0.5:
            leibie[j] = cla
    cla = cla + 1
    print(i)
print(leibie)
with open('leibie05.json','w') as f:
    json.dump(leibie,f)

 

o
粉丝 0
博文 500
码字总数 0
作品 0
私信 提问
加载中
请先登录后再评论。
计算两个字符串相(或句子)似度的方法

主要方法有:编辑距离、余弦相似度、模糊相似度百分比 1 编辑距离 编辑距离(Levenshtein距离)详解(附python实现) 使用Python计算文本相似性之编辑距离 2 余弦相似度 余弦计算相似度度量 ...

致Great
2018/05/11
0
0
Levenshtein

window安装 2. linux安装 3. Levenshtein介绍 1). Levenshtein.hamming(str1, str2): 计算汉明距离--是描述两个等长字串之间对应位置上不同字符的个数。要求str1和str2必须长度一致。 2). Le...

Mestarxh
2018/03/06
77
0
使用 Levenshtein 寻找彼此相似的字符串对

我们爬来了一些数据,接下来以豆瓣畅销书为例。 爬虫爬来的数据有 而我们系统中原有的数据有 做前端的同志可能一眼就看出来了,两个数组中有三个元素是因为全半角的缘故,是不能全词匹配的,...

xh4n3
2015/08/18
902
0
【Python】 字符串相似性度量,用difflib还是Levenshtein

【作者笔记】 difflib(Python自带):不一定为字符串,数组也可以匹配,但数组匹配时只有单个元素完全匹配才计入相似。 Levenshtein(第三方插件):需要输入为字符串,匹配时是整体匹配,数...

qcyfred
2019/03/19
0
0
Python 字符串相似性的几种度量方法

字符串的相似性比较应用场合很多,像拼写纠错、文本去重、上下文相似性等。 评价字符串相似度最常见的办法就是:把一个字符串通过插入、删除或替换这样的编辑操作,变成另外一个字符串,所需...

osc_7hoa7os1
2019/11/05
2
0

没有更多内容

加载失败,请刷新页面

加载更多

写技术博客的一些心得体会

目录 1. 是什么 2. 为什么 2.1. 优秀的学习方法 2.2. 知识的备份 2.3. 体系的形成 2.4. 知识的交流 2.5. 写作能力和思维能力 3. 怎么做 1. 是什么 不知不觉已经写了近百篇技术博文了,其实在...

osc_873fteab
13分钟前
9
0
android组件间共享数据的常用方法

使用Intent在激活组件的时候携带数据,以进行数据的传递 使用广播进行组件间数据的伟递 使用外部存储(sharedPreference,文件,数据库,网络)进行组件间数据共享 使用Static静态成员进行数...

osc_sdnu59mg
15分钟前
14
0
Chrome浏览器的插件扩展默认安装目录

1:打开谷歌浏览器在地址栏输入:chrome://version 并回车 2:如上图个人资料路径,该路径下的Extensions文件夹即默认的插件安装目录:

osc_zg8wy3xa
16分钟前
23
0
知识圈APP开发记录(二十一)

今日完成:新增学习情况概览功能 花费时间:4小时 剩余时间:2小时 遇到问题:图标刷新时X轴成倍数刷新(已解决) 部分代码截图: 明日将完成:个性化模块及其附属功能测试

osc_bodzcw38
17分钟前
19
0
在做python大作业自己设计学生信息管理的增删改查操作遇到的问题

数据库的创建 conn = sqlite3.connect('student1.db') """ #在该数据库下创建学生信息表 conn.execute ('''CREATE TABLE StudentTable( ID INTEGER PRIMARY KEY AUTOINCREMENT, StuId INTEGE......

osc_7dwwmolq
19分钟前
11
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部