4

2つのドキュメントの類似性を見つけるプログラムを作成しようとしています。英語のみを使用しているため、wordnetを使用することにしましたが、wordnetをphpにリンクする方法が見つからず、phpからwordnetapiが見つかりません。

フォーラムで誰かが(Spudley)phpからwordnetを呼び出した(shell_exec()関数を使用)、 ThesaurusクラスまたはPHP用APIを呼び出したと言っているのを見ました[編集済み]

使用されているメソッドやサンプルコード、おそらくphpでwordnetの使用を開始するためのチュートリアルを本当に知りたいです。

どうもありがとう

4

1 に答える 1

10

WordNetサイトからリンクされているPHP拡張機能は非常に古く、古くなっています。PHP4で動作すると主張しているので、何年も見られていないと思います。

WordNet-> PHPで利用できるAPIは他にないので、私は独自のソリューションを作成しました。

WordNetはコマンドラインから実行できるため、PHPのshell_exec()関数は出力を読み取ることができます。

コマンドラインからWordNetを実行する場合(Wordnetのディレクトリにcdしてから、wnパラメータなしで)、Wordnetがサポートする可能性のある機能のリストが表示されます。

まだコマンドラインで、これらの関数の1つまたはいくつかを試してみると、Wordnetがその結果をどのように出力するかがわかります。たとえば、「スター」という単語の同義語が必要な場合は、次の-synsn関数を試すことができます。

wn star -synsn

これにより、次のような出力が生成されます。

名詞スターの同義語/上位概念(推定頻度順)

星の8つの感覚

センス1つ星=>天体、天体

Sense 2 ace、adept、champion、sensation、maven、mavin、virtuoso、genius、hotshot、star、superstar、whiz、whizz、wizard、wiz=>エキスパート

センス3つ星=>天体、天体

センス4つ星=>平面図形、2次元図形

センス5スター、プリンシパル、リード=>俳優、ヒストリオン、プレーヤー、スピアン、ロールプレーヤー

Sense 6ヘッドライナー、スター=>パフォーマー、パフォーミングアーティスト

Sense 7アスタリスク、スター=>文字、書記素、グラフィックシンボル

Sense 8スタートポロジ、スター=>トポロジ、ネットワークトポロジ

PHPでは、関数を使用してこれと同じ出力を読み取ることができますshell_exec()

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

これ$resultで、上記で引用したテキストのブロックが含まれるはずです。

この時点で、適切なコーディングを行う必要があります。そのテキストのブロックを取得して、必要なデータに合わせて解析する必要があります。

これはそれがトリッキーになるところです。データはプログラムではなく人間が読み取るように設計された形式で表示されるため、正確に解析するのは困難です。

検索オプションが異なれば、出力の表示もわずかに異なることに注意することが重要です。また、返される結果の一部はやや難解なものになる可能性があります。結果をスコアリングするために重み付けシステムを作成することになりましたが、それは私のニーズにかなり固有であったため、独自のシステムを考え出すには、それを試してみる必要があります。

それがあなたにとって十分な助けになることを願っています。:)

于 2011-06-13T15:44:28.377 に答える