Anksčiau naudojau Google Language API kalbos atpažinimui, bet jis jau mokamas. Radau alternatyvų būdą kaip aptikti teksto kalbą naudojant pear paketą Text_LanguageDetect, kuris palaiko 52 kalbas. Čia yra lietuviško teksto kalbos atpažinimo pavyzdys ir palaikomų kalbų sąrašas:
<?
header('Content-Type: text/plain; charset=utf-8');
require_once 'Text/LanguageDetect.php';
$l = new Text_LanguageDetect();
//kalbos aptikomo tekstas
$text = 'O mergina, vienplaukė, palaidomis kasomis, atlapu kaklu, smulkiu, bet tvirtu žingsniu ėjo toliau, artyn prie ežero.';
//pagal tekstą aptiktos panašios kalbos
$result = $l->detect($text, 4);
print_r($result);
//Unicode blokų paskirstymas
$blocks = $l->detectUnicodeBlocks($text, true);
print_r($blocks);
//kalbos pavadinimas
$l->setNameMode(0);
echo $l->detectSimple($text)."\n";
//ISO 639-1 dviejų simbolių kalbos kodas
$l->setNameMode(2);
echo $l->detectSimple($text)."\n";
//ISO 639-2 trijų simbolių kalbos kodas
$l->setNameMode(3);
echo $l->detectSimple($text)."\n";
//palaikomų kalbų sąrašas
$l->setNameMode(0);
$langs = $l->getLanguages();
sort($langs);
print_r($langs);
//palaikomų kalbų kiekis
echo count($langs);
Atsakymas:
Array
(
[lithuanian] => 0.24584192439863
[latvian] => 0.19567010309278
[estonian] => 0.11316151202749
[dutch] => 0.11240549828179
)
Array
(
[Basic Latin] => 89
[Latin Extended-A] => 4
)
lithuanian
lt
lit
Array
(
[0] => albanian
[1] => arabic
[2] => azeri
[3] => bengali
[4] => bulgarian
[5] => cebuano
[6] => croatian
[7] => czech
[8] => danish
[9] => dutch
[10] => english
[11] => estonian
[12] => farsi
[13] => finnish
[14] => french
[15] => german
[16] => hausa
[17] => hawaiian
[18] => hindi
[19] => hungarian
[20] => icelandic
[21] => indonesian
[22] => italian
[23] => kazakh
[24] => kyrgyz
[25] => latin
[26] => latvian
[27] => lithuanian
[28] => macedonian
[29] => mongolian
[30] => nepali
[31] => norwegian
[32] => pashto
[33] => pidgin
[34] => polish
[35] => portuguese
[36] => romanian
[37] => russian
[38] => serbian
[39] => slovak
[40] => slovene
[41] => somali
[42] => spanish
[43] => swahili
[44] => swedish
[45] => tagalog
[46] => turkish
[47] => ukrainian
[48] => urdu
[49] => uzbek
[50] => vietnamese
[51] => welsh
)
52
Kitas pavyzdys atpažįsta puslapio kalbą:
<?
header('Content-Type: text/plain; charset=utf-8');
require_once 'Text/LanguageDetect.php';
$l = new Text_LanguageDetect();
mb_internal_encoding("UTF-8");
//pavyzdžio puslapis
$url = "http://lt.wikipedia.org/wiki/Kalba";
$page = file_get_contents($url);
//Koduotės paieška pagal žymą meta
preg_match('/<meta[^>]+charset=[\'"]*([a-z0-9\-]+)[\'"]*/i', $page, $a);
print_r($a);
if(!$a){
$charset = "UTF-8";
}else{
$charset = strtoupper($a[1]);
}
//ištriname tarpus, HTML žymas ir javascript iš puslapio turinio
$search = array('#<script[^>]*?>.*?</script>#si',
'#<style[^>]*?>.*?</style>#siU',
'#<[\/\!]*?[^<>]*?>#si',
'#<![\s\S]*?--[ \t\n\r]*>#',
'#\s\s+#'
);
$content = preg_replace($search, '', $page);
//200 simbolių iš puslapio turinio turėtų pakakti atpažinti kalba
$content = mb_substr($content, 0, 200);
//konvertuojame į UTF-8 koduotę, jei yra kita
if($charset != "UTF-8"){
$content = iconv($charset, "UTF-8", $content);
}
//parodome tekstą
echo $content."\n";
//kalbos pavadinimas
$l->setNameMode(2);
echo $l->detectSimple($content)."\n";
//pagal tekstą aptiktos panašios kalbos
$result = $l->detect($content, 4);
print_r($result);
//Unicode blokų paskirstymas
$blocks = $l->detectUnicodeBlocks($content, true);
print_r($blocks);
Atsakymas:
Array
(
[0] => <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"
[1] => UTF-8
)
Kalba – VikipedijaKalbaStraipsnis iš Vikipedijos, laisvosios enciklopedijos.Peršokti į: navigaciją,paieškąVikisritis: KalbosKalba – lingvistinių ženklų sistema.
Svarbiausia kalbos paskirtis – būti žmo
lt
Array
(
[lt] => 0.23644295302013
[lv] => 0.14548098434004
[et] => 0.14234899328859
[la] => 0.12302013422819
)
Array
(
[Basic Latin] => 161
[General Punctuation] => 3
[Latin Extended-A] => 11
)
Parsisiųsti teksto kalbos atpažinimo programinį kodą.
