ウェブページから使用されている言語を探したい。ここでは、キーワードリストにある単語のいくつかに基づいて推測しています。2つの単語のリストから出現を数えて、使用中の言語を判断するにはどうすればよいですか?
私はこのコードのしくみhttp://www.kangsigit.com/2017/08/php.deteksi-bahasa.html
から入手このスクリプトは単なる"INDONESIAN and ENGLISH"
キーワードリストに単語を一致しています。キーワードの1つが入力された場合、その言語が検出されます。
コード: -
$tulisan = "Hari ini saya dapat senyum oleh suatu hal";
function Bahasa($tulisan, $terjemahkan) {
$bahasa_pilihan = array('INDONESIAN','ENGLISH');
$katakunci['INDONESIAN'] = array ('cinta', 'marah', 'sayang', 'benci', 'senyum', 'peluk');
$katakunci['ENGLISH'] = array ('the', 'and', 'have', 'for', 'with', 'you');
$tulisan = preg_replace("/[^A-Za-z]/", ' ', $tulisan);
foreach ($bahasa_pilihan as $bahasa) {
$kalkulasi[$bahasa]=0;
}
for ($i = 0; $i < 6; $i++) {
foreach ($bahasa_pilihan as $bahasa) {
$kalkulasi[$bahasa] = $kalkulasi[$bahasa] +
substr_count($tulisan, ' ' .$katakunci[$bahasa][$i] . ' ');;
}
}
$max = max($kalkulasi);
$maxs = array_keys($kalkulasi, $max);
if (count($maxs) == 1) {
$pemenang = $maxs[0];
$pertamax = 0;
foreach ($bahasa_pilihan as $bahasa) {
if ($bahasa <> $pemenang) {
if ($kalkulasi[$bahasa]>$pertamax) {
$pertamax = $kalkulasi[$bahasa];
}
}
}
if (($pertamax/$max) < 0.1) {
return $pemenang;
}
}
return $terjemahkan;
}
echo Bahasa($tulisan, $terjemahkan);
しかし、ここで問題があります。 キーワード"INDONESIAN and ENGLISH"
がすべて入力された場合、スクリプトはエラーになります。
例は次のように変更されます。
$tulisan = "Hari ini saya dapat senyum oleh suatu hal, you know?";
二つの言葉"senyum"
、および"you"
は異なるキーワードから来ます。エラーを生成します。
修正する方法はありますか?
UPDATE:
はインドネシアで2つのワードがある場合、英語は、1つの単語だけで、その後、インドネシア語が勝者です。しかし、上記のコードは私が期待したように動作しません。例えば
:
$tulisan = "Hari ini saya cinta dan dapat senyum oleh suatu hal, you know?";
すなわちインドネシア語、(cinta
及びsenyum
)から二つの単語があります。
英語からは1語、つまり(you
)です。
検出される言語はINDONESIA
である必要があります。
私は個人的に**それぞれの単語を対応する値にマッピングすることをおすすめします。 2つの独立した配列を使用したり、さまざまなオフセットを計算しようとするのではなく、 –
こんにちはALL ..私は自分の質問を更新しました。お読みください。ありがとう – GeeJhon
@mickmackusa私は私の答えのメモセクションにもその解決策を追加しました。あなたは –