Класс тезауруса или API для PHP [отредактировано] - PullRequest
12 голосов
/ 28 апреля 2011

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

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

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

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

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

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

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

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

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

Ответы [ 3 ]

7 голосов
/ 15 мая 2011

Вы можете попробовать использовать функцию полнотекстового поиска 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, и я уверен, что вы будете знать, как отрегулировать вышеизложенное, если это так.

Какой бы ни была детали реализации, я считаю, что подход должен работать.

7 голосов
/ 28 апреля 2011

Здесь приведен пример PHP для использования API тезауруса ...

http://thesaurus.altervista.org/testphp

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

0 голосов
/ 16 мая 2011

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

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

...