Solrから使うOpenNLPの
固有表現抽出
株式会社ロンウイット 関口宏司
@kojisays
自己紹介
• ロンウイット 創業者兼社長
• Apache Lucene/Solr/OpenNLP コミッター兼PMCメンバー、
ASFメンバー
ASFメンバーって・・・?
https://www.rondhuit.com/miracle-org-asf.html
• 書籍執筆&監修
• Apache Lucene/Solr, Apache Ant, etc.
2
Apache OpenNLP
• 基本的なNLPタスクのツールキット(教師あり機械学習)
• [分類] 言語判別、文書分類
• [系列ラベリング] 文識別、単語分割、品詞タグ付け、固有表
現抽出、チャンク化
• [その他NLP] レンマ化、構文解析
• 海外ではビジネス利用もされている(Apache License)
• Java API。柔軟な素性設定
3
系列ラベリング
• データ系列の入力に対し、クラスの系列を出力
• 品詞タグ付け、固有表現抽出
• 普通の分類問題とは異なる
• 普通の分類問題:F → C
• 系列ラベリング:F1F2…Fn → C1C2…Cn
• ラベルが系列内の他のラベルに依存
※ 株式会社ロンウイットの研修コース「Apache Mahout & Sparkではじめる機械学習」より抜粋。
F1 F2 F3 F4 F5
Time flies like an arrow.
[名詞] [動詞] [前置詞] [冠詞] [名詞]
C1 C2 C3 C4 C5
直前が名詞だと動詞に変わる
4
• 通常の分類器の逐次適用(←OpenNLPが採用)
• Ciの推定に、Fi, Fi-1, Fi+1やCi-1などを用いる
• その他の解き方:HMM、CRF
系列ラベリング問題の解き方
※ 株式会社ロンウイットの研修コース「Apache Mahout & Sparkではじめる機械学習」より抜粋。
5
F1 F2 F3 F4 F5 …
C1 C2 C3 C4 C5 …
固有表現抽出
• 日本語などの自然言語で書かれたテキストから、固有名詞
を属性付き(固有名詞タイプ)で抽出するNLPタスクの一
種
• デモ(用意するもの)
• apache-opennlp-1.9.0-bin.tar.gz
• rondhuit-ja-ner-1.0.0.zip
※ 株式会社ロンウイットの研修コース「Apache Mahout & Sparkではじめる機械学習」より抜粋。
6
OpenNLPの
日本語対応への道
• 洋モノのNLPツールにありがちな問題
• 「テキストはあらかじめ単語分割されているでしょ、
普通」
⇒ Lucene/Solr はよくできてる!!
• 日本語に関心がない・・・
• みんな忙しい・・・
7
OpenNLPの
日本語対応の道• 日本語と英語の形態素解析の違い
• 英語:(形態素を決める+)品詞を決める
illegaly = il + legal + ly ← まれ。多くは「形態素」≒「単語」なのでここまでやらない
• 日本語:単語境界を決める+品詞を決める
• ようやく素性としてのひらがなとカタカナ字種を識別させることに成功!
(1.9.0)
isentthemachine
i(PPSS) sent(VBD) the(AT) machine(NP)
i(PPSS) sent(VBD) them(PPO) a(AT) chine(NP)
8
Solr+OpenNLP
• OpenNLPExtractNamedEntitiesUpdateProcessorFactory
• Solr 7.3.0 以降(LUCENE-2899)
• 現状、複数固有表現タイプ対応に不具合あり
• ファセットでの利用
9
q=ハワイ
予算で絞り込む
10〜15万円
出発地で絞り込む
羽田空港
Solrのファセット
& 絞り込み検索
10
ユーザが欲しい
文書集合
検索システムが
返す文書集合
構造化文書
ツアー名 価格 空港
ハワイオアフ島
ダイヤモンドヘッド
28万円 成田空港
ハワイワイキキ
ビーチ3泊5日
13万円 羽田空港
11
インデクシング時に
文書を構造化
記事 イベント 人名 地名 ・・・
安倍⾸相は12⽇⽇ 、甲府市で開かれた自民党
ゴルフコンペで...
ゴルフコンペ 安倍 甲府市
注目はグランプリファイナルで4連覇を達成し
た羽生。年末の全日本選手権はインフルエンザ
による影響で欠場した。その後静養し、カナダ
・トロントへ向け出発。
グランプリファイ
ナル
全日本選手権
羽生
カナダ
トロント
人名:安倍
地名:甲府市
q=ゴルフ
「記事」から自動抽出されたキーワード
12
まとめ
• Apache OpenNLP の業務利用拡大に期待
• 日本語の場合、形態素解析器利用前提で(1.9.0〜)
• 応用例
• 情報検索:検索精度向上
• ニュース記事キーワード抽出、自動タグ付け、・・・
13
参考
• Apache OpenNLP
• Web: https://opennlp.apache.org/
• doc: https://opennlp.apache.org/docs/1.9.0/manual/opennlp.html
• ロンウイットホームページ
• 最新 Apache OpenNLP 1.9.0 で日本語固有表現抽出を試す
https://www.rondhuit.com/apache-opennlp-1-9-0-ja-ner.html
14

Solr から使う OpenNLP の日本語固有表現抽出

Editor's Notes

  • #4 ロゴについて(OPENNLP-6) 本:関口のアイディア。辞書またはモデルを表す 羽ペン:Tommasoのアイディア。
  • #8 word2vec もそう。