2

「visit Spain」のようなアイテムをデータベースに保存したいとしましょう。ただし、ユーザーの送信を許可し、スペインを訪問したいすべてのユーザーを追跡したいのですが、「スペインに行く」と入力できるようにしたいと考えています。スペイン」、「スペインを見る」、または「ツアースペイン」。これを行う効率的な方法を探しています。現在、私の考えでは、これらの行に沿って進んでいます(簡略化):

  • 名詞
    1. 一意のID
    2. 名詞
    3. 動詞 [fk]
  • 動詞
    1. 一意のID
    2. 動詞
  • 同義語
    1. 一意のID
    2. 動詞 [fk]
    3. シノニム

私は基地から外れていますか、それともこれが最善の方法ですか? パフォーマンスとメンテナンスの容易さの両方を求めています...

4

1 に答える 1

0

単純な自然言語処理 (NLP) について調べる必要があります。

理想的には、同じ正規化された値を持つユーザーを検索できるように、入力を正規化する必要があります。

  1. 最初に入力をトークン化し、単語を分離します。"Visit Spain" は ("Visit", "Spain") と "
  2. 同等の単語を探します。たとえば、多くの場合、大文字と小文字を区別できません。
  3. テーブル ルックアップを使用して、"Visit" => "Tour"、"See" => "Tour" など、より高度な単一単語の同等性を見つけます。この ("Visit", "Spain") と ("See", "Spain") を使用すると、両方とも ("Tour", "Spain") に変換されます。
  4. フレーズの同等性を探します。たとえば、「行く」=>「訪問」。これにより、("Go", "to", "Spain") は ("Tour", "Spain") になります。
  5. パターン マッチングを適用します。たとえば、 ("Tour" X "and" Y) => ("Tour" X), ("Tour" Y) は、("Tour", "Spain") と ("Tour", "France") という 2 つの個別の項目になる可能性があります。 」)。
  6. すべての変換を適用したら、結果の正規化されたアイテムを保存します。

あなたの仕事は、翻訳のクラスを定義し、それらの翻訳の多くのインスタンスを見つけて、それらを入力に適用することです。

正規化されたアイテムを取得したら、同じ正規化されたアイテムを持つ他のユーザーを検索できます。

于 2012-08-28T02:39:56.190 に答える