Upgrade to Pro — share decks privately, control downloads, hide ads and more …

jel: japanese entity linker

Eb44a911474e9fe07fa8552c15644634?s=47 izuna385
September 25, 2021

jel: japanese entity linker

Eb44a911474e9fe07fa8552c15644634?s=128

izuna385

September 25, 2021
Tweet

Transcript

  1. 1 個人で作るNLPライブラリ izuna385

  2. 2 今日話すこと • イントロ (10%) • 自然言語処理のタスクのひとつ エンティティ・リンキングについて (10%) • 作ったライブラリのデモなど

    (15%) • ライブラリを作った理由や、作りながら気づいた課題点 業務にも活かせそうな点、モチベーションの維持方法など。 (75%)
  3. 3 イントロ • 開発にもいろいろある

  4. 4 イントロ • 開発にもいろいろある 開発人数 少 多 開発したものを 使う人 多

  5. 5 イントロ • 開発にもいろいろある 開発人数 少 多 開発したものを 使う人 多

    少 個人開発 OSS 社内で共用する ライブラリ
  6. 6 イントロ • 開発にもいろいろある 開発人数 少 多 開発したものを 使う人 多

    少 個人開発 OSS 社内で共用する ライブラリ
  7. 7 イントロ • 個人開発にもいろいろある その場で 動けばOK 開発したものを 使う人 多 少

    ずっと メンテしたい
  8. 8 イントロ • 個人開発にもいろいろある その場で 動けばOK 開発したものを 使う人 多 少

    ずっと メンテしたい 論文実装 jupyterの 分析結果 競プロの 解答 自分用の ライブラリ 外に出す ライブラリ
  9. 9 今日話すこと • イントロ (10%) • 自然言語処理のタスクのひとつ エンティティ・リンキングについて (10%) • 作ったライブラリのデモなど

    (15%) • ライブラリを作った理由や、作りながら気づいた課題点 業務にも活かせそうな点、モチベーションの維持方法など。 (75%)
  10. 10 自然言語処理 • いろんなタスクがある 文書分類 感情分析 固有表現抽出 翻訳 要約 …

  11. 11 自然言語処理 • いろんなタスクがある 文書分類 感情分析 固有表現抽出 翻訳 要約 …

  12. 12 固有表現抽出

  13. 13 固有表現抽出 テキストから 人名・地名・組織名など 固有名詞を抽出するタスク

  14. 14 ? • 抽出して、その後どうするの?

  15. 15 ? A. 文書のタグに使い、検索に役立てる。 新出の専門語彙としてデータベースに登録する。 twitterの新しいトレンドとして検知する。 etc…. • 抽出して、その後どうするの?

  16. 16 固有表現抽出の限界 チャットボットの例 16 Machine 最近、調子どう?

  17. 17 固有表現抽出の限界 チャットボットの例 17 Machine 最近、調子どう? この前見た、 Independence day は

    最高に面白かった!
  18. 18 固有表現抽出の限界 チャットボットの例 18 Machine 最近、調子どう? この前見た、 Independence day は

    最高に面白かった! 固有表現抽出で、 ”Independece day” を抽出
  19. 19 チャットボットの例 19 Machine 最近、調子どう? この前見た、 Independence day は 最高に面白かった!

    Machine …(wikipedia探索中) 固有表現抽出で、 ”Independece day” を抽出
  20. 20 チャットボットの例 20 Machine 最近、調子どう? この前見た、 Independence day は 最高に面白かった!

    Machine …(wikipedia探索中)
  21. 21 チャットボットの例 21 Machine 最近、調子どう? この前見た、 Independence day は 最高に面白かった!

    Machine …(wikipedia探索中) https://en.wikipedia.org/wiki/Indepe ndence_Day_(United_States)
  22. 22 チャットボットの例 22 Machine 最近、調子どう? この前見た、 Independence day は 最高に面白かった!

    Machine https://en.wikipedia.org/wiki/Indepe ndence_Day_(United_States) アメリカ独立記念日だし、 今日は祝日、何しよう?
  23. 23 チャットボットの例 23 Machine 最近、調子どう? この前見た、 Independence day は 最高に面白かった!

    Machine https://en.wikipedia.org/wiki/Indepe ndence_Day_(United_States) アメリカ独立記念日だし、 今日は祝日、何しよう?
  24. 24 チャットボットの例 24 Machine 最近、調子どう? この前見た、 Independence day は 最高に面白かった!

    Machine https://en.wikipedia.org/wiki/Indepe ndence_Day_(United_States) アメリカ独立記念日だし、 今日は祝日、何しよう? 固有表現抽出だけでは 解決できない問題!
  25. 25 文脈を見てみたら… 25 Machine 最近、調子どう? この前見た、 Independence day は 最高に面白かった!

    Machine
  26. 26 文脈を見てみたら… 26 Machine 最近、調子どう? この前見た、 Independence day は 最高に面白かった!

    Machine
  27. 27 文脈を見てみたら… 27 Machine 最近、調子どう? この前見た、 Independence day は 最高に面白かった!

    Machine 文脈を考えれば、これは 「映画の」Independence Dayのはず その映画、興行収入 5000億円らしい。 どこが面白かった? Machine
  28. 28 固有名詞の曖昧性 今日私はドナルドが出るディズニー映画を見た。 最近見ないけど、マクドナルドの ドナルドって今何してんの? ドナルドさん、大統領退任されたんだ。

  29. 29 固有名詞の曖昧性 今日私はドナルドが出るディズニー映画を見た。 最近見ないけど、マクドナルドの ドナルドって今何してんの? ドナルドさん、大統領退任されたんだ。 https://commons.wikimedia.org/wiki/

  30. 30 固有名詞の曖昧性 今日私はドナルドが出るディズニー映画を見た。 最近見ないけど、マクドナルドの ドナルドって今何してんの? ドナルドさん、大統領退任されたんだ。 実体(entity) へと リンクする。 →

    Entity Linking https://commons.wikimedia.org/wiki/
  31. 31 エンティティ・リンキング • 固有表現を、知識ベース内のエンティティに紐付ける(リンキングする)タスク

  32. 32 作ったもの • 日本語Wikipediaのエンティティ・リンキングデータセット (前処理含む) • エンティティ・リンキング用ライブラリ

  33. 33 作ったもの • 日本語Wikipediaのエンティティ・リンキングデータセット (前処理含む) • エンティティ・リンキング用ライブラリ https://github.com/izuna385/jel

  34. 34 作った ① jel.link メソッド

  35. 35 作った ② jel.question メソッド

  36. 36 しくみ

  37. 37 しくみ

  38. 38 しくみ

  39. 39 しくみ 質問応答(question メソッド)も だいたいおなじ

  40. 40 もくじ • イントロ (10%) • 自然言語処理のタスクのひとつ エンティティ・リンキングについて (10%) • 作ったライブラリのデモなど

    (15%) • ライブラリを作った理由や、作りながら気づいた課題点 業務にも活かせそうな点、モチベーションの維持方法など。
  41. 41 なんで作った? • 無かったから。 • maintainableなコードを書く力をつけたかったから • MLモデルを組み込んだライブラリを作りたかったから

  42. 42 作ってみてわかった問題 • 3行でモデルを読み込めるようにするための大変さ ~ 3 sec ~ 0.1 sec

    ~ 30 sec ~ 0.1 sec
  43. 43 作ってみてわかった問題 • docsなどお作法の重要性 https://github.com/nipunsadvilkar/pySBD

  44. 44 実装上の難しさ • モジュールの分け方 ◦ 共通部分、モデル部分、... • 外部資材まわり ◦ モデルの管理

    (Amazon S3に置いて読み込ませるのが主流らしい ) • どういうテストが必要? ◦ モデルを読み込む、読み込めるか ◦ 予測結果が想定挙動の範囲内 ◦ etc... 業務でも活かせそう
  45. 45 作ってみてわかった問題 • 個人開発のモチベーション維持 GW 今日 この辺りで 発表申し込む

  46. 46 なんで作った?(再訪) • 個人で、きれいなコードを書くことの限界を感じていた ◦ それでもきれいなコードを書けるようになりたい ◦ 身近なOSSは大変参考になる。が、個人の力では限界も痛感 ◦ 外の目線(できたら厳し目のもの)も必要だと思った。

    • 自分のコードを外に出して、外でも通用するものか確かめたかった ◦ 正直、まだ全然ダメ
  47. 47 今後やりたいこと • 精度改善 • transformer 対応 • 一段上の抽象化 https://github.com/ThilinaRajapakse/simpletransformers

  48. 48 まとめ • ライブラリ作った • 個人開発をやる意味が少し分かった

  49. 49

  50. 50 Text-based Bi-encoder 1. メンション及びエンティティのエンコーダを訓練する . 2. それらを同一の空間に飛ばす .(あるいは、そうなるようにエンコーダを組む) 3.

    メンション近傍で top-N 近似近傍探索を行う . (L2-distance, Dot-productなど.)
  51. 51 51

  52. 52 Text-based Bi-encoder 1. Training the encoders for encoding mention

    and candidates. 2. Project mention and candidates to the same continuous space. 3. Retrieve top-N candidates. (L2-distance, Dot-product, etc.) mention Candidate entity
  53. 53 Text-based Bi-encoder 1. Training the encoders for encoding mention

    and candidates. 2. Project mention and candidates to the same continuous space. 3. Retrieve top-N candidates. (L2-distance, Dot-product, etc.) mention Candidate entity
  54. 54 Text-based Bi-encoder 1. Training the encoders for encoding mention

    and candidates. 2. Project mention and candidates to the same continuous space. 3. Retrieve top-N candidates. (L2-distance, Dot-product, etc.) mention Candidate entity Following [Wu et al., ‘20] and [Logeswaran et al, ‘19] • for scoring, Dot-product is used. • for candidates’ feature, entity’s title and description are used.