Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Text::JaroWinkler::strcmp95的第三个参数是什么?_C_String_Perl_Perl Module_Jaro Winkler - Fatal编程技术网

Text::JaroWinkler::strcmp95的第三个参数是什么?

Text::JaroWinkler::strcmp95的第三个参数是什么?,c,string,perl,perl-module,jaro-winkler,C,String,Perl,Perl Module,Jaro Winkler,我对用Perl编写的Jaro Winkler模块感兴趣,该模块用于计算两个字符串之间的距离(或相似性): 函数的语法我不清楚;我找不到任何明确的文件 以下是示例代码: #!/usr/bin/perl use 5.10.0; use Text::JaroWinkler qw( strcmp95 ); print strcmp95("it is a dog","i am a dog.",11); 11代表什么?我想这是一个长度。多长?要检查的字符数的长度?需要在那里吗 有关您问题的答案,请参阅

我对用Perl编写的Jaro Winkler模块感兴趣,该模块用于计算两个字符串之间的距离(或相似性):

函数的语法我不清楚;我找不到任何明确的文件

以下是示例代码:

#!/usr/bin/perl

use 5.10.0;
use Text::JaroWinkler qw( strcmp95 );
print strcmp95("it is a dog","i am a dog.",11);
11代表什么?我想这是一个长度。多长?要检查的字符数的长度?需要在那里吗

有关您问题的答案,请参阅。它包含以下行:

$ying = sprintf("%*.*s", -$y_length, $y_length, $ying);
因此,
$y_length
用于重新格式化字符串,必要时填充字符串,并将其修剪为相同的长度。这些等长字符串随后被输入到实际的比较函数中。这表明Alex是正确的,给出
max(length$ying,length$yang)
的长度在大多数情况下会给出最好的结果


阅读源代码还可以发现,如果未能提供
$y_length
,则不会提供默认值。因此,您将比较空字符串和空字符串。这些模块的JW距离应该很短。

我最近实际上一直在使用该模块。我不知道11是干什么的。我学到的是,当我将它设置为两个字符串的最大长度时,我会得到最好的结果。谢谢@Alex!你所说的“最佳结果”是什么意思?我记不清当它不是最大值时到底发生了什么,我已经在我的工作电脑上设置好了,所以我现在无法检查。我认为它只是返回了不准确的结果(只有0或1)。因此,争论可能是告诉它要匹配多少个字母。在他们的示例中,两个字符串的长度完全相同,这对于示例来说很好,但对于任何实际应用程序来说都不太好。如果我大胆猜测,我会说这意味着“最多匹配这么多角色”,但那只是猜测。谢谢你,亚历克斯。如果您能在下次工作时检查一下,我将不胜感激。我的直觉是,第三个参数设置了比较的长度,使得进行比较的长度为min(长度(函数中的第一项)、length(函数中的第二项)、指定的第三项)亚历克斯:是否有某种行业标准可以让人感觉到Jaro Winkler分数应该有多大,这两个字符串很可能是相似的?谢谢你的发现和发帖!您是说示例代码中的“11”意味着要进行最多11个字符的比较吗?如果数字大于馈送到函数的两个字符串的长度,那么“填充”的是什么?是的,数字指定要比较的字符串数量。如果它大于原始字符串的长度,则这些字符串将用空格填充到指定的长度。有关
sprintf
参数在一般情况下如何工作的详细信息,请参见
perldoc-f sprintf
。谢谢!你知道“空格”是如何影响分数的吗?它们会不同于随机断言的X或随机插入的P吗?@user2096518我不知道,但从JW是编辑距离这一事实推测,用于填充的字符应该不会对函数的值产生影响。但要想得到真正的答案,请进行测试并查看。