perl:Text :: Fuzzy,不同的字符串给出相同的编辑距离?

时间:2016-05-27 02:34:09

标签: perl edit

检查<section id="person-view" class="view"> <header> <a class="btn btn-info btn-force-refresh pull-right" data-bind="click: refresh" href="#"><i class="icon-refresh"></i>Refresh</a> <h3 class="page-title" data-bind="text: title"></h3> <div class="article-counter"> <address data-bind="text: people().length"></address> <address>found what</address> </div> </header> <section class="view-list" data-bind="foreach: people"> <article class="article-left-content"> <div class="person-brief" title="Go to person details"> <small data-bind="text: firstname" class="right"></small> <small data-bind="text: lastname"></small> </div> </article> </section> </section> 和两个字符串之间的距离,第一个字符串在前面有相同的12个字符,另一个字符串完全不同但两者都给出相同的距离?

$barcode

输出:

#!/usr/bin/perl
use warnings;
use strict;
use Text::Fuzzy;
my $barcode =  "TCCCTTGTCTCC";

foreach my $line1 (<DATA>) {
    print "New string\n";
    print "Barcode length:", length $barcode, "\nSequence length:",
    length $line1, "\n";
    my $tf = Text::Fuzzy->new($barcode);
    my $ed = $tf->distance($line1);
    print "Edit distance: ", $ed ,"\n\n";
}

__DATA__
TCCCTTGTCTCCCCTGATATCCTGTAAAATCCTTTTCTTCTGATGGGTGCCATTTGCCACTAGAGGAAGCTGAACAGACCTGACTACCTGGA
GACGAGACTGATCACCTGATATCCTGTAAAATCCTTTTCTTCTGATGGGTGCCATTTGCCACTAGAGGAAGCTGCAGACCTGACTACCTGGA

2 个答案:

答案 0 :(得分:2)

这似乎是正确的,因为子序列的所有字符都存在于较长的序列中,两者都具有相同的Levenshtein编辑距离。这是因为它所需要的只是删除以将较长的序列转换为较短的序列

示例:

artic => arc编辑距离2,即删除2 arche => arc将具有相同的编辑距离2,即删除2

答案 1 :(得分:2)

不确定。在第一种情况下,$barcode中的所有字符一起出现在行的开头,因此最后需要81(93 - 12)次编辑才能添加所有其他字符。

在第二种情况下,$barcode中的所有字符仍按顺序显示,其间只有一堆内容。既然他们这样做,就不需要删除或替换,距离仍然是81,字符只是添加到不同的地方。举例说明:

GACGAGACTGATCACCTGATATCCTGTAAAATCCTTTTCTTC ...
________T___C_CCT_______TGT______CT___C__C ...