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

bert-tokenizerノードを触ってみた

Db8a7eb9cf22f26cedce8295a53c8d7c?s=47 Kawazu
December 04, 2021

 bert-tokenizerノードを触ってみた

Db8a7eb9cf22f26cedce8295a53c8d7c?s=128

Kawazu

December 04, 2021
Tweet

Transcript

  1. bert-tokenizerノードを 触ってみた 河津正和

  2. 河津正和 バックエンドエンジニア 自社サービス開発をしつつ、本業以外で フリーランス的な仕事なども Twitter: kawazu255_ 自己紹介

  3. 直近のイベント 毎月ゲストをお呼びして シビックテックな話を伺う CivicTechRadio 12/9(木) 事業立ち上げを 行っている人たちの LT Technical Director

    Meetup 新規事業企画LT 12/11(土) 音楽に関わる技術の LT MusicLT 12/14(火)
  4. モチベーション 何か変わったノードを触ってみたい

  5. None
  6. bert-tokenizerについて

  7. BERTとは? • Googleが発表した自然言語処理モデルで、2019年からは検索エンジンにも使用さ れている • 文脈理解の精度が評価 • 様々な自然言語処理タスクにファインチューニングする前の、ベースモデルとしても 使用できる •

    BERT日本語学習済みモデル->https://yoheikikuta.github.io/bert-japanese/
  8. Tokenizerとは? • 日本語の解析をする場合には単語、文字など何らかの部分に分ける必要がある • 分割された文字列のことをトークンという • Tokenizer は文書を単語分割をして、それにIDという数値に変換するモジュールで ある •

    分割方法は様々 ◦ N-gram ◦ MeCabなどで形態素解析
  9. 分かち書き 今日/の/予定/は/池袋/に/ご飯/を/食べ/に/行き/ます トークン 20617, 20333, 7, 297, 2551, 16, 73,

    30406, 28477, 11, 13043, 16 Tokenizerの例
  10. 仮説 トークンを使って 自然言語処理できるのか

  11. 昼ごはん食べたい ≒ ラーメン行こうよ 単語マッチに囚われない処理ができるか

  12. None
  13. None
  14. None
  15. 文章をTokenizerしてみた • 国内で報告された新型コロナウイルス感染症の感染者に係る報告を基にした追跡 調査の結果、感染者間の関連が認められた集団(クラスター)を地図上に表示した ものです。 ◦ [101,100,1635,100,1006,1702,30257,30233,30235,30265,1007,100,1636,102,0,0,...] • クラスターは、現時点で、同一の場において、5人以上の感染者の接触歴等が明ら かとなっていることを目安として記載しています。家族等への二次感染等を載せて

    いません。また、家族間の感染も載せていません。 ◦ [101,1702,30257,30233,30235,30265,30198,1635,100,1635,1794,30266,30197,30332,30194, 30176,30173,30191,1635,100,1636,100,1636,1677,30187,1635,100,1636,102,0,0,...] • 吾輩は猫である。名前はまだない。どこで生れたか頓(とん)と見当がつかぬ。何で も薄暗いじめじめした所でニャーニャー泣いていた事だけは記憶している。吾輩は ここで始めて人間というものを見た。 ◦ [101,100,1636,100,1636,100,1006,1666,30217,1007,100,1636,100,1636,100,1636,102,0,0,...]
  16. 文章をTokenizerしてみた • 国内で報告された新型コロナウイルス感染症の感染者に係る報告を基にした追跡 調査の結果、感染者間の関連が認められた集団(クラスター)を地図上に表示した ものです。 ◦ [101,100,1635,100,1006,1702,30257,30233,30235,30265,1007,100,1636,102,0,0,...] • クラスターは、現時点で、同一の場において、5人以上の感染者の接触歴等が明ら かとなっていることを目安として記載しています。家族等への二次感染等を載せて

    いません。また、家族間の感染も載せていません。 ◦ [101,1702,30257,30233,30235,30265,30198,1635,100,1635,1794,30266,30197,30332,30194, 30176,30173,30191,1635,100,1636,100,1636,1677,30187,1635,100,1636,102,0,0,...] • 吾輩は猫である。名前はまだない。どこで生れたか頓(とん)と見当がつかぬ。何で も薄暗いじめじめした所でニャーニャー泣いていた事だけは記憶している。吾輩は ここで始めて人間というものを見た。 ◦ [101,100,1636,100,1636,100,1006,1666,30217,1007,100,1636,100,1636,100,1636,102,0,0,...]
  17. https://github.com/tedhtchang/bert-tokenizer/blob/master/assets/vocab.json デフォルトの辞書

  18. None
  19. (英語の)文章をTokenizerしてみた • The map shows the groups (clusters) that were

    found to be related among infected people as a result of follow-up surveys based on the reports of infected people with new coronavirus infections reported in Japan. ◦ [101,1996,4949,3065,1996,2967,1006,12906,1007,2008,2020,2179,2000,2022,3141,2426,10372,2111,2004,1 037,2765,1997,3582,1011,2039,12265,2241,2006,1996,4311,1997,10372,...] • Clusters are defined as having a known contact history of five or more infected persons in the same place at the present time. Secondary infection to family members is not included. Infection among family members is also not listed. ◦ [101,12906,2024,4225,2004,2383,1037,2124,3967,2381,1997,2274,2030,2062,10372,5381,1999,1996,2168,2 173,2012,1996,2556,2051,1012,3905,8985,2000,2155,...] • I am a cat. I don't have a name yet. I have no idea where I was born. All I remember is that I was crying in a dark and dank place. This was the first time I saw a human being. ◦ [101,1045,2572,1037,4937,1012,1045,2123,1005,1056,2031,1037,2171,2664,1012,1045,2031,2053,2801,207 3,1045,2001,2141,1012,2035,1045,3342,2003,...]
  20. None
  21. ユークリッド距離

  22. None
  23. ニュース同士 ニュースと吾輩は猫 小さい値の方が近しい意味のは ずなので何かがおかしい

  24. うまくいかなかった仮説とやった感想 • そもそもTokenizerされた値はあくまで分かち書き後の値で、意味的に近しい単語 同士が近しい値にあるわけではない ◦ うどんが200くらいにあってラーメンが 10000くらいにある場合もある • Tokenizerされた値じゃなくて、文章の特徴量を出す必要がある ◦

    https://speakerdeck.com/kawazu/bertdewen-zhang-guan-lian-du-suan-chu-sitexi-retemiru • Tokenizerはそれ自体で自然言語処理をするのではなくて、処理のベース・つなぎ になるもの?(もうちょっと調べたい) • そもそも分かち書きなのにBERTは関係あったのか • MeCabに関連したノードは意外となかった(あると便利じゃないかな)