Я использую инструмент для анализа языка под названием Freeling. Для идентификации языка я использую analyzer
команда в консоли Linux:
analyzer -f /usr/share/freeling/config/ident.cfg --outlv ident --fidn /usr/share/freeling/common/lang_ident/ident.dat
Когда я выполняю эту команду, она ждет текстовых записей (предложений) и определяет, на каком языке они находятся.
Когда я пишу строку текста на испанском языке: «la casa es azul» и нажимаю клавишу ввода, возвращается ES, что означает, что она написана на испанском языке. Если я пишу «дом синий», он возвращает EN для английского языка. Чтобы прервать его выполнение, нажмите Ctrl + С.
Когда я выполняю эту команду в консоли Linux, первое предложение занимает некоторое время, а другое — быстро.
Я использую этот код для выполнения этой команды php, но для возврата результата требуется много секунд:
<?php
$cmd = "analyzer -f /usr/share/freeling/config/ident.cfg --outlv ident --fidn /usr/share/freeling/common/lang_ident/ident.dat";
$descriptorspec = array(
0 => array("pipe", "r"),
1 => array("pipe", "w"),
2 => array("pipe", "w"),
);
$process = proc_open($cmd, $descriptorspec, $pipes);
$oracion[0]="we are the word";
$oracion[1]="somos el mundo";
if (is_resource($process)) {
fwrite($pipes[0], $oracion[0]);
fwrite($pipes[0], $oracion[1]);
fclose($pipes[0]);
while($pdf_content = fgets($pipes[1]))
{
echo $pdf_content . "<br>";
}
fclose($pipes[1]);
$return_value = proc_close($process);
}
?>
Как я могу улучшить время отклика?
При запуске программы необходимо загрузить статистические модели для всех языков. Вот почему первое предложение занимает больше времени.
Программа «Анализатор», поставляемая с FreeLing, является просто демонстрацией. Лучший способ использовать библиотеку — написать собственную программу, как показано в руководстве по FreLing. https://talp-upc.gitbooks.io/freeling-tutorial/content/
Если вы хотите вызывать FreeLing из PHP, API не существует, поэтому вам, вероятно, следует прибегнуть к «режиму сервера», когда фрилинг загружается один раз, и тогда он будет принимать запросы.
Вы найдете больше информации в руководстве пользователя FreeLing https://talp-upc.gitbooks.io/freeling-4-1-user-manual/content/
Других решений пока нет …