13

TL;DR 要約:同義語やその他の関連語を取得するために使用できる単一のコマンドライン アプリケーションが必要です。多言語対応で、クロスプラットフォームで動作する必要があります。誰かが私に適したプログラムを提案したり、私がすでに見つけたプログラムを手伝ってくれたりできますか? ありがとう。


より長いバージョン: 私は、ユーザーが入力した単語の代替候補を提示できるシステムを PHP で作成する任務を負っています。これらの提案を生成するために使用できるシソーラス アプリケーション/API などを見つける必要があります。

重要なのは、多言語 (英語、デンマーク語、フランス語、ドイツ語) である必要があることです。これにより、Google を使用して見つけたほとんどのソフトウェアが除外されます。また、クロスプラットフォームである必要があります (Linux と Windows で動作する必要があります)。

私の調査の結果、WordNetStardictという 2 つの有望な候補が見つかりました。

私はこれまで WordNet に焦点を当て、shell_exec()関数を使用して PHP から呼び出し、それを使用して非常に有望なプロトタイプ PHP ページを作成することができましたが、これまでのところ英語のみです。多言語での使用方法に苦労しています。

Wordnet サイトには、他の言語の Wordnet プロジェクトへの外部リンクがあります (デンマーク語のDanNetなど)。Wordnet と呼ばれることが多いですが、さまざまなデータベース形式とソフトウェアを使用しているようで、私には不向きです。PHP プログラムから呼び出すことができる一貫したインターフェイスが必要です。

Stardict は、その観点からはより有望に見えました。1 つのアプリケーションに対して標準の DB 形式で多くの言語の辞書を提供します。

しかし、Stardict の欠点は、主に GUI アプリであることです。コマンドラインから呼び出すと、GUI が起動します。コマンドライン バージョン ( SDCV ) があるようですが、かなり古くなっているようで (最終更新は 2006 年)、Linux 専用です。

これらのプログラムのいずれかに関する問題を解決できる人はいますか? または、私が使用できる他の代替ソフトウェアまたは API を誰かが提案できますか?

どうもありがとう。

4

3 に答える 3

7

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;

言語パラメーターが原因で Postgres が式のインデックス作成を拒否する場合は、言語ごとに個別のデータベースまたはスキーマを作成し、追加のフィールド (tsvector) を追加する必要がある場合があります。(私はずっと前に全文ドキュメントを読みました)。これに関する詳細はセクション 12.2 にあります。この場合、上記を調整する方法を知っていると思います。

ただし、実装の詳細がどちらであっても、このアプローチは機能するはずです。

于 2011-05-15T06:26:45.783 に答える
7

シソーラス API の使用法に関する PHP の例がここにあります...

http://thesaurus.altervista.org/testphp

イタリア語、英語、フランス語、ドイツ語、スペイン語、ポルトガル語で利用できます。

于 2011-04-28T11:18:38.327 に答える
0

これはオプションのようですが、多言語かどうかはわかりません: http://developer.dictionary.com/products/synonyms

また、最終目標に似たようなことを行う次のサイトも見つけました。所有者に連絡して、どのようにそれを行ったかを尋ねることができるかもしれません: http://www.synonymlab.com/

于 2011-05-16T17:22:32.807 に答える