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

単語分散表現 chiVeの活用方法 at WAP NLP Tech Talk #5

WAP
April 28, 2022

単語分散表現 chiVeの活用方法 at WAP NLP Tech Talk #5

WAP

April 28, 2022
Tweet

More Decks by WAP

Other Decks in Technology

Transcript

  1. © 2022 Works Applications Systems Co., Ltd. 単語分散表現 chiVe の活用方法


    ワークス徳島人工知能NLP研究所 
 Nishihara Daiki
 
 2022年4月27日
 全34ページ

  2. © 2022 Works Applications Systems Co., Ltd. はじめに
 2 西原大貴(にしはらだいき)


    • 2020-21@阪大(修士)  NLPの研究
 • 2021-22@ワークス徳島 chatbot 開発など
 
 本日は、chiVe の使い方について、説明します。
 
 chiVe の研究的な側面は、Tech Talk #1 参照
 https://worksapplications.connpass.com/event/196402/ 
 
 Sudachi Vector

  3. © 2022 Works Applications Systems Co., Ltd. 1. 分散表現とは?chiVe とは?


    単語分散表現とは(おさらい)
 4 単語を数値列(ベクトル)に変換したもの
 
 
 
 学習コーパスを使い、周辺の単語から推定して作る。
 スダチ → [0.3, 0.1, …, 0.9]
 カボス → [0.2, 0.1, …, 0.8]
 徳島県は ??? の生産量が全国一です。
 焼き魚に ??? を書けて食べると最高です。
 甘酸っぱい香りが ??? の木からしている。
 ??? = [0.3, 0.1, …, 0.9]

  4. © 2022 Works Applications Systems Co., Ltd. 1. 分散表現とは?chiVe とは?


    日本語の分散表現リソースの例
 5 学習コーパスに偏りが無くかつ商用利用可能な分散表現は、少ない
 

 学習コーパス
 形態素解析
 商用利用
 chiVe
 NWJC
 Sudachi+SudachiDict 
 ◦ Apache 2.0
 nwjc2vec
 NWJC
 MeCab+Unidic
 ✕ 研究目的に限る 
 hottoSNS-w2v
 SNS, Wikipedia, Web 
 MeCab+NEologd
 ✕ 研究目的に限る 
 朝日新聞単語ベクトル 
 朝日新聞
 MeCab+ipadic
 ✕ 研究目的に限る 
 HR領域向け単語ベクトル 
 求人データ
 MeCab+NEologd
 ◦ Public Domain
 Wikipedia2Vec
 Wikipedia
 MeCab
 ◦ Apache 2.0
 fastText (多言語)
 Wikipedia, CC
 文字n-gram
 ◦ MIT

  5. © 2022 Works Applications Systems Co., Ltd. 1. 分散表現とは?chiVe とは?


    chiVe の特長:実用で使えるものを目指す
 6 GitHub で公開
 商用利用可能ライセンス(Apache 2.0)
 https://github.com/WorksApplications/chiVe 
 
 
 日本語形態素解析器
 Sudachi
 日本語大規模コーパス
 NWJC
 版
 語彙数
 v1.2 mc5
 3,197,456
 v1.2 mc15
 1,454,280
 v1.2 mc30
 912,550
 v1.2 mc90
 482,223
 chiVeは、
 • 語彙数 48万~300万
 • 大規模な学習データにより高品質
 chiVeは、
 • 複数粒度(A, B, C単位)に対応
 • 表記正規化による表記ゆれの吸収

  6. © 2022 Works Applications Systems Co., Ltd. 1. 分散表現とは?chiVe とは?


    chiVeは、どのサイズを使えばいいの?
 7 結論:
 ①語彙数 と ②計算リソース
 を見て決めればよい
 
 ①語彙数によって扱える単語が違う     ②大きいモデルは重い
 
 語彙数
 gensim版
 Magnitude版
 v1.2 mc5
 3,197,456
 3.8 GB
 5.5 GB
 v1.2 mc15
 1,454,280
 1.7 GB
 2.4 GB
 v1.2 mc30
 912,550
 1.1 GB
 1.5 GB
 v1.2 mc90
 482,223
 0.6 GB
 0.8 GB
 v1.2 mc5
 (319万語)
 雇用の分野における男女の均等な機会及び待遇の確 保等に関する法律 
 v1.2 mc15
 (145万語)
 v1.2 mc30
 (91万語)
 v1.2 mc90
 (48万語)
 水先法
 労働者派遣事業の適正な運営の確保及び派遣労働者 の保護等に関する法律 
 男女雇用機会均等法, 労働者派遣法 
 ロード時間※ [秒]
 ※google colab で gensim版を読み込む時間 

  7. © 2022 Works Applications Systems Co., Ltd. 1. 分散表現とは?chiVe とは?


    補足:mc (Min Count) とは?
 8 「学習コーパス中の最低出現頻度」のこと
 • 例えば「mc5」とは、「5回以上出現した単語だけ収録している」ということ
 • mcが小さいほど、語彙数が大きい
 
 注意点
 出現頻度が低い語は、原理上、良質なベクトルを作りにくい
 • 学習サンプルが少ないので、ヒントとなる周辺単語が少ない
 • 専門用語を扱いたい場合は、追加学習(ドメイン適応)すると良い
 → 後で説明します

  8. © 2022 Works Applications Systems Co., Ltd. 2. chiVe でできること


    ①単語の足し引き
 10 問1 「父」ー「男性」+「女性」=?
 
 
 問2 「横浜市」ー「神奈川県」+「北海道」=?
 
 
 問3 「トランプ」ー「洋風」+「和風」=?
 

  9. © 2022 Works Applications Systems Co., Ltd. 2. chiVe でできること


    ①単語の足し引き
 11 問1 「父」ー「男性」+「女性」=?
 chiVeの答え「母」 朝日新聞ベクトルの答え「母」
 
 問2 「横浜市」ー「神奈川県」+「北海道」=?
 chiVeの答え「札幌市」 朝日新聞ベクトルの答え「札幌」
 
 問3 「トランプ」ー「洋風」+「和風」=?
 chiVeの答え「花札」 朝日新聞ベクトルの答え「オバマ」
 ※長単位が無いので「札幌市」が存在しない 
 ※新聞での「トランプ」は、大統領名の意味が強い? 
 ※学習データの選択は重要 

  10. © 2022 Works Applications Systems Co., Ltd. 2. chiVe でできること


    ②単語の近さを調べる(1/2)
 12 2単語間の”キョリ”が、意味の近さを表せそう
 • 「猫」と「犬」が近い
 • 「カボス」「スダチ」「柚子」が近い
 
  キョリ(猫, 犬) = 0.26
  キョリ(猫, 柚子) = 0.73
  キョリ(スダチ, 柚子) = 0.32
 0.26
 0.32
 0.73
 ※ここでの”キョリ”は、cosine distance を使っています 
 単語ベクトル空間
  11. © 2022 Works Applications Systems Co., Ltd. 2. chiVe でできること


    ②単語の近さを調べる(2/2)
 13 ”キョリ”が近い単語を探してみる
 
 
 単語ベクトル空間 ※ここでの”キョリ”は、cosine distance を使っています 
 1番近い
 5番目
 に近い
 1
 カボス(臭橙)
 2
 レモン
 3
 青紫蘇
 4
 シークワーサー
 5
 柚子
 chiVeで「スダチ(酢橘)」に近い単語トップ10 
 6
 ポン酢
 7
 柑橘
 8
 大根下ろし
 9
 蜜柑
 10
 日向夏

  12. © 2022 Works Applications Systems Co., Ltd. 2. chiVe でできること


    ③単語を分類(1/2)
 14 キョリが近いものをグループ化すれば、
 単語のカテゴリ分け(分類)ができる
 
 単語ベクトル空間 Group2
 Group1
 Group1:
 「カボス」「スダチ」「柚子」
 Group2:
 「猫」「犬」

  13. © 2022 Works Applications Systems Co., Ltd. 2. chiVe でできること


    ③単語を分類(2/2):実験
 15 単語集合をカテゴリに分けるタスクで実験
 
 
 
 
 データセット
 yamamomo (詳細は Tech Talk #4)
 https://github.com/WorksApplications/yamaMomo 
 
 「スダチ」「犬」「猫」 「カボス」
 「犬」「猫」
 「スダチ」「カボス」
 分散表現
 精度
 chiVe mc90
 61.7
 nwjc2vec
 61.2
 朝日新聞
 52.6
 実験結果

  14. © 2022 Works Applications Systems Co., Ltd. 2. chiVe でできること


    ④文ベクトルを作る(1/2)
 16 単語ベクトルから、文のベクトルを作れないか?
 
 
 
 
 「スダチ」
 [
 0.176
 0.070
 …
 -0.044
 ]
 「を」
 [
 -0.050
 -0.093
 …
 0.092
 ]
 「絞る」
 [
 -0.054
 0.153
 …
 0.075
 ]
 「。」
 [
 -0.133
 0.041
 …
 0.108
 ]
 「スダチを絞る。」
 [
 ?
 ?
 …
 ?
 ]
 ベクトルの合成方法
 • 足す
 • 平均を取る
 • 最大値を取る など

  15. © 2022 Works Applications Systems Co., Ltd. 2. chiVe でできること


    ④文ベクトルを作る(2/2)
 17 平均を取る例
 
 
 
 
 「スダチ」
 [
 0.176
 0.070
 …
 -0.044
 ]
 「を」
 [
 -0.050
 -0.093
 …
 0.092
 ]
 「絞る」
 [
 -0.054
 0.153
 …
 0.075
 ]
 「。」
 [
 -0.133
 0.041
 …
 0.108
 ]
 「スダチを絞る。」
 [
 -0.016
 0.042
 …
 0.058
 ]
 ベクトル空間

  16. © 2022 Works Applications Systems Co., Ltd. 2. chiVe でできること


    ⑤教師なし文書分類(1/2)
 18 単語の分類と同様に、文(や文書)の分類ができる
 
 キョリが近いものをグループ化すれば、
 文のトピックで分類できる
 
 
 
 
 ベクトル空間
 Group1
 Group2
 Group1:
 「大根おろしを添える。」
 「スダチを絞る。」
 Group2:
 「犬を散歩に連れて行く。」
 「猫を飼う。」

  17. © 2022 Works Applications Systems Co., Ltd. 2. chiVe でできること


    ⑤教師なし文書分類(2/2)
 19 但し、各グループのトピック名は、
 機械には分からない
 
 
 
 
 
 
 ベクトル空間
 Group1:
 「大根おろしを添える。」
 「スダチを絞る。」
 Group2:
 「犬を散歩に連れて行く。」
 「猫を飼う。」
 Group1
 Group2
 👨焼き魚の話?
 🤖???
 👨ペットを飼う話?
 🤖???

  18. © 2022 Works Applications Systems Co., Ltd. 2. chiVe でできること


    ⑥教師あり文書分類(1/2)
 20 教師ラベル(トピック名)があれば、学習できる
 「大根おろしを添える。」
 「スダチを絞る。」
 「犬を散歩に連れて行く。」
 「猫を飼う。」
 魚料理
 ペット
 「ハムスターに餌を与える。」
 🤖分類器
 学習データ
 未知の評価データ
 ペット
 学習
 教師ラベル

  19. © 2022 Works Applications Systems Co., Ltd. 補足
 様々な分類タスク
 21

    • chatbot への問い合わせを分類
 
 
 
 
 • 商品レビュー文の感情予測
 「賞与は収入に含む?」
 「ログインできない。」
 「パスワード忘れた。」
 「源泉徴収票はどこ?」
 「賞与は収入に含む?」
 「源泉徴収票はどこ?」
 「ログインできない。」
 「パスワード忘れた。」
 「この商品使いやすい」
 「最高」
 「高すぎる」
 「この商品使いやすい」
 「最高」
 「高すぎる」
 ★★★
 ★  

  20. © 2022 Works Applications Systems Co., Ltd. 2. chiVe でできること


    まとめ
 22 ① 「父」ー「男性」+「女性」=「母」     ⑤⑥ 文書分類
 
 ② キョリ   ③ 単語分類  ④ 文ベクトル 
 魚料理
 魚料理
 ペット
 ペット
 教 師 な し 教 師 あ り
  21. © 2022 Works Applications Systems Co., Ltd. 3. ドメイン適応
 ドメイン適応とは


    24 公開されている学習済み chiVe を追加学習して、
 自分のドメイン(分野)に特化させる
 
 (例)農業ドメインに特化させたい場合
 (公開) 学習済み chiVe
 農業に特化した chiVe
 農業ドメインのコーパス
 分類タスクなど
 ドメイン適応

  22. © 2022 Works Applications Systems Co., Ltd. 3. ドメイン適応
 追加学習させたいケース


    25 1. 近い単語のキョリを離したい
 (例) 農業分野で、
 「スダチ」と「カボス」
 を区別したい
 
 2. 専門用語の品質を高めたい
 NWJCでは低頻度語となるが
 特定分野で頻出な単語の品質改善
 (例) 航海分野で、
 「水先法」が頻出
 公開済み chiVe
 スダチ カボス 柚子 犬 農業特化 chiVe
 スダチ カボス 犬 柚子 (公開)
 学習済み chiVe
 航海分野
 に特化した
 chiVe
 ドメイン適応
 ドメイン適応
 水先法では、船舶の... 航海分野の社内コーパス 

  23. © 2022 Works Applications Systems Co., Ltd. 4. chiVe vs.

    chiTra
 コスト vs. 精度
 27 コスト重視なら chiVe、精度重視なら chiTra
 
 
 
 
 
 
 
 解けるタスク
 解きにくいタスク
 精度
 計算速度
 費用面
 chiVe
 分類系タスク
 (文書分類など)
 生成系タスク
 (機械翻訳など)
 ◦
 ◎
 ◎
 chiTra
 ◎
 △
 △
 
 精度
 処理時間
 主な計算装置
 
 chiVe
 89.1
 訓練 90秒、評価 0.5秒 
 CPU
 ← これで性能十分な時は chiVe 
 chiTra
 95.7
 訓練 1時間、評価 8秒 
 CPU+GPU
 ← 予算がある時は chiTra 
 (例)Livedoor ニュースコーパスでの文書分類 

  24. © 2022 Works Applications Systems Co., Ltd. 4. chiVe vs.

    chiTra
 追加学習の必要性
 28 chiVe は、追加学習しなくても使える
 ドメイン適応すれば、少し性能が上がる
 
 
 chiTra は、追加学習して使う
 通常はタスクに合わせてファインチューニング
 
 
 
 
 ファインチューニング
 学習済み chiTra
 社内データに合わせた
 chiTra
 
 精度
 chiVe (公開のもの)
 89.1
 chiVe (ドメイン適応※)
 90.4
 chiTra
 95.7
 Livedoor での文書分類 

  25. © 2022 Works Applications Systems Co., Ltd. 5. chiVe を使ってみる


    インストールは1行!
 30 1. Word2Vec を扱うライブラリを1行でインストール
 
 
 2. 学習済み chiVe をダウンロード
 GitHubから取ってくる https://github.com/WorksApplications/chiVe 
 3. 動作確認
 
 $ pip install gensim # gensim を使いたい人
 $ pip install pymagnitude # Magnitude を使いたい人
 >>> from gensim.models import KeyedVectors >>> chive = KeyedVectors.load('...') >>> chive.most_similar('酢橘', topn=3) [('臭橙', 0.73349), ('レモン', 0.71241), ('青紫蘇', 0.68655)]
  26. © 2022 Works Applications Systems Co., Ltd. 5. chiVe を使ってみる


    単語の足し引き
 31 問1「父」ー「男性」+「女性」=?
 
 
 
 問2「作家」ー「文字」+「絵」=?
 >>> chive.most_similar(['父', '女性'], negative=['男性'])[0][0] ’母’ >>> chive.most_similar(['作家', '絵'], negative=['文字'])[0][0] ’画家’
  27. © 2022 Works Applications Systems Co., Ltd. 5. chiVe を使ってみる


    gensim vs. Magnitude
 32 gensim
 • Word2Vec を扱う昔からあるライブラリ
 • 使っている人が多く、解説記事なども多い
 Magnitude
 • シンプルで速く、使いやすいメソッドが整備
 • 未知語のベクトルを作成する機能
 • HTTP上でのリモートロードができる
 gensim
 26秒
 Magnitude
 1秒
 chiVe 1.2 mc5 のロード時間 
 >>> from pymagnitude import Magnitude >>> chive = Magnitude( 'https://sudachi.s3-ap-northeast-1.amazonaws.com/chive/chive-1.2-mc90.magnitude') >>> chive.query('酢橘')
  28. © 2022 Works Applications Systems Co., Ltd. 補足
 spaCy/GiNZA での分散表現


    33 GiNZA
 日本語の係り受け解析や固有表現抽出などが手軽にできる
 
 「単語分散表現を取得する」という目的には GiNZA は不向き
 • GiNZA のバージョンによってベクトルが違う
 • 原理上、全語彙が spaCy/GiNZA にあるわけでない
 ◦ spaCy は軽量化のために一部の語彙を捨てる ◦ GiNZA は C単位なのに、ベクトルは A, B, C単位 → 語彙数が大きいという chiVe の利点を活かしきれない

  29. © 2022 Works Applications Systems Co., Ltd. 本日のまとめ(キーワード)
 34 3.

    ドメイン適応
 • 社内データで追加学習
 4. chiVe vs. chiTra
 • コスト重視の chiVe
 • 性能重視の chiTra
 5. chiVe を使ってみる
 • gensim, Magunitude
 1. 分散表現とは?chiVeとは?
 • 実用で使える chiVe
 2. chiVeでできること
 • 足し引き
 • 単語や文のキョリ
 • 単語分類、文書分類