Вызов wordnet из php (класс Wordnet или API для PHP) - PullRequest
4 голосов
/ 13 июня 2011

Я пытаюсь написать программу, чтобы найти сходство между двумя документами, и так как я использую только английский, я решил использовать wordnet, но я не могу найти способ связать wordnet с php, я не могу найти ни одного wordnet api из PHP.

Я видел на форуме, что кто-то сказал (Spudley), что он вызвал wordnet из php (используя функцию shell_exec ()), Класс тезауруса или API для PHP [отредактировано]

Мне бы очень хотелось узнать, какой метод используется или какой-то пример кода, учебник, возможно, чтобы начать использовать wordnet с php.

большое спасибо

1 Ответ

9 голосов
/ 13 июня 2011

Расширение PHP, которое связано с сайтом WordNet, очень старое и устарело - оно претендует на работу с PHP4, поэтому я не думаю, что оно рассматривалось годами.

Других API-интерфейсов для WordNet-> PHP нет, поэтому я выбрал собственное решение.

WordNet можно запустить из командной строки, поэтому функция PHP shell_exec() может прочитать вывод.

Если вы запустите WordNet из командной строки (перейдите в каталог Wordnet, затем просто wn) без каких-либо параметров, он покажет вам список возможных функций, которые поддерживает Wordnet.

По-прежнему в командной строке, если затем вы попробуете одну / несколько из этих функций, вы увидите, как Wordnet выводит свои результаты. Например, если вы хотите синонимы для слова «звезда», вы можете попробовать функцию -synsn:

wn star -synsn

Это даст вывод, который выглядит примерно так:

Синонимы / Гиперниммы (Упорядоченные по Оцененной Частоте) существительного star

8 чувств звезды

смысл 1 звезда => Небесное тело, небесное тело

Sense 2 туз, адепт, чемпион, сенсация, мавен, мавин, виртуоз, гений, отчаянный, звезда, суперзвезда, одаренный, одаренный, волшебник, ум => эксперт

смысл 3 звезды => Небесное тело, небесное тело

смысл 4 звезды => плоская фигура, двумерная фигура

Sense 5 звезд, главный, ведущий => Актер, Хистрион, Игрок, Thespian, Ролевый игрок

Sense 6 хедлайнер, звезда => исполнитель, исполнитель

смысл 7 звездочка, звезда => символ, графема, графический символ

Sense 8-звездная топология, звезда => топология, топология сети

В PHP вы можете прочитать этот же вывод, используя функцию shell_exec().

$result = shell_exec('/path/to/wn '.$word.' -synsn');

Теперь $result должен содержать блок текста, указанный выше.

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

Здесь все становится сложно. Поскольку данные представлены в формате, предназначенном для чтения человеком, а не программой, сложно выполнить точный анализ.

Важно отметить, что различные параметры поиска отображают свои результаты немного по-разному. И некоторые из результатов, которые возвращаются, могут быть несколько эзотерическими. В итоге я написал систему взвешивания для оценки результатов, но она была достаточно специфична для моих потребностей, поэтому вам придется поэкспериментировать с ней, чтобы создать собственную систему.

Надеюсь, вам достаточно помощи. :)

...