Существует массив, в котором много миллионов слов. И вам нужно создать ассоциативный массив с неправильными вариантами всех этих слов, передавая правильную версию этого слова в качестве ключа. И неправильный вариант слова не должен совпадать с правильными словами в массиве. И все же все неправильные варианты слов тоже не должны совпадать друг с другом. Все это поколение неправильных вариантов слов мне нужно для исправления неверных кириллических слов (не русских слов и не английских). В качестве примера возьмем слова «яблоко» и «потерянный».
Массив с правильными словами для создания неправильных вариантов этих слов:
<?php
$correct_words = array(
"apple",
"lost",
"lot",
"microsoft");
?>
Я хочу, чтобы результат был таким:
<?php
$incorrect_variant_words = array(
"aple"=>"apple",
"lst"=>"lost",
"lt"=>"lot",
"microsot"=>"microsoft",
"microsft"=>"microsoft",
"microoft"=>"microsoft",
"micrsoft"=>"microsoft",
"micosoft"=>"microsoft",
"mirosoft"=>"microsoft",
"mcrosoft"=>"microsoft");
?>
Я хочу исправить неправильные слова. Дайте совет или есть решение для этой задачи, подскажите пожалуйста. Как например в гугл переводчике такая функция реализована. Как обойти эту проблему без расширения php Pspell. Пожалуйста, помогите мне решить такую сложную задачу. Чтобы использовать в качестве правильного слова, я также добавляю массив слов с правильными значениями.
<?php
$array = array(
"миёнаҳои",
"луғатҳои",
"онандроҷ",
"ганҷинаи",
"ҷамъиятӣ",
"иҷтимоии",
"муҳаммад",
"рӯзмарра",
"ҳамзабон",
"забонҳои",
"ҳамчунин",
"фарҳанге",
"феҳристи",
"зардуштӣ",
"таркибҳо",
"ибораҳои",
"калимаҳо",
"фарҳанги",
"тобишҳои",
"намунаҳо",
"нусхаҳои",
"фирдавсӣ",
"ҳуруфоти",
"мутобиқи",
"тақрибан",
"алоҳидаи",
"тоисломӣ",
"паҳлавик",
"классикӣ",
"мӯътабар",
"қадамҳои",
"баргаҳои"
);
?>
заранее спасибо
использование similar_text
перебрать массив правильных слов и сравнить их с входным значением. Вернуть слово с наибольшим процентом совпадений. Основная концепция:
$correct_words = array(
"apple",
"lost",
"lot",
"microsoft");
$input = 'lst';
$match = 0;
foreach ($correct_words as $correct) {
similar_text($correct, $input, $percent);
if ($percent > $match) {
$result = $correct;
$match = $percent;
}
}
echo $result;
Выход потерян
Изменить, чтобы добавить результат вашего запроса
$correct_words = array(
"тоҷик",
"тоҷикӣ",
"тоҷики");
$input = array("тоҷикӣ", "тоҷики", "точик", "точикӣ", "точики", "тоики", "тоикӣ", "тоҷӣкӣ", "тҷикӣ", "тчики", "тҷӣкӣ", "тчик");
foreach ($input as $in) {
$match = 0;
foreach ($correct_words as $correct) {
similar_text($correct, $in, $percent);
if ($percent > $match) {
$result = $correct;
$match = $percent;
}
}
echo "$in is corrected to $result\r\n";
}
Результат:
тоҷикӣ is corrected to тоҷикӣ
тоҷики is corrected to тоҷики
точик is corrected to тоҷик
точикӣ is corrected to тоҷикӣ
точики is corrected to тоҷики
тоики is corrected to тоҷики
тоикӣ is corrected to тоҷикӣ
тоҷӣкӣ is corrected to тоҷикӣ
тҷикӣ is corrected to тоҷикӣ
тчики is corrected to тоҷики
тҷӣкӣ is corrected to тоҷикӣ
тчик is corrected to тоҷик
Других решений пока нет …