2017-10-03 3 views
0

数百万語がある配列があります。そして、あなたは、これらの単語の正しいバージョンをキーとして渡す間違ったバリアントを持つ連想配列を作成する必要があります。そして、単語の間違った変形が配列の正しい単語と一致してはならない。そして、間違った言葉の変種も互いに一致してはいけません。これらすべての世代の誤った言葉の変形は、私が間違ったキリル文字の単語を修正する必要があります(ロシア語ではなく、英語ではありません)。例として、「リンゴ」と「失われた」と言います。間違った変種にこの言葉を作成するための正しい言葉を アレイ:2文字以上の単語の間違った変形をすべてどのように生成できますか?

<?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(

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

); 

?> 

正しい単語の配列を反復処理し、入力値にそれらを比較するために使用similar_text事前に

+0

」の唯一の変種があるのはなぜリンゴ "しかしMicrosoftの7つ? – Andreas

+0

"list"という単語はどういう意味で "lst"を変種としていますか?あなたはそれらをどうやって区別していますか? – Andreas

+0

リンゴ値「appe」「ale」を忘れました。はい、あなたは単語 "リスト"の中に正しくない変種 "lst"にすることができます。私自身がこれらのエラーでわからないまで何をするか – John

答えて

2

、ありがとうございました。一致率が最も高い単語を返します。基本的な考え方:

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

そしてもし3つの単語が非常に似ているとすれば?たとえば、「тоҷики」「тоҷикӣ」「тоҷик」という3つの単語が正しい形式で存在します。それで、これらの単語が正しくないバージョンに入力されている場合、このルールも正しく動作します。 – John

+1

私に試してもらうためにいくつかの正しいエントリーを教えてください。そして、それらを実行して何が吐き出すのかを教えてください。 – miknik

+1

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

関連する問題