0

この形式のコマンドを受け入れることができるシステムを設計しています

command context

コンテキストは、次のような約 200 個の単語のタプルのリストから定義されます。

physical therapy
cardiac
physician visit
hospital inpatient
hospital outpatient
etc.

スペルミスなどのユーザーエラーを修正できるようにするだけでなく、「理学療法」が「理学療法士」と同じであることを理解し、同義語を受け入れることもシステムに求めています。

最後に、完全に一致しない場合は、ユーザーに最適な一致を明確にするように求める必要があります。

これは私がそれを行うことを考えている方法です:

  1. コンテキスト ワードと着信クエリの両方をステム処理する
  2. クエリからコマンド文字列を削除/分離する
  3. アナグラムを確認して修正します (ただし、これはスペルミスの 1 つのカテゴリのみを対象としています)。
  4. 完全に一致する単語を探す
  5. 「近い一致」を探す

これは、特に手順 3 と 5 で、きちんとした解決策とは思えません。

これを行うためのより良い/より簡単な方法は何ですか? C#でそれを行うためのライブラリ、ボーナス。

Luceneはおそらくこれを行うことができますか?任意のガイダンスをいただければ幸いです。

ありがとう!

4

2 に答える 2

1

目的には不正確すぎるかもしれませんが、Soundexは、2 つの単語が「似ている」かどうかを判断するための一般的なアルゴリズムです。

于 2012-04-16T23:55:26.380 に答える
0

Lucene は現在、「グロブ」の意味での近似一致のみをサポートしているため、Lucene はステップ 4 と 5 でのみ適用するのが最適であると思います (ワイルドカード文字 -- 1 文字の一致には「?」、複数の文字の一致には「*」)。

おおよそのマッチングに関する一連の文献があります。私はagrepの作業から始めて、そこから進めます (ただし、その理由の 1 つは、私が agrep に精通しているからです)。

于 2012-04-17T20:30:46.503 に答える