Я работаю над проектом конверсии веб-сайта, и мне нужно сопоставить неточные строки.Я смотрю на использование Левештейна, но я не знаю, какие параметры я должен установить для своей задачи.
Скажем, у меня есть целевая строка elephant
.Матч, который я хотел бы получить, равен elephant mouse
, например
<?
$target = "elephant";
$data = array(
'elephant mouse',
'rhinoceros',
'alligator',
'hippopotamus',
'rat',
);
foreach ( $data as $datum ) {
echo "$target >> $datum == " . levenshtein($target, $datum) . "\n";
}
. И я получаю результат
elephant >> elephant mouse == 6
elephant >> rhinoceros == 10
elephant >> alligator == 7
elephant >> hippopotamus == 10
elephant >> rat == 7
Так что пока rhino
и hippo
равны 10,в моем фактическом наборе данных я не мог действительно отличить elephant mouse
, rat
и alligator
, которые имеют шею и шею в 6 и 7. Это фиктивные данные, но в моем наборе данных,слова, которые ближе по длине, получают гораздо более низкий балл, чем слова, которые target + extra
.
Как настроить параметры levenshtein()
?Я могу установить новые целочисленные значения для стоимости вставки, замены и удаления.Какой вес даст мне то, что я хочу?
(Если вы можете придумать лучший заголовок, пожалуйста, отредактируйте мой пост).