自然言語可視化ライブラリ 「nlplot」のご紹介
by
Takanobu Nozawa
Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
自然言語可視化ライブラリ 「nlplot」のご紹介 Takanobu Nozawa 2022/9/22 みんなのPython勉強会#85
Slide 2
Slide 2 text
■自己紹介 名前:野澤 哲照(Nozawa Takanobu) 所属:コネヒト株式会社 :たかぱい@takapy0210 ● ML Engineer, ML PdM(見習い)として、機械学習のサービス導入を 軸に、機械学習基盤や機械学習モデル, APIの開発をしたりしています ● ビジネスと機械学習を紐付けながら、どのようにインパクトを出すか に興味があります ● 本日お話しするnlplotの開発者です
Slide 3
Slide 3 text
■今日話すこと 1. コネヒトという会社、プロダクトの紹介 2. nlplotとは 3. nlplotを開発したきっかけ 4. nlplotの使い方 5. streamlitと組み合わせたデモ 6. まとめ
Slide 4
Slide 4 text
コネヒトという会社について 簡単に紹介させてください
Slide 5
Slide 5 text
■コネヒトのVISION ありとあらゆる価値観が見つめ直され、 それぞれに思い描く家族の姿はどんどん変わっている 家族の数だけ形があって、つくりたい未来がある 私たちコネヒトは「家族像」というテーマに向き合う会社です
Slide 6
Slide 6 text
■コネヒトの事業 「あなたの家族像が実現できる社会をつくる」 というVISIONに基づく中期的な目標として 子どもを望む家族像の多様性を実現するために日々取り組んでいます サービス | コネヒト株式会社
Slide 7
Slide 7 text
■ママリについて 家族に向き合うママの毎日は、新しい選択の連続。慌ただ しい日々の中で、正解のない選択をし続けることは容易な ことではありません 「ママの一歩を支える」をミッションに、悩みの「解消」 と「共感」を軸に、妊活中女性・プレママ・ママに寄り添 うコミュニティを運営しています 子どもを出産したママの3人に1人(※)が利用するアプリ に加え、Instagram、LINE、Twitter、facebookといった SNS、情報サイトを通じて、ママが日々の選択に自信を もって一歩を踏み出せるよう取り組んでいます ※「ママリ」で2019年内に出産予定と設定したユーザー数と、厚生労 働省発表「人口動態統計」の出生数から算出
Slide 8
Slide 8 text
■家族ノートについて 家族ノートでは、一般的なアンケート調査とは異なり、 日々の暮らしの中で無意識的に行っている「検索」や「質 問/回答」の中に現れる、家族の心の動きや真の欲求を知 ることができます ママの3人に1人(※1)が利用するアプリ「ママリ」の月 間400万検索、130万投稿(※2)もの活発な利用の中 で、家族が今悩んでいることや、求めている商品・サービ スがタイムリーに反映され、アンケート調査等では踏み込 めないリアルな課題や態度変容が映し出されています 家族ノートを通して、家族の悩みを社会に届け、志を共に するパートナーのみなさんとともに「あなたの家族像が実 現できる社会」の実現に取り組んでいます ※1:「ママリ」で2019年内に出産予定と設定したユーザー数と、厚生労働省発表「人 口動態統計」の出生数から算出。 ※2:2021年3月現在。
Slide 9
Slide 9 text
nlplot とは Github Star★よろしくお願いします! nlplot
Slide 10
Slide 10 text
■nlplotとは ● 自然言語をいい感じに可視化できるライブラリ ● nlp + plot から命名 ● pip install nlplot でインストール可能 ● 本日紹介する使い方の一部はブログにも書いているのでご興味あ る方は是非(Github Star★も!何卒!)
Slide 11
Slide 11 text
■nlplotとは 以下のような可視化が手軽に行える機能を有する ● bar chart ● tree map ● histogram ● wordcloud ● co-occurrence network ● sunburst chart
Slide 12
Slide 12 text
■nlplotとは 2022/09現在も定期的にダウンロードされている cf. https://pepy.tech/project/nlplot
Slide 13
Slide 13 text
nlplotを開発した背景
Slide 14
Slide 14 text
■nlplotを開発した背景 自然言語データを扱う中で、同じような可視化方法で分析を行なうこ とが多かった(例:頻出単語の可視化 etc…) 同じ分析を少ないコストで、かつ誰でも再現性ある形で行えるように なったらハッピーじゃない?そうだよね? → ライブラリにしてしまおう!という結構軽いノリで始めた 軽いノリだったが、PyPIへの登録作業など初めてのことも多く苦労し た。と同時に良い経験にもなった。
Slide 15
Slide 15 text
■なぜOSSにしたのか 理由は2点 ● 自分が課題感を持ったということは、地球上で1人くらいは同じこ と思っている人いるよね?その人が幸せになれば嬉しい ● 自分自身、独学も転職も技術コミュニティからいろいろな恩恵を 得て進めて来れた部分が大きいので、その恩返しを少しでもでき れば嬉しい
Slide 16
Slide 16 text
nlplotの使い方
Slide 17
Slide 17 text
■nlplotの使い方 日本語の場合はtokenizeされているデータがあることが前提 今回はTwitterのハッシュタグデータをサンプルとして使用 →#データサイエンティスト と #kaggle がついている投稿
Slide 18
Slide 18 text
■nlplotの使い方 以下のようにインスタンスを生成できる
Slide 19
Slide 19 text
■nlplotの使い方 描画の対象外としたいワード(ストップワード)の計算もできる
Slide 20
Slide 20 text
■bar chart unigram
Slide 21
Slide 21 text
■bar chart bigram
Slide 22
Slide 22 text
■bar chart 異なるデータ群を比較することも可能
Slide 23
Slide 23 text
■bar chart 異なるデータ群を比較することも可能
Slide 24
Slide 24 text
■tree map
Slide 25
Slide 25 text
■histogram 出現単語数(今回の例だとハッシュタグの数)の分布
Slide 26
Slide 26 text
■wordcloud 日本語データも特に意識することなく描画が可能
Slide 27
Slide 27 text
■co-occurrence networks & sunburst chart これから説明する共起ネットワークとサンバーストチャートの描画に は、事前にグラフのビルド処理が必要 ビルド処理のmin_edge_frequency引数でプロットするノードの数を 制限できる(指定数以下のエッジ(辺)しか存在しないノードはプロッ ト対象から除外することができる)
Slide 28
Slide 28 text
■co-occurrence networks ノードの色は、コミュニティを表している ノードの大きさは、隣接エッジが多ければ多いほど大きくなる
Slide 29
Slide 29 text
■sunburst chart 色の濃さはネットワークの媒介中心性が高いほど濃い色になる (媒介中心性 is 着目している点以外の2点を結ぶ最短経路のうち、その点を通過するものの割合) 幅は前述した隣接エッジが多ければ多いほど大きくなる
Slide 30
Slide 30 text
streamlitを使ったデモ
Slide 31
Slide 31 text
■streamlitとは ● pythonでフロントエンドを構築することができるフレームワーク ● フレームワーク側がデザイン仕様をある程度定めているため、デザ イン決めのコストが(ほぼ)無く、データ処理・分析のスクリプト 開発に注力できる
Slide 32
Slide 32 text
■streamlitとは ● サポートされているライブラリも多い
Slide 33
Slide 33 text
■streamlitとは ● 例)irisのデータをプロットするサンプルコード
Slide 34
Slide 34 text
■streamlitを使ったデモ ● csvファイルをstreamlit上で読み込ませ、その中のデータをnlplotを 使用して可視化してみます ● コードはGithubに公開しているので手元で動かしたい方がいれば是 非!(docker compose up で動くようにしています) ○ https://github.com/takapy0210/nlplot_demo
Slide 35
Slide 35 text
まとめ
Slide 36
Slide 36 text
■まとめ ● nlplotの使い方を紹介しました ● 普段自然言語のデータを扱う人には割と使えるライブラリになって いると思います ○ 自然言語以外にも系列データであれば利用できると思います ● 使いづらい点などあればISSUEの起票 or PRお待ちしております! ● そして何よりGithub Star★よろしくお願いします() nlplot
Slide 37
Slide 37 text
最後に
Slide 38
Slide 38 text
■We’re Hiring! 弊社ではMLエンジニアを絶賛募集中です! ● ライフイベント/ライフスタイルの課題解決をするサービスに興味がある方 ● MLプロダクト開発に興味のある方 機械学習への取り組み事例や、今後やっていきたいことなどをまとめた資料も あるので、興味ある方はこちらもご覧いただけると嬉しいです! → https://tech.connehito.com/entry/ml_data_info コネヒト 機械学習 詳しくは で検索!
Slide 39
Slide 39 text
■(宣伝) PyConJP 2022では自然言語処理やレコメンデーションの話をする 予定なので、ご興味ある方はぜひ(今年はオフライン開催予定 🎉) https://staging.pycon-jp-2022.pages.dev/
Slide 40
Slide 40 text
■参考文献 ● Networkxのグラフのクラスタリング(コミュニティ) ○ https://bit.ly/3Sl5NPd ● グラフ・ネットワーク分析で遊ぶ ○ https://tjo.hatenablog.com/entry/2015/12/09/190000 ● Tutorial — NetworkX 2.8.6 documentation ○ https://networkx.org/documentation/stable/tutorial.html ● Streamlit ○ https://streamlit.io/
Slide 41
Slide 41 text
おわり ご清聴ありがとうございました