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

おわり ご清聴ありがとうございました󰢛