Slide 1

Slide 1 text

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

Slide 2

Slide 2 text

2 今日話すこと ● イントロ (10%) ● 自然言語処理のタスクのひとつ エンティティ・リンキングについて (10%) ● 作ったライブラリのデモなど (15%) ● ライブラリを作った理由や、作りながら気づいた課題点 業務にも活かせそうな点、モチベーションの維持方法など。 (75%)

Slide 3

Slide 3 text

3 イントロ ● 開発にもいろいろある

Slide 4

Slide 4 text

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

Slide 5

Slide 5 text

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

Slide 6

Slide 6 text

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

Slide 7

Slide 7 text

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

Slide 8

Slide 8 text

8 イントロ ● 個人開発にもいろいろある その場で 動けばOK 開発したものを 使う人 多 少 ずっと メンテしたい 論文実装 jupyterの 分析結果 競プロの 解答 自分用の ライブラリ 外に出す ライブラリ

Slide 9

Slide 9 text

9 今日話すこと ● イントロ (10%) ● 自然言語処理のタスクのひとつ エンティティ・リンキングについて (10%) ● 作ったライブラリのデモなど (15%) ● ライブラリを作った理由や、作りながら気づいた課題点 業務にも活かせそうな点、モチベーションの維持方法など。 (75%)

Slide 10

Slide 10 text

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

Slide 11

Slide 11 text

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

Slide 12

Slide 12 text

12 固有表現抽出

Slide 13

Slide 13 text

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

Slide 14

Slide 14 text

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

Slide 15

Slide 15 text

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

Slide 16

Slide 16 text

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

Slide 17

Slide 17 text

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

Slide 18

Slide 18 text

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

Slide 19

Slide 19 text

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

Slide 20

Slide 20 text

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

Slide 21

Slide 21 text

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

Slide 22

Slide 22 text

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

Slide 23

Slide 23 text

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

Slide 24

Slide 24 text

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

Slide 25

Slide 25 text

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

Slide 26

Slide 26 text

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

Slide 27

Slide 27 text

27 文脈を見てみたら… 27 Machine 最近、調子どう? この前見た、 Independence day は 最高に面白かった! Machine 文脈を考えれば、これは 「映画の」Independence Dayのはず その映画、興行収入 5000億円らしい。 どこが面白かった? Machine

Slide 28

Slide 28 text

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

Slide 29

Slide 29 text

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

Slide 30

Slide 30 text

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

Slide 31

Slide 31 text

31 エンティティ・リンキング ● 固有表現を、知識ベース内のエンティティに紐付ける(リンキングする)タスク

Slide 32

Slide 32 text

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

Slide 33

Slide 33 text

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

Slide 34

Slide 34 text

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

Slide 35

Slide 35 text

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

Slide 36

Slide 36 text

36 しくみ

Slide 37

Slide 37 text

37 しくみ

Slide 38

Slide 38 text

38 しくみ

Slide 39

Slide 39 text

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

Slide 40

Slide 40 text

40 もくじ ● イントロ (10%) ● 自然言語処理のタスクのひとつ エンティティ・リンキングについて (10%) ● 作ったライブラリのデモなど (15%) ● ライブラリを作った理由や、作りながら気づいた課題点 業務にも活かせそうな点、モチベーションの維持方法など。

Slide 41

Slide 41 text

41 なんで作った? ● 無かったから。 ● maintainableなコードを書く力をつけたかったから ● MLモデルを組み込んだライブラリを作りたかったから

Slide 42

Slide 42 text

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

Slide 43

Slide 43 text

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

Slide 44

Slide 44 text

44 実装上の難しさ ● モジュールの分け方 ○ 共通部分、モデル部分、... ● 外部資材まわり ○ モデルの管理 (Amazon S3に置いて読み込ませるのが主流らしい ) ● どういうテストが必要? ○ モデルを読み込む、読み込めるか ○ 予測結果が想定挙動の範囲内 ○ etc... 業務でも活かせそう

Slide 45

Slide 45 text

45 作ってみてわかった問題 ● 個人開発のモチベーション維持 GW 今日 この辺りで 発表申し込む

Slide 46

Slide 46 text

46 なんで作った?(再訪) ● 個人で、きれいなコードを書くことの限界を感じていた ○ それでもきれいなコードを書けるようになりたい ○ 身近なOSSは大変参考になる。が、個人の力では限界も痛感 ○ 外の目線(できたら厳し目のもの)も必要だと思った。 ● 自分のコードを外に出して、外でも通用するものか確かめたかった ○ 正直、まだ全然ダメ

Slide 47

Slide 47 text

47 今後やりたいこと ● 精度改善 ● transformer 対応 ● 一段上の抽象化 https://github.com/ThilinaRajapakse/simpletransformers

Slide 48

Slide 48 text

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

Slide 49

Slide 49 text

49

Slide 50

Slide 50 text

50 Text-based Bi-encoder 1. メンション及びエンティティのエンコーダを訓練する . 2. それらを同一の空間に飛ばす .(あるいは、そうなるようにエンコーダを組む) 3. メンション近傍で top-N 近似近傍探索を行う . (L2-distance, Dot-productなど.)

Slide 51

Slide 51 text

51 51

Slide 52

Slide 52 text

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

Slide 53

Slide 53 text

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

Slide 54

Slide 54 text

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.