2017-10-03 3 views
0

Es gibt ein Array, in dem viele Millionen Wörter vorkommen. Und Sie müssen ein assoziatives Array mit den falschen Varianten all dieser Wörter erstellen, indem Sie die korrekte Version dieses Wortes als Schlüssel übergeben. Und die falsche Variante des Wortes darf nicht mit den richtigen Wörtern im Array übereinstimmen. Und dennoch sollten alle falschen Varianten von Wörtern nicht miteinander übereinstimmen. All diese Generationen falscher Wortvarianten müssen falsche kyrillische Wörter korrigieren (nicht russische Wörter und nicht englisch). Als Beispiel nehmen Sie die Wörter "Apfel" und "verloren". Array mit den richtigen Worten für die Erstellung von falschen Varianten diese Worte:Wie kann ich alle falschen Varianten von Wörtern generieren, die aus mehr als zwei Buchstaben bestehen?

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

Ich möchte das Ergebnis so sein:

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

ich die falschen Worte korrigieren möchten. Rat geben oder es gibt eine Lösung für diese Aufgabe, bitte sag es mir. Wie zum Beispiel in Google Übersetzer ist eine solche Funktion implementiert. Wie man dieses Problem ohne die PHP-Erweiterung von Pspell umgehen kann. Bitte helfen Sie mir, eine so schwierige Aufgabe zu lösen. Um ein korrektes Wort zu verwenden, füge ich auch ein Array von Wörtern mit korrekten Werten hinzu.

<?php 

$array = array(

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

); 

?> 

Vielen Dank im Voraus

+0

Warum gibt es nur eine Variante von " Apple "aber sieben von Microsoft? – Andreas

+0

Was ist mit dem Wort "liste" wird das auch "lst" als Variante haben? Wie erzählst du ihnen? – Andreas

+0

Ich habe einen Apfelwert "appe" "Ale" vergessen. Ja du hast Recht im Wort "liste" zu falscher Variante "lst". Was tun, bis ich selbst nicht mit diesen Fehlern weiß – John

Antwort

2

Verwenden similar_text über die Anordnung der richtigen Worte zu wiederholen und sie auf den Eingangswert zu vergleichen. Geben Sie das Wort mit dem höchsten Übereinstimmungsgrad zurück. Grundkonzept:

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

Output

verloren

bearbeiten Ergebnis Ihrer Abfrage hinzuzufügen

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

Ergebnis ist:

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

Und was, wenn 3 Wörter sehr ähnlich sind. Zum Beispiel gibt es drei Wörter "тоҷики" "тоҷикӣ" "тоҷик" in der richtigen Form. Auch hier funktioniert diese Regel korrekt, wenn diese Wörter in die falsche Version – John

+1

eingegeben werden Geben Sie mir einige nicht korrekte Einträge zu versuchen und ich werde sie durchlaufen und Ihnen sagen, was es ausspuckt – miknik

+1

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

Verwandte Themen