如何生成包含两个以上字母的所有错误变体?

时间:2017-10-03 17:06:56

标签: php arrays string similarity soundex

有一个数组有数百万字的数组。并且您需要创建一个关联数组,其中所有这些单词的错误变体都将该单词的正确版本作为键传递。并且该单词的错误变体必须与数组中的正确单词不一致。而且,所有错误的词语变体也不应该相互重合。所有这些不正确的单词变体我需要纠正不正确的西里尔字(不是俄语单词而不是英语单词)。例如,请使用“apple”和“lost”。 带有正确单词的数组,用于创建不正确的变体:

<?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"
);
?>

我想纠正错误的单词。请给出建议或有解决方案,请告诉我。例如,在Google翻译器中实现了这样的功能。如何在没有Pspell的php扩展的情况下解决这个问题。请帮我解决这么难的任务。要用作正确的单词,我还要添加一个具有正确值的单词数组。

<?php

$array = array(

  "миёнаҳои",
  "луғатҳои",
  "онандроҷ",
  "ганҷинаи",
  "ҷамъиятӣ",
  "иҷтимоии",
  "муҳаммад",
  "рӯзмарра",
  "ҳамзабон",
  "забонҳои",
  "ҳамчунин",
  "фарҳанге",
  "феҳристи",
  "зардуштӣ",
  "таркибҳо",
  "ибораҳои",
  "калимаҳо",
  "фарҳанги",
  "тобишҳои",
  "намунаҳо",
  "нусхаҳои",
  "фирдавсӣ",
  "ҳуруфоти",
  "мутобиқи",
  "тақрибан",
  "алоҳидаи",
  "тоисломӣ",
  "паҳлавик",
  "классикӣ",
  "мӯътабар",
  "қадамҳои",
  "баргаҳои"

);

?>

提前谢谢

1 个答案:

答案 0 :(得分:2)

使用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 тоҷик