我想找出网页中使用的语言。在这里,我猜根据关键字列表中的一些词语。如何计算两个单词列表中的出现次数以确定正在使用的语言?
这剧本我从http://www.kangsigit.com/2017/08/php.deteksi-bahasa.html
这段代码是如何工作的只是匹配的词到"INDONESIAN and ENGLISH"
关键字列表获取。如果您的关键字之一进入,那么这就是检测到的语言。
代码: -
$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个字,英文只有一个字,那么印度尼西亚语是赢家。但是上面的代码并不像我预期的那样工作。
例如:
$tulisan = "Hari ini saya cinta dan dapat senyum oleh suatu hal, you know?";
有从印度尼西亚语,即(cinta
和senyum
)两个单词。
有一个词来自英语,那就是(you
)。
所以应该是,检测到的语言是INDONESIA
。
我个人建议**映射**每个单词到它的等价值在一个n关联数组,而不是使用两个独立数组并尝试计算各种偏移量。 –
你好ALL ..我已经更新了我的问题。请回头阅读。谢谢 – GeeJhon
@mickmackusa我也在答复说明部分添加了该解决方案。你可以检查 –