相关疑难解决方法(0)

在Python中生成两个文件的"模糊"差异,并对浮点数进行近似比较

我有比较两个文件的问题.基本上,我想要做的是两个文件之间类似于UNIX的差异,例如:

$ diff -u左文件右文件

但是我的两个文件包含浮点数; 并且因为这些文件是在不同的体系结构上生成的(但是计算相同的东西),浮动值并不完全相同(它们可能因1e-10而不同).但我通过'差异'文件寻找的是找到我认为是显着差异的东西(例如差异大于1e-4); 使用UNIX命令diff时,几乎所有包含浮动值的行都不同!这是我的问题:我如何得到像'diff -u'提供的结果差异,但对浮点数比较的限制较少?

我以为我会写一个Python的脚本来做到这一点,并找到了模块difflib,它提供了类似diff的比较.但是我发现的文档解释了如何按原样使用它(通过单一方法),并解释了内部对象,但我找不到任何关于如何自定义difflib对象以满足我的需求(比如仅重写比较方法或...)我想解决方案可能是检索统一的差异,然后"手动"解析它以消除我的"错误"差异,这不是优雅的; 我更愿意使用现有的框架.

那么,有没有人知道如何自定义这个lib,以便我可以做我想要的东西?或者至少指出我正确的方向......如果不是在Python中,也许shell脚本可以完成工作?

任何帮助将不胜感激!提前感谢您的回答!

python floating-point fuzzy-comparison inexact-arithmetic

7
推荐指数
1
解决办法
1775
查看次数

有效地使用python来计算汉明距离

我需要比较大量类似于50358c591cef4d76的字符串.我有一个汉明距离函数(使用pHash)我可以使用.我该如何有效地做到这一点?我的伪代码是:

For each string
    currentstring= string
    For each string other than currentstring
        Calculate Hamming distance
Run Code Online (Sandbox Code Playgroud)

我想将结果输出为矩阵并能够检索值.我也想通过Hadoop Streaming运行它!

感激地收到任何指针.

这是我尝试过的但是很慢:

import glob
path = lotsdir + '*.*'
files = glob.glob(path)
files.sort()
setOfFiles = set(files)
print len(setOfFiles)
i=0
j=0
for fname in files:
    print 'fname',fname, 'setOfFiles', len(setOfFiles)
    oneLessSetOfFiles=setOfFiles
    oneLessSetOfFiles.remove(fname)
    i+=1

    for compareFile in oneLessSetOfFiles:
        j+=1
        hash1 = pHash.imagehash( fname )
        hash2 = pHash.imagehash( compareFile)
        print ...     
Run Code Online (Sandbox Code Playgroud)

python performance hadoop-streaming

7
推荐指数
1
解决办法
1万
查看次数

查找重复邮寄地址的策略

我试图找出一种基于相似性得分找到重复地址的方法.考虑这些重复的地址:

addr_1 = '# 3 FAIRMONT LINK SOUTH'
addr_2 = '3 FAIRMONT LINK S'

addr_3 = '5703 - 48TH AVE'
adrr_4 = '5703- 48 AVENUE'
Run Code Online (Sandbox Code Playgroud)

我正计划应用一些字符串转换来缩写长字,例如NORTH - > N,删除所有空格,逗号和短划线以及磅符号.现在,有了这个输出,我如何将addr_3与其余地址进行比较并检测类似的?相似度的百分比是安全的吗?你能为此提供一个简单的python代码吗?

addr_1 = '3FAIRMONTLINKS'
addr_2 = '3FAIRMONTLINKS'

addr_3 = '570348THAV'
adrr_4 = '570348AV'
Run Code Online (Sandbox Code Playgroud)

感恩,

爱德华多

python similarity duplicates mailing street-address

5
推荐指数
1
解决办法
4262
查看次数

比较两个字符串并返回一个最相似的字符串

我必须编写一个函数,它接受一个字符串作为参数,并将该字符串与另外两个字符串进行比较,并返回最相似的字符串和差异数.

def func("LUMB"):
    lst=["JIBM", "NUNE", "NUMB"]
should return:
("NUMB",1)
Run Code Online (Sandbox Code Playgroud)

我试过了:

def f(word):
    lst=["JIBM", "NUNE", "NUMB"]
    for i in lst:
        d=k(word, lst)
        return differences
        for n in d:
            print min(sum(n))
Run Code Online (Sandbox Code Playgroud)

哪里:

def k(word1, word2):
    L=[]
    for w in range(len(word1)):
        if word1[w] != word2[w]:
            L.append(1)
        else:
            L.append(0)
    return L
Run Code Online (Sandbox Code Playgroud)

所以我得到一个例如[1,0,0,0]如果word1 ="NUMB"和word2 ="LUMB"的列表

python comparison

5
推荐指数
2
解决办法
753
查看次数

Python字符串比较相似性

我试图比较两个数据列表,其中有一些自由文本表示相同的对象.例

List 1 ['abc LLC','xyz, LLC']
List 2 ['abc , LLC','xyz LLC']
Run Code Online (Sandbox Code Playgroud)

这是一个简单的例子,但问题是可能有许多变化,如大小写的变化或添加一些"." 之间.是否有任何python包可以进行比较并给出相似度量?

python

3
推荐指数
1
解决办法
2706
查看次数

在Python中是否有一种标准方法可以将具有任意可接受值列表的字符串模糊匹配?

我希望有这样的功能:

def findSimilar(string, options):
    ....
    return aString
Run Code Online (Sandbox Code Playgroud)

哪里aString类似于传递的字符串但存在于options.我正在使用此功能来规范我正在处理的玩具应用程序的用户输入.我读到了使用levenshtein距离,但我决定在这里问,因为我希望Python标准库中有一个简单的解决方案.

python string python-2.7

3
推荐指数
1
解决办法
3223
查看次数

2
推荐指数
2
解决办法
311
查看次数

具有字符串的两个列表的相似度得分

我有一个字符串列表作为查询和一些其他字符串列表的hundrends.我想将查询与其他列表进行比较,并提取它们之间的相似性分数.

例:

query = ["football", "basketball", "martial arts", "baseball"]

list1 = ["apple", "football", "basketball court"]

list2 = ["ball"]

list3 = ["martial-arts", "baseball", "banana", "food", "doctor"]
Run Code Online (Sandbox Code Playgroud)

我现在在做什么,我对结果不满意是对它们的绝对比较.

score = 0
for i in query:
   if i in list1:
      score += 1

score_of_list1 = score*100//len(list1)
Run Code Online (Sandbox Code Playgroud)

我找到了一个可以帮助我模糊的图书馆,但我在想,如果你还有其他方法可以提出建议.

python comparison similarity string-comparison fuzzy-comparison

2
推荐指数
1
解决办法
4305
查看次数

比较字符串,允许一个字符差异

我一直在尝试使用表格方法来简化python中的布尔表达式.为此,我需要检查两个给定的字符串是否仅在一个索引上有所不同,例如,该函数应该为以下示例返回以下内容:

  • 0011并且0111- 因为两者仅在第1位有所不同
  • 0-001并且0-101- 仅在2时有所不同
  • 0-0110-101- 假如2,3不同

现在我正在使用以下功能:

def match(s1,s2):

    l=[False,-1]##returns false when they cant be combined
    for i in range(len(s1)):
        if s1[:i]==s2[:i] and s1[i]!=s2[i] and s1[i+1:]==s2[i+1:]:
            l= [True,i]
            break
    return l
Run Code Online (Sandbox Code Playgroud)

我想以非常快的方式实现它(低复杂性).有没有办法在python中这样做?

python string

2
推荐指数
2
解决办法
5838
查看次数

Python中类似字符串的百分比?

我不知道如何做一个程序,它给出了相同长度的两个字符串的相似程度.

例如,对于abcdabce它应该给75%.

订单很重要,我不希望它给我这个abcd并且dcab有100%.

我知道Levenshtein模块可以做到这一点,但我想要一个能够实现它的程序.

python string fuzzy-comparison

-3
推荐指数
1
解决办法
2223
查看次数