Выполнить команду Linux через PHP - PullRequest
0 голосов
/ 12 июня 2018

Я использую инструмент для анализа языка под названием 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 + C .

Когда я выполняю эту команду в консоли 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);

}
?>

Как улучшить время ответа?

1 Ответ

0 голосов
/ 13 июня 2018

При запуске программы необходимо загрузить статистические модели для всех языков.Вот почему первое предложение занимает больше времени.

Программа «анализатор», поставляемая с FreeLing, является просто демонстрацией.Лучший способ использовать библиотеку - написать собственную программу, как показано в учебнике FreLing https://talp -upc.gitbooks.io / freeling-tutorial / content /

Если вы хотитечтобы вызывать FreeLing из PHP, API не существует, поэтому вам, вероятно, следует прибегнуть к «режиму сервера», когда фрилинг загружается один раз, и тогда он будет принимать запросы.

Более подробную информацию вы найдете у пользователя FreeLing.manual https://talp -upc.gitbooks.io / freeling-4-1-user-manual / content /

...