実務で使う固有表現抽出 / Practical Use of Named Entity Recognition

A2cac4b3dcb2bc0b87917ddc034ef708?s=47 Sansan DSOC
October 09, 2020

実務で使う固有表現抽出 / Practical Use of Named Entity Recognition

■イベント 
:自然言語処理勉強会
https://sansan.connpass.com/event/190157/

■登壇概要
タイトル:実務で使う固有表現抽出
発表者: 
DSOC R&D研究員 高橋 寛治

Sansan DSOC
▼Website
https://sansan-dsoc.com/
▼Twitter
https://twitter.com/SansanDSOC

A2cac4b3dcb2bc0b87917ddc034ef708?s=128

Sansan DSOC

October 09, 2020
Tweet

Transcript

  1. 実務で使う固有表現抽出 Sansan ⾃然⾔語処理勉強会(2020.10.09) Sansan株式会社 DSOC R&D研究員 ⾼橋寛治

  2. Data Strategy and Operation Center Contents 固有表現抽出の概要 実務での固有表現抽出事例 固有表現抽出器を作ろう

  3. 固有表現抽出技術の概要

  4. Data Strategy and Operation Center 固有表現抽出 ⾃然⾔語で記述されたテキスト中に含まれている組織名や⼈名、 ⽇付け表現など、定義に従ったチャンクのこと Sansan株式会社 の

    ⾼橋寛治 が 2019年10⽉23⽇ に本発表を⾏います。 組織名 ⼈名 ⽇付 固有表現抽出とは、これら固有表現をテキスト中から抽出すること
  5. Data Strategy and Operation Center 固有表現抽出のざっくりした研究動向 4 1991年初出で、今もなお分野の⼀課題として研究が⾏われている ワークショップやデータセットが作られている 2007年

    2018年 ⼿法の移り変わり 経験則に基づくルール ▼ 特徴量に基づく統計的機械学習 ニューラルネットワークの利⽤ ▼ ⼊⼒の変化(⽂字ベースの登場) 対象テキスト ニュース ニュース SNS 医療 ⽣物学 評価⼿法 Precision, Recall, F1 Precision, Recall, F1 各年代のサーベイでの⾔及
  6. Data Strategy and Operation Center 固有表現抽出に取り組む上での課題 5 辞書とルールで頑張る? 辞書とルールにないととれない 辞書とルールはセットで効いてくるので意外と運⽤が難しい

    ⽂脈を規則で対処するのは難しい 機械学習で頑張る? 学習データの構築が難しい なんか間違えるけど、どうしよう(モデルの改善?データの改善?) 全体を通しての難しさ ドメイン変わると精度下がる Sansan株式会社 が提供する名刺管理サービス Sansan では、・・・ 組織名 組織名 企業名辞書の例 Sansan株式会社 株式会社提供 ・・・ 学習データの例 Sansan B-企業 株式会社 I-企業 が O ・・・ ・・・
  7. Data Strategy and Operation Center 固有表現抽出の⼿法 6 ルールベース 辞書や規則により、固有表現を抽出する 教師あり学習

    正例と負例を与えて、固有表現かどうかを判定させる 隠れマルコフモデルや決定⽊、SVM、CRFなど 半教師あり学習 ⼤量のアノテーションデータが必要な教師あり学習の問題点に向き合う ブートストラッピング 教師なし学習 WordNetの固有表現と似た⽂脈の語を取得 ニュースコーパスの特性を使って、ある時期に頻出する単語を推定
  8. 実務での固有表現抽出事例

  9. Data Strategy and Operation Center 企業の動向をお知らせするための固有表現抽出

  10. Data Strategy and Operation Center 企業の動向をお知らせするための固有表現抽出 記事から固有表現抽出器により取得した 企業名をキーとして利⽤し配信を実現

  11. Data Strategy and Operation Center ハイブリッド⽅式による固有表現抽出 ルールベースと深層学習による⽅式の組み合わせ ニュース配信における各⽅式のざっくりとした⽬的 • ルールベース

    • 確実に企業名と思われる⽂字列を抽出 • 深層学習 • ⽂脈から企業名らしいものを抽出
  12. Data Strategy and Operation Center ルールベースの企業名抽出器 ※闇雲に企業名を追加しても、うまくいかない:髙橋 寛治, 奥⽥ 裕樹.

    辞書に基づく組織名抽出における辞書整備の影響. ⾔語処理学会 第26回年次⼤会 発表論⽂集, pp.1245-1248 確実に企業名と思われる⽂字列を抽出するために、辞書作りを⼯夫 ⽅法 1. 全組織名をリストに持つ 2. 名刺交換枚数が⼀定以上の組織の正式組織名を辞書に追加 • スコアは⽂字数に応じて変更 3. 再現率をあげるために、組織名から法⼈格を削除し、次の条件に合致するものを 辞書に追加 • 3⽂字以上 • 数字だけで構成されない • 形態素解析辞書の⼀般名詞と同じ⽂字列ではない
  13. Data Strategy and Operation Center 辞書に基づく組織名抽出における辞書整備の影響 ⾼橋 寛治, 奥⽥ 裕樹

    (Sansan株式会社 DSOC)
  14. Data Strategy and Operation Center 深層学習による固有表現抽出 ⽅針としては、BERT の事前学習モデルを fine tuning

    する 具体的には、⼊⼒されたトークン列に対して、それぞれにクラス分類を⾏う 以前は Bidirectional LSTM-CNNs-CRF(Ma et al. 2016) を利⽤ コード例は、ブログに書いていますので、Sansan Builders Blog で BERT と検索してみてください IOB2(Inside-outside-beggining) という表現を利⽤ • B:固有表現の先頭 • I :2トークン以上で構成される固有表現の先頭以外の単語 • O:固有表現以外のトークン B, I に固有表現の種類(組織、⼈名など)を組み合わせて、ひとつのクラスを表現 ⼊⼒ 名刺 管理 サービス の Sansan 株式会社 が 出⼒ O O O O B I O
  15. Data Strategy and Operation Center データの作成 1. 固有表現の種類を定義 • 例:会社名、⼈名、⽇付

    2. アノテーションマニュアルの作成 • 種類⼀覧や例を載せる 3. アノテーション • 最初は⼗数件⾏い、不明瞭な点を洗い出し、明確にしておく • ある程度割り切りは必要 • まずは1,000⽂くらいアノテーションして、試しに学習 4. データ整形・分割 • Train, Dev, Test に分けるときには、⽂単位でランダムよりかは⽂書単位でランダムがいいと思う
  16. Data Strategy and Operation Center アノテーション例 表層形 IOB2 種類 BOS

    Sansan B 企業名 株式 I 企業名 会社 I 企業名 は O 、 O サンサン B ⼈名 太郎 I ⼈名 が O 、 O ・・・
  17. Data Strategy and Operation Center サービス提供⽔準にするために 抽出結果から除外するリストをメンテナンスしやすいようにしておく • メンテナンスの例 •

    「コロナ」や「COVID-19」が誤判定されやすかったため、ブラックリストに追加 Ø 株式会社コロナさまが誤配信されてしまう • データの追加よりはルールが適⽤は簡単 • コードのイメージ • 前処理や後処理は、オブジェクトとして注⼊する形式にする def ner_factory(): ner = NERService() ner.add_preprocessor(UnicodeNormalizer()) ner.add_postprocessor(StopOrganizationFilter()) logger.debug(ner.get_steps()) return ner
  18. 固有表現抽出器を作ろう

  19. Data Strategy and Operation Center 実務で使う固有表現抽出の超簡略化した個⼈的フローチャート ※実際には「うまくいく」によって臨機応変に対応する(新しい単語が増えるか、再現率⾼い⽅がいい、処理が⾼速など) ※辞書やデータを増やした際に、性能が改善されるか確認する 検討開始 辞書が

    ある 辞書+ルール でうまくいく CRF系で うまくいく BERTで うまくいく 辞書を作る 運⽤検討 タグ付きコーパスを 作る 運⽤検討 運⽤検討 ない ある うまくいく 厳しい うまくいく 厳しい うまくいく 厳しい 路頭に 迷える! (≒研究) 実際、⼀筋縄ではいかない
  20. Data Strategy and Operation Center データセットと⽇本語固有表現抽出器を作りましょう 去年から個⼈的に作りたいと思っていた商⽤利⽤可能なデータセットと ⽇本語固有表現抽出器 ⽇本語固有表現抽出器:OneNER(ワン エヌイーアール)

    CRFベースの軽量バージョン(light) BERTベースの通常バージョン データセット Wikipediaのテキストに対してタグ付けを⾏う BNL(Business Network Lab)のテキストに対してタグ付けを⾏う GitHub 準備中です・・・(https://github.com/sansan-inc/OneNER) Twitter(@SansanDSOC) で告知されると思います $ echo “Sansan株式会社が提供する・・・” | onener-cli -m models/hoge-model Sans B-ORGANIZATION an I-ORGANIZATION ・・・
  21. Data Strategy and Operation Center まとめ 実務で使う固有表現抽出について紹介 • 固有表現抽出の概要 •

    Sansan ニュース配信で利⽤している固有表現抽出技術 • サービス提供⽔準にする上での実務上での⼯夫 • 固有表現抽出器を作ろう • 個⼈的フローチャート • データセットと⽇本語固有表現抽出器
  22. Data Strategy and Operation Center 参考資料 Nadeau, David and Sekine,

    Satoshi. A survey of named entity recognition and classification. Linguisticae Investigationes, Vol. 30 , No. 1, pp.3-26, 2007. Yadav, Vikas and Steven Bethard. A Survey on Recent Advances in Named Entity Recognition from Deep Learning models. COLING, pp.2145-2158, 2018. 岩倉 友哉, 関根 聡. 実践・⾃然⾔語処理シリーズ 第4巻 情報抽出・固有表 現抽出のための基礎知識
  23. None