Класс тезауруса или API для PHP

TL; DR Резюме: Мне нужно одно приложение командной строки, которое я могу использовать для получения синонимов и других связанных слов. Он должен быть многоязычным и работать кросс-платформой. Может ли кто-нибудь предложить подходящую программу для меня или помочь мне с теми, которые я уже нашел? Благодарю.

Более длинная версия: мне было поручено написать систему на PHP, которая может предложить альтернативные предложения для слов, введенных пользователем. Мне нужно найти приложение тезауруса / API или подобное, которое я могу использовать для создания этих предложений.

Важно отметить, что он должен быть многоязычным (английский, датский, французский и немецкий). Это исключает большую часть программного обеспечения, которое мне удалось найти с помощью Google. Он также должен быть кросс-платформенным (он должен работать на Linux и Windows).

Мои исследования позволили мне двух перспективных кандидатов: WordNet и Stardict .

На данный момент я сосредоточен на WordNet, называя его с PHP с помощью функции shell_exec() , и мне удалось использовать его для создания очень перспективной прототипа PHP-страницы, но до сих пор на английском языке. Я борюсь с тем, как использовать его многоязычный.

Сайт Wordnet имеет внешние ссылки на проекты Wordnet на другом языке (например, DanNet для датчан), но, хотя их часто называют Wordnet, они, похоже, используют различные форматы и программное обеспечение для баз данных, что делает их непригодными для меня. Мне нужен последовательный интерфейс, который я могу вызвать из своей PHP-программы.

Stardict выглядел более перспективным с этой точки зрения: они предоставляют словари на многих языках в стандартном формате DB для одного приложения.

Но нижняя сторона Stardict – это, прежде всего, графическое приложение. Вызов из командной строки запускает графический интерфейс. По-видимому, версия командной строки ( SDCV ), но она выглядит совершенно устаревшей (последнее обновление 2006 года) и только для Linux.

Может ли кто-нибудь помочь мне с моими проблемами с любой из этих программ? Или, может ли кто-нибудь предложить любое другое альтернативное программное обеспечение или API, которые я мог бы использовать?

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

Solutions Collecting From Web of "Класс тезауруса или API для PHP"

Вы можете попытаться использовать функции полнотекстового поиска PostgreSQL:

http://www.postgresql.org/docs/9.0/static/textsearch.html

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

Основными шагами были бы (для каждого языка):

  1. Создайте необходимую таблицу (соответствующим образом сопоставленную). Для нас достаточно одного столбца, например:

     create table dict_en ( word text check (word = lower(word)) primary key ); 
  2. Извлеките необходимые файлы словаря / тезауруса (те из aspell / Open-Office должны работать).

  3. Настройте текстовый поиск (см. Ссылку выше, а именно раздел 12.6), используя соответствующие файлы.

  4. Вставьте весь словарь в таблицу. (Конечно, где-то есть файл csv …)

  5. И, наконец, проиндексируйте вектор, например:

     create index on dict_en using gin (to_tsvector('english', word)); 

Теперь вы можете запускать запросы, которые используют этот индекс:

 -- Find words related to `:word` select word from dict_en where to_tsvector('english', word) @@ plainto_tsquery('english', :word) and word <> :word; 

Возможно, вам потребуется создать отдельную базу данных или схему для каждого языка и добавить дополнительное поле (tsvector), если Postgres откажется индексировать выражение из-за параметра языка. (Я давно прочитал полнотекстовые документы). Подробности об этом будут в разделе 12.2, и я уверен, что вы будете знать, как настроить выше, если это так.

Однако, насколько мне известно, этот подход должен работать.

Существует пример PHP для использования API тезауруса здесь …

http://thesaurus.altervista.org/testphp

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

Кажется, это вариант, хотя я не уверен, что его многоязычность: http://developer.dictionary.com/products/synonyms

Я также нашел следующий сайт, который делает что-то похожее на вашу конечную цель, возможно, вы можете попытаться связаться с владельцем и спросить его, как он это сделал: http://www.synonymlab.com/