2017-10-03 4 views
0

Il existe un tableau dans lequel il y a plusieurs millions de mots. Et vous devez créer un tableau associatif avec les mauvaises variantes de tous ces mots en passant la bonne version de ce mot comme clé. Et la mauvaise variante du mot ne doit pas coïncider avec les mots corrects dans le tableau. Et encore toutes les fausses variantes de mots ne devraient pas coïncider les unes avec les autres. Toute cette génération de variantes incorrectes de mots, je dois corriger les mots cyrilliques incorrects (pas les mots russes et pas l'anglais). À titre d'exemple, prenez les mots «pomme» et «perdu». tableau avec des mots pour créer des variantes correctes incorrectes ces mots:Comment puis-je générer toutes les mauvaises variantes de mots composées de plus de deux lettres?

<?php 
$correct_words = array(
    "apple", 
    "lost", 
    "lot", 
    "microsoft" 
); 
?> 

Je veux que le résultat soit si:

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

Je veux corriger les mots incorrects. Donner des conseils ou il y a une solution pour cette tâche, s'il vous plaît dites-moi. Comme par exemple dans Google traducteur une telle fonction est implémentée. Comment contourner ce problème sans l'extension php de Pspell. Aidez-moi à résoudre une tâche si difficile. Pour utiliser comme un mot correct, j'ajoute aussi un tableau de mots avec des valeurs correctes.

<?php 

$array = array(

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

); 

?> 

Nous vous remercions à l'avance

+0

Pourquoi est-il qu'une seule variante de " Apple "mais sept de Microsoft? – Andreas

+0

Qu'en est-il du mot "list" qui aura aussi "lst" en variante? Comment les distinguez-vous? – Andreas

+0

J'ai oublié une valeur de pomme "appe" "ale". Oui vous avez dans le mot "liste" à la variante incorrecte "lst". Que faire jusqu'à ce que je ne sais pas avec ces erreurs – John

Répondre

2

Utilisez similar_text itérer sur le tableau des mots corrects et de les comparer à la valeur d'entrée. Renvoie le mot avec le pourcentage de correspondance le plus élevé. Concept de base:

$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; 

sortie est perdue

Modifier pour ajouter résultat de votre requête

$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"; 
} 

Le résultat est:

тоҷикӣ 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 тоҷик 
+1

Et si 3 mots sont très similaires. Par exemple, il y a trois mots "тоҷики" "тоҷикӣ" "тоҷик" dans la forme correcte. Dans ce, aussi, cette règle fonctionne correctement si ces mots sont entrés dans la version non-correcte – John

+1

Donnez-moi quelques entrées non correctes à essayer et je vais les passer à travers et vous dire ce qu'il recrache – miknik

+1

тоҷикӣ тоҷики точик точикӣ точики тоики тоикӣ тоҷӣкӣ тҷикӣ тчики тҷӣкӣ тчик – John