2

同義語を一意のコードまたは単語にマップする Java ベースのアプリケーションを開発したいと考えています。たとえば、医学用語では、 heart attack または cardiac arrestなどという言葉は同じことを意味します。そのため、そのようなマッピングを格納するデータベース (RDBMS である必要はありません) を構築したいと考えています。このようなマッピングは、後で追加/変更または削除する必要があります。

主な目的は、エンティティを意味的に一緒にマップするアプリケーションを開発することです。

入力は 2 ~ 3 単語のフレーズのようになり、標準コードにマッピングされます。疾患コードHA50122445にマッピングされた心臓発作心停止の例。明日、新しいフレーズ say myo heart illegal を見つけたら、コードHA50122445にマッピングしたいと思います。

Apache Luceneを見てみましたが、テキストマイニング用、検索キーワードに基づく優先度用です。私の要件はWordnetに似ています。Wordnet データベースは編集可能または変更可能ですか? 私の調査によると、いいえ。そうですか?

ご指導いただけると大変助かります。ありがとうございました

4

4 に答える 4

3

UMLS metathesaurusMetaMapを調べてみてください。前者は、「何百万もの生物医学および健康関連の概念を含む、大規模で多目的かつ多言語のシソーラス」です。それにはいくつかの識別子が含まれている必要があります。時間をかけて自分で構築するのは非常に面倒なので、それを基に「データベース」を作成できます。後者は自然言語処理ツールキットで、テキストをスキャンし、医学的概念を発見し、それらを UMLS シソーラスのエントリにマッピングします。

免責事項: 私はこれらのリソースのいずれも使用していません。私のチームはクライアント向けに同様のリソースを作成しましたが、自由に利用できるものではないため、お勧めしません.

于 2013-02-20T22:58:28.123 に答える
3

ブラットラピッドアノテーションツールをチェックしてください

http://brat.nlplab.org/index.html

ドキュメントに注釈を付けたり、2 つの異なるフレーズが実際には同じものであることを示したり、それらのエンティティを正規の参照に向けたりすることができます。

データをフラットファイルに保存します。スタンフォード大学の CoreNLP を使用してバリアント (心臓発作や「心筋梗塞」など) を学習し、それらを同じものとして認識することもできます。

Wordnet はダウンロード可能で、ダウンロードしたバージョンにいつでも新しい情報を追加できます。

于 2013-02-20T22:46:21.807 に答える
0

HashMap、1つの「HA501225..」オブジェクトのキーと同義です。

Map<String, String> lookup = new HashMap<>();
lookup.put("Heart Attack", "HA50..");
lookup.put("cardiac arrest", "HA50..");

//lookup is now simple -
lookup.get("Heart Attack") // gives us HA5012..

簡単な開始ソリューション。問題が発生したら、スケーリングの問題や問題が発生したら、そこから最適化します。おそらく、Redis、またはこれらのマッピングを提供できる別のキー値データベースを調べることができます。

于 2013-02-20T11:38:25.133 に答える
-2

RDBMSはそのための最良のソリューションです。いずれかを選択してください。埋め込まれた例:HSQLDB。しかし、どのmysqlまたはpostgreも適合するはずです。

于 2013-02-20T11:41:10.047 に答える