Я пытаюсь написать программу, чтобы найти сходство между двумя документами, и поскольку я использую только английский, я решил использовать wordnet, но я не могу найти способ связать wordnet с php, я не могу найти какой-либо wordnet api из php.
Я видел на форуме, что кто-то сказал (Spudley), он вызвал wordnet из php (используя функцию shell_exec ()), Thesaurus class или API для PHP [отредактировал]
Мне бы очень хотелось знать метод, используемый или какой-то примерный код, возможно, для начала использования wordnet с php.
большое спасибо
Расширение PHP, связанное с сайтом WordNet, очень устарело и устарело – оно утверждает, что работает с PHP4, поэтому я не думаю, что это просматривалось годами.
Для WordNet-> PHP нет других API-интерфейсов, поэтому я выполнил собственное решение.
WordNet можно запускать из командной строки, поэтому shell_exec()
PHP может читать результат.
Если вы запустите WordNet из командной строки (cd в каталог Wordnet, а затем просто wn
) без каких-либо параметров, он покажет вам список возможных функций, поддерживаемых Wordnet.
Все еще в командной строке, если вы затем попробуете одну или некоторые из этих функций, вы увидите, как Wordnet выводит свои результаты. Например, если вы хотите синонимы слова «звезда», вы можете попробовать функцию -synsn
:
wn star -synsn
Это даст результат, который выглядит примерно так:
Синонимы / Гипернымы (упорядочены по оценочной частоте) существительной звезды
8 чувств звезды
Чувство 1 звезда => небесное тело, небесное тело
Sense 2 ace, адепт, чемпион, сенсация, maven, mavin, виртуоз, гений, hotshot, звезда, суперзвезда, whiz, whiz, wizard, wiz => expert
Чувство 3 звезды => небесное тело, небесное тело
Чувство 4 звезды => плоская фигура, двумерная фигура
Чувство 5 звезд, главное, лидерство => актер, исполнитель, игрок, теплик, ролевой игрок
Чувство 6 хедлайнеров, звезда => исполнитель, исполнитель
Sense 7 звездочка, звезда => символ, графема, графический символ
Sense 8-звездная топология, звезда => топология, сетевая топология
В PHP вы можете прочитать этот же вывод с помощью функции shell_exec()
.
$result = shell_exec('/path/to/wn '.$word.' -synsn');
Теперь $result
должен содержать блок текста, приведенный выше.
На этом этапе вам нужно сделать правильное кодирование. Вам нужно будет взять этот блок текста и проанализировать его для данных, которые вы хотите.
Вот где это становится сложно. Поскольку данные представлены в формате, предназначенном для чтения человеком, а не программой, сложно точно разобрать.
Важно отметить, что различные варианты поиска представляют их результаты несколько иначе. И некоторые результаты, которые возвращаются, могут быть несколько эзотерическими. Я закончил писать систему взвешивания, чтобы забить результаты, но это было довольно специфично для моих потребностей, поэтому вам нужно поэкспериментировать с ним, чтобы придумать свою собственную систему.
Надеюсь, это поможет вам. 🙂