Skip to content

Instantly share code, notes, and snippets.

@miyakawataku
Last active January 25, 2021 09:13
Show Gist options
  • Star 2 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save miyakawataku/05563a8a13b39c432d9beba1e3af75d0 to your computer and use it in GitHub Desktop.
Save miyakawataku/05563a8a13b39c432d9beba1e3af75d0 to your computer and use it in GitHub Desktop.
OpenNLPの固有表現抽出器に関する調査

Apache OpenNLPに関する調査

構成

Apache OpenNLPは自然言語処理のツールキットであり、Javaライブラリとコマンドライン・インタフェースを提供している。 Pythonの spaCy , NLTK , Stanford NLP Groupが提供するJavaライブラリ群 などと同種のもの。

プロジェクトメンバー の所属先は、 確認できた範囲でLucidworks(エンタープライズサーチの会社), Rockwell Collins(航空機関連のメーカ), Google, バスク大学など。どこか1企業が主導しているというわけではなさそう。

OpenNLPが提供する機能は以下の通り。

* 本体

  • Language Detector (言語判別器)

 * Sentence Detector (文区切り器)  * Tokenizer (単語区切り器)  * Name Finder / Named Entity Recognition (固有表現抽出器)  * Part-of-Speech Tagger (単語に品詞を割り当てる) * Lemmatizer (原型化) * Parser (構文木を作る) * Chunker (浅い構文木を作る)  * Document Categorizer (文書分類器) * Coreference Resolution (指示語の参照先を見つける)

  • Apache UIMA(自然言語処理パイプラインのフレームワーク)などとの統合

固有表現抽出の例

参照:

ソースコードリーディング

  • NameFinderME#find(String[] tokens)
  • NameFinderME#find(String[] tokens, String[][] additionalContext)
  • BeamSearch#bestSequences()
    •  ここが本命の処理っぽい。
    •  呼び出し先
      • MaxentModel#eval(String[], double[])
      • MaxentModel#getOutcome(index)

参考リンク

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment