标签: levenshtein-distance

文本相似度算法

我有两个字幕文件.我需要一个函数来告诉它们是代表相同的文本还是相似的文本

有时只有一个文件中有"风正在吹......音乐在播放"的评论.但80%的内容都是一样的.该函数必须返回TRUE(文件代表相同的文本).有时会出现像1而不是l(1 - L)这样的拼写错误: 她只能放行李.当然,这意味着函数必须返回TRUE.

我的评论:
该函数应返回文本相似度的百分比 - 同意

"所有人都很开心"和"所有人都不开心" - 这里被认为是拼写错误,因此被视为同一文本.确切地说,函数返回的百分比将更低,但足够高以表示短语是相似的

请考虑是否要在整个文件或搜索字符串上应用Levenshtein - 不确定Levenshtein,但算法必须作为一个整体应用于文件.不过,这将是一个很长的字符串.

java text nlp similarity levenshtein-distance

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

在Python中集群~100,000个短字符串

我希望通过像q-gram距离或简单的"包距离"或者Python中的Levenshtein距离来聚集~100,000个短字符串.我打算填写距离矩阵(100,000选择2比较),然后用pyCluster进行分层聚类.但是我甚至在开始之前遇到了一些记忆问题.例如,距离矩阵太大而不适合numpy.

aa = numpy.zeros((100000, 100000))
ValueError: array is too big.
Run Code Online (Sandbox Code Playgroud)

这看起来像是一件合理的事吗?或者我注定要在这项任务中记忆问题?谢谢你的帮助.

python numpy cluster-analysis levenshtein-distance

14
推荐指数
1
解决办法
4455
查看次数

如何在Windows上安装python-levenshtein?

在搜索了几天之后,我准备放弃为Python Levenshtein库的 Python 2.7(Windows 64位)找到预编译的二进制文件,所以不是我自己尝试编译它.我安装了最新版本的MinGW32(版本0.5-beta-20120426-1)并将其设置为distutils中的默认编译器.

开始了:

C:\Users\tomas>pip install python-levenshtein
Downloading/unpacking python-levenshtein
  Running setup.py egg_info for package python-levenshtein

    warning: no files found matching '*' under directory 'docs'
    warning: no previously-included files matching '*pyc' found anywhere in distribution
    warning: no previously-included files matching '.project' found anywhere in distribution
    warning: no previously-included files matching '.pydevproject' found anywhere in distribution
Requirement already satisfied (use --upgrade to upgrade): setuptools in c:\python27\lib\site-packages\setuptools-0.6c11-py2.7.egg (from python-levenshtein)
Installing collected packages: python-levenshtein
  Running setup.py …

python windows levenshtein-distance

14
推荐指数
5
解决办法
3万
查看次数

diff/patch如何工作以及它们的安全性如何?

关于它们如何工作,我想知道低级工作的东西:

  1. 什么会引发合并冲突?
  2. 工具是否也使用上下文来应用补丁?
  3. 他们如何处理实际上没有修改源代码行为的更改?例如,交换函数定义位置.

关于安全性,事实上,巨大的Linux内核存储库是他们安全的证明.但我想知道以下几点:

  1. 关于用户应该注意的工具是否有任何警告/限制?
  2. 算法是否被证明不会产生错误的结果?
  3. 如果没有,是否有实施/论文提出集成测试,至少证明它们在经验上没有错误?像BrianKorverJamesCoplien这些论文的内容.
  4. 同样,Linux存储库应该足以满足前一点,但我想知道一些更通用的东西.源代码,即使在更改时也不会发生太大变化(特别是因为实现了算法和语法限制),但是安全性是否可以推广到通用文本文件?

编辑

好的人,我正在编辑,因为问题含糊不清,答案没有解决细节问题.

Git/diff/patch详细信息

Git似乎默认使用的统一差异格式基本上输出三个东西:变化,变化周围的上下文以及与上下文相关的行号.这些东西中的每一个可能同时也可能没有同时更改,因此Git基本上必须处理8种可能的情况.

例如,如果在上下文之前添加或删除了行,则行号将不同; 但是如果上下文和更改仍然相同,那么diff可以使用上下文本身来对齐文本并应用补丁(我不知道这是否确实发生).现在,其他案件会发生什么?我想知道Git如何决定自动应用更改以及何时决定发出错误并让用户解决冲突的详细信息.

可靠性

我非常确定Git是完全可靠的,因为它确实具有完整的提交历史并且可以遍历历史.我想要的是一些指向学术研究和有关这方面的参考资料,如果它们存在的话.

仍然有点与这个主题相关,我们知道Git/diff将文件视为通用文本文件并在线上工作.此外,diff使用的LCS算法将生成一个试图最小化变化数量的补丁.

所以这里有一些我想知道的事情:

  1. 为什么使用LCS而不是其他字符串度量算法?
  2. 如果使用LCS,为什么不使用度量​​的修改版本来考虑底层语言的语法方面?
  3. 如果使用考虑到语法方面的这种指标,它们能否带来好处?在这种情况下的好处可能是任何东西,例如,更清洁的"责备日志".

同样,这些可能是一个巨大的主题,欢迎学术文章.

git diff patch lcs levenshtein-distance

14
推荐指数
1
解决办法
676
查看次数

如何确定普通话的Levenshtein距离?

我们正在开发一个系统,使用UTF-8,UTF-16和UTF-32 Unicode字符标准对50多种国际语言进行模糊匹配.到目前为止,我们已经能够使用Levenshtein距离来检测德语Unicode扩展字符单词的拼写错误.

我们希望扩展这个系统来处理用Unicode表示的普通话中文表意文字.我们如何在相似的汉字之间进行Levenshtein距离计算?

c++ unicode edit-distance cjk levenshtein-distance

13
推荐指数
1
解决办法
2136
查看次数

Levenshtein和Trigram的替代品

假设我的数据库中有以下两个字符串:

(1) 'Levi Watkins Learning Center - Alabama State University'
(2) 'ETH Library'
Run Code Online (Sandbox Code Playgroud)

我的软件从数据源接收自由文本输入,它应该将这些自由文本与数据库中的预定义字符串(上面的那些)相匹配.

例如,如果软件获得字符串'Alabama University',它应该认识到这与(1)它更相似(2).

起初,我想过使用像Levenshtein-Damerau或Trigrams这样众所周知的字符串度量,但这会导致不必要的结果,如下所示:

http://fuzzy-string.com/Compare/Transform.aspx?r=Levi+Watkins+Learning+Center+-+Alabama+State+University&q=Alabama+University

http://fuzzy-string.com/Compare/Transform.aspx?r=ETH+Library&q=Alabama+University

Difference to (1): 37
Difference to (2): 14
Run Code Online (Sandbox Code Playgroud)

(2)获胜因为它比它短得多(1),即使(1)包含搜索字符串的单词(AlabamaUniversity).

我也尝试过Trigrams(使用Javascript库fuzzySet),但我在那里得到了类似的结果.

是否有一个字符串指标可以识别搜索字符串的相似性(1)

string-metric levenshtein-distance

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

编辑距离,如Levenshtein考虑到键盘上的接近度

是否有一个编辑距离,如Levenshtein考虑到替换的距离?

举例来说,如果我们会考虑的话,如果是平等的,typo并且tylo是非常接近(pl物理上靠近键盘上),而typotyqo相距甚远.我想为更可能的错别字分配更小的距离.

必须有一个指标考虑到这种主张吗?

python levenshtein-distance

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

匹配Core Data存储中的近似字符串

我正在编写的核心数据应用程序存在一个小问题.我有两个不同的模型,上下文和持久的商店.一个用于我的应用数据,另一个用于具有相关信息的网站.

大多数情况下,我将我的应用程序中的一条记录与另一条源中的另一条记录完全匹配.然而,有时候,我必须回退到模糊字符串匹配以链接两个记录.我正在尝试匹配歌曲标题.我的本地标题可以是(编写)"The French Idealist is in your pensée",也可以是远程歌曲标题"01 - 10 - French idealist in in you're pensee, The (dub remix, feat. DJ Objective-C)"

我搜索堆栈溢出,谷歌,可可文档,我找不到任何关于如何在这些情况下进行模糊匹配的明确答案.我的字符串可以从任何东西开始,有一堆特殊字符,通常以随机或被忽略的字符结尾.

Regexp不会这样做,也不是NSPredicates,Soundex与外国名称不兼容,也许Levenshtein不够(或者它会不会?).

我正在寻找一组十几个潜在比赛中的冠军头衔,但我非常愿意做这个操作.100%准确度不是目标.

我想删除被忽略的单词,提取关键词(在这个例子中,"法语,理想主义者,pensée"),连接它们,然后使用Levenshtein距离(歌曲标题中的单词应该是相同的顺序).

在我的特殊情况下,它会起作用吗?关于这个问题的行业标准是什么(我不能成为世界上唯一想要匹配略有不同歌曲名称的人)Core Data,Cocoa或Objective-C可以帮助我吗?

非常感谢.

string cocoa core-data levenshtein-distance

12
推荐指数
1
解决办法
3447
查看次数

与Selenium的模糊屏幕截图比较

我正在使用Selenium来自动化网页功能测试.在我们推出新代码时,对我们进行逐像素比较非常重要,因此我们使用Selenium来截取屏幕截图并比较base64编码的字符串以查看是否有任何更改.

我们发现在实践中,很难获得完整的像素一致性,特别是对于图像.我希望将较小的模糊/渲染工件视为"通过"而不是"失败",所以我想知道是否有一种方法可以进行模糊比较以使我们的测试不那么脆弱.

我在考虑将base64字符串之间的Levenshtein距离作为一个起点,但我真的不知道这是一个好的方法,还是应该区分"在页面上移动的东西"和"渲染"的公差神器".任何想法/方法?

testing comparison selenium levenshtein-distance

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

如何加快Levenshtein距离计算

我正在尝试运行模拟来测试随机二进制字符串之间的平均Levenshtein距离.

我的程序是在python中,但我正在使用此C扩展.大部分时间相关的函数计算两个字符串之间的Levenshtein距离,就是这个.

lev_edit_distance(size_t len1, const lev_byte *string1,
                  size_t len2, const lev_byte *string2,
                  int xcost)
{
  size_t i;
  size_t *row;  /* we only need to keep one row of costs */
  size_t *end;
  size_t half;

  /* strip common prefix */
  while (len1 > 0 && len2 > 0 && *string1 == *string2) {
    len1--;
    len2--;
    string1++;
    string2++;
  }

  /* strip common suffix */
  while (len1 > 0 && len2 > 0 && string1[len1-1] == string2[len2-1]) {
    len1--; …
Run Code Online (Sandbox Code Playgroud)

c python optimization performance levenshtein-distance

12
推荐指数
1
解决办法
2955
查看次数