Для чего нужен третий параметр Text::JaroWinkler::strcmp95?
Меня интересует модуль Jaro-Winkler, написанный на Perl для вычисления расстояния (или сходства) между двумя строками:
http://search.cpan.org/~scw/Text-JaroWinkler-0.1/JaroWinkler.pm
Синтаксис функции мне не понятен; Я не смог найти какой-либо четкой документации об этом.
Вот пример кода:
#!/usr/bin/perl
use 5.10.0;
use Text::JaroWinkler qw( strcmp95 );
print strcmp95("it is a dog","i am a dog.",11);
Что именно представляет 11? Я понимаю, что это длина. Какой длины? Длина количества символов, которые я хочу проверить? Обязательно ли быть там?
1 ответ
См. Источник для ответа на ваш вопрос. Он содержит эту строку:
$ying = sprintf("%*.*s", -$y_length, $y_length, $ying);
Так $y_length
используется для переформатирования строк, дополнения их при необходимости и обрезки до одинаковой длины. Эти строки равной длины затем передаются в фактическую функцию сравнения. Это говорит о том, что Алекс прав и дает длину max(length $ying, length $yang)
собирается дать лучшие результаты в большинстве случаев.
Чтение источника также показывает, что если вы не в состоянии поставить $y_length
по умолчанию не предоставляется. Таким образом, вы будете сравнивать пустую строку с пустой строкой. У них должно быть довольно короткое расстояние JW.