2

GATE(JavaベースのNLPフレームワーク)を使用していて、辞書と部分的に一致する単語を見つけたいと思っています。たとえば、私は次の用語を含む病気の辞書を持っています

Congestive cardiac failure
Congestive Heart Failure
Colon Cancer
      .
      . 
      .
Thousands of more terms

この文字列の文字列として"Father had cardiac failure last year"、「心不全」が辞書の用語の一部として発生するため、部分一致として識別したいとします。

Python、JS、C#で同様のテーマに関する議論を見たことがありますが、このような場合に何が役立つかはわかりません。ここでアホコラシックを利用できるのかしら。

4

3 に答える 3

1

たぶん、Luceneを使用する必要があります。辞書の各行をドキュメントとして扱い、テキストの各文をクエリとして扱います。

于 2012-01-06T11:19:05.423 に答える
1

発生する1つの質問は、検索に含めるサブ文字列です。すべてのサブストリングを含めると、「Heart」だけも一致しますが、それは実際には病気ではありません。おそらく、すべての右揃えの(単語-)部分文字列(おそらく長さが1より大きい)が受け入れられるでしょう。

したがって、実行できることの1つは、含めるサブストリングを使用してAho-Corrasickパターンマッチャーをトレーニングすることです。サブストリングがどの辞書用語から来たのかという情報を保持するには、おそらくアルゴリズムを少し変更するか(その情報を保持することが重要な場合)、後で検索するために別のデータ構造を構築する必要があります。

いずれにせよ、トレーニング/マッチングの前に、病気のリストと検索したいドキュメントを小文字に変換します。スペルミスの可能性がある場合は、ファジーなエイホ-コラシックオートマタに関する論文もあります。

于 2012-01-06T12:30:59.537 に答える
1

UIMA Concept Mapperアノテーターアドオンには、探しているものと同様の機能が含まれています。あなたは考えるかもしれません:

  • GATE内でのUIMAの使用を含む:http://gate.ac.uk/userguide/chap:uima
  • アドオンの主なアイデアを使用して、同様のコンポーネントを開発します
于 2012-01-10T11:45:23.283 に答える