2

私はテキストマイニングで働いており、私の仕事は生物医学的実体(遺伝子、タンパク質、薬物、病気)に焦点を当てています。私はあなたといくつかの質問を共有したいと思います。

今、私の目標は、(Medlineからの)生物医学テキストで生物医学エンティティを見つけることであり、用語の辞書を通して、見つかった各エンティティを一意の識別子で識別できます。

テキスト、辞書、結果を保存するために、MongoDB(非SQLデータベース)を使用しています。各要約は文に分割され、各文は新しいレコードに保存されます(トークン、チャンク、品詞タグのリストを含む)。エンティティを見つけるために、私はすべての歩哨を取得し、それぞれについて、辞書内の各用語の通常の式を作成します(Pythonの場合)。

for term in dicitonary:
     matches = re.finditer(r'(' + term + ')', sentence)
     for m in matches:
          ini = m.start()
          end = m.end()
          result.append(ini, end, dictionary.get_identification[term])

しかし、それは本当に遅いです、私は150,000の要約のいくつかのサブセットを持っています(> 1,000,000の文)。

私にとって、用語が辞書に正確に含まれていないエンティティをさらに抽出することは非常に興味深いソフトマッチングですが、実行時間が長くなる可能性があります。

私の問題は、文の中で用語を見つけなければならないので、文ごとに多くの正規表現(私は30万エントリの辞書を持っています)を行うことだと思います。機械学習アルゴリズムがなければ、この問題をどのように解決できますか?そしてMLアルゴリズムでは?今、私は自分のプログラミング言語、データベースを柔軟に変更できます...

どうもありがとうございます!!!

よろしく、

àlex。

4

1 に答える 1

4

ごとに1つのREを構築する代わりにterm、それらすべてをキャッチできる単一の選言的なREを構築します。

pattern = re.compile("(%s)" % "|".join(re.escape(term) for term in dictionary))

次に、を使用しますpattern.finditer

「機械学習の使い方」については、あまりにも広すぎる質問です、私見。「生物医学的固有表現抽出」をグーグルで検索することから始めます。その問題とさまざまなツールに関する膨大な量の文献があります。

于 2012-07-19T09:38:09.590 に答える