18

1 つの単語に関連する単語 (具体的には物理的なオブジェクト) を見つけようとしています。例えば:

テニス: テニスラケット、テニスボール、テニスシューズ

スヌーカー: スヌーカー キュー、スヌーカー ボール、チョーク

チェス: チェス盤、チェスの駒

本棚: 本

私はWordNet、特にメロニムのセマンティック関係を使用しようとしました。ただし、以下の結果が示すように、この方法には一貫性がありません。

テニス:サーブ、ボレー、フットフォールト、セットポイント、リターン、アドバンテージ

スヌーカー:なし

Chess : チェスの動き、チェッカー盤

本棚: シェルフ

最終的には項の重み付けが必要になりますが、それは今のところあまり問題ではありません。

これを行う方法について何か提案はありますか?


ただの更新:ジェフとストンプチキンの両方の回答を組み合わせて使用​​することになりました。

ウィキペディアから得られる情報の質は優れており、具体的には (当然のことながら) 関連情報が非常に多くあります (「ブログ」や「iPod」などの用語が存在しない一部のコーパスと比較して)。

ウィキペディアからの結果の範囲は最良の部分です。このソフトウェアは、次のような用語を照合できます (簡潔にするためにリストを省略しています)。

  • ゴルフ: [ボール、アイアン、ティー、バッグ、クラブ]
  • 写真: [カメラ、フィルム、写真、アート、イメージ]
  • 釣り: [魚、ネット、フック、トラップ、餌、ルアー、ロッド]

最大の問題は、特定の単語を物理的なアーティファクトとして分類することです。デフォルトの WordNet は、多くの用語 (「ipod」や「トランポリン」など) が存在しないため、信頼できるリソースではありません。

4

2 に答える 2

15

あなたが求めているのは、概念間の意味的な関係の源だと思います。そのためには、いくつかの方法を考えることができます。

  1. 意味的類似性アルゴリズム。これらのアルゴリズムは通常、Wordnet の関係をツリー ウォークして、2 つの用語がどの程度関連しているかを示す実数値のスコアを算出します。これらは、関心のある概念を WordNet がモデル化する方法によって制限されます。WordNet::Similarity (Perl で作成) は非常に優れています。
  2. OpenCycをナレッジ ベースとして使用してみてください。OpenCyc は Cyc のオープン ソース バージョンであり、「現実世界」の事実に関する非常に大きな知識ベースです。WordNet よりもはるかに豊富なセマティック リアルションシップを備えている必要があります。ただし、私は OpenCyc を使用したことがないため、OpenCyc の完成度や使いやすさについて話すことはできません。
  3. nグラム頻度分析。ジェフ・モーザーが述べたように。大量のデータから関係を「発見」できるデータ駆動型のアプローチですが、多くの場合、ノイズの多い結果が生成される可能性があります。
  4. 潜在的意味分析。意味的に関連する単語のセットを見つける n-gram 頻度分析に似たデータ駆動型のアプローチ。

[...]

あなたがやりたいと言っていることから判断すると、最後の 2 つのオプションが成功する可能性が高いと思います。関係が Wordnet にない場合、セマンティックの類似性は機能せず、OpenCyc はスヌーカーが存在するという事実以外にスヌーカーについてあまり知らないようです。

n-gram と LSA (またはそれに類するもの) の両方を組み合わせることは良い考えだと思います。N-gram 頻度は、ターゲットの概念 (例: テニス ボール) に密接に結びついた概念を検出し、LSA は同じ文/ドキュメントで言及されている関連する概念 (例: ネット、サーブ) を検出します。また、名詞のみに関心がある場合は、(品詞タガーを使用して) 名詞または名詞句のみが含まれるように出力をフィルタリングすると、結果が改善される可能性があります。

于 2009-03-04T16:09:04.900 に答える
6

最初のケースでは、おそらく n = 2 のn-gramを探しているでしょう。Google などから取得するか、Wikipedia のすべてから独自に作成することができます。

詳細については、この関連する Stack Overflow の質問を確認してください。

于 2009-03-04T13:10:43.177 に答える