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

自然言語可視化ライブラリ 「nlplot」のご紹介

Takanobu Nozawa
September 22, 2022

自然言語可視化ライブラリ 「nlplot」のご紹介

2022/09/22に開催された「みんなのPython勉強会#85」にて登壇した資料です #stapy #python

Takanobu Nozawa

September 22, 2022
Tweet

More Decks by Takanobu Nozawa

Other Decks in Technology

Transcript

  1. 自然言語可視化ライブラリ
    「nlplot」のご紹介
    Takanobu Nozawa
    2022/9/22
    みんなのPython勉強会#85

    View Slide

  2. ■自己紹介
    名前:野澤 哲照(Nozawa Takanobu)
    所属:コネヒト株式会社
      :たかぱい@takapy0210
    ● ML Engineer, ML PdM(見習い)として、機械学習のサービス導入を
    軸に、機械学習基盤や機械学習モデル, APIの開発をしたりしています
    ● ビジネスと機械学習を紐付けながら、どのようにインパクトを出すか
    に興味があります
    ● 本日お話しするnlplotの開発者です

    View Slide

  3. ■今日話すこと
    1. コネヒトという会社、プロダクトの紹介
    2. nlplotとは
    3. nlplotを開発したきっかけ
    4. nlplotの使い方
    5. streamlitと組み合わせたデモ
    6. まとめ

    View Slide

  4. コネヒトという会社について
    簡単に紹介させてください

    View Slide

  5. ■コネヒトのVISION
    ありとあらゆる価値観が見つめ直され、
    それぞれに思い描く家族の姿はどんどん変わっている
    家族の数だけ形があって、つくりたい未来がある
    私たちコネヒトは「家族像」というテーマに向き合う会社です

    View Slide

  6. ■コネヒトの事業
    「あなたの家族像が実現できる社会をつくる」
    というVISIONに基づく中期的な目標として
    子どもを望む家族像の多様性を実現するために日々取り組んでいます
    サービス | コネヒト株式会社

    View Slide

  7. ■ママリについて
    家族に向き合うママの毎日は、新しい選択の連続。慌ただ
    しい日々の中で、正解のない選択をし続けることは容易な
    ことではありません
    「ママの一歩を支える」をミッションに、悩みの「解消」
    と「共感」を軸に、妊活中女性・プレママ・ママに寄り添
    うコミュニティを運営しています
    子どもを出産したママの3人に1人(※)が利用するアプリ
    に加え、Instagram、LINE、Twitter、facebookといった
    SNS、情報サイトを通じて、ママが日々の選択に自信を
    もって一歩を踏み出せるよう取り組んでいます
    ※「ママリ」で2019年内に出産予定と設定したユーザー数と、厚生労
    働省発表「人口動態統計」の出生数から算出

    View Slide

  8. ■家族ノートについて
    家族ノートでは、一般的なアンケート調査とは異なり、
    日々の暮らしの中で無意識的に行っている「検索」や「質
    問/回答」の中に現れる、家族の心の動きや真の欲求を知
    ることができます
    ママの3人に1人(※1)が利用するアプリ「ママリ」の月
    間400万検索、130万投稿(※2)もの活発な利用の中
    で、家族が今悩んでいることや、求めている商品・サービ
    スがタイムリーに反映され、アンケート調査等では踏み込
    めないリアルな課題や態度変容が映し出されています
    家族ノートを通して、家族の悩みを社会に届け、志を共に
    するパートナーのみなさんとともに「あなたの家族像が実
    現できる社会」の実現に取り組んでいます
    ※1:「ママリ」で2019年内に出産予定と設定したユーザー数と、厚生労働省発表「人
    口動態統計」の出生数から算出。
    ※2:2021年3月現在。

    View Slide

  9. nlplot とは
    Github Star★よろしくお願いします!
    nlplot

    View Slide

  10. ■nlplotとは
    ● 自然言語をいい感じに可視化できるライブラリ
    ● nlp + plot から命名
    ● pip install nlplot でインストール可能
    ● 本日紹介する使い方の一部はブログにも書いているのでご興味あ
    る方は是非(Github Star★も!何卒!)

    View Slide

  11. ■nlplotとは
    以下のような可視化が手軽に行える機能を有する
    ● bar chart
    ● tree map
    ● histogram
    ● wordcloud
    ● co-occurrence network
    ● sunburst chart

    View Slide

  12. ■nlplotとは
    2022/09現在も定期的にダウンロードされている
    cf. https://pepy.tech/project/nlplot

    View Slide

  13. nlplotを開発した背景

    View Slide

  14. ■nlplotを開発した背景
    自然言語データを扱う中で、同じような可視化方法で分析を行なうこ
    とが多かった(例:頻出単語の可視化 etc…)
    同じ分析を少ないコストで、かつ誰でも再現性ある形で行えるように
    なったらハッピーじゃない?そうだよね?
    → ライブラリにしてしまおう!という結構軽いノリで始めた
    軽いノリだったが、PyPIへの登録作業など初めてのことも多く苦労し
    た。と同時に良い経験にもなった。

    View Slide

  15. ■なぜOSSにしたのか
    理由は2点
    ● 自分が課題感を持ったということは、地球上で1人くらいは同じこ
    と思っている人いるよね?その人が幸せになれば嬉しい
    ● 自分自身、独学も転職も技術コミュニティからいろいろな恩恵を
    得て進めて来れた部分が大きいので、その恩返しを少しでもでき
    れば嬉しい

    View Slide

  16. nlplotの使い方

    View Slide

  17. ■nlplotの使い方
    日本語の場合はtokenizeされているデータがあることが前提
    今回はTwitterのハッシュタグデータをサンプルとして使用
    →#データサイエンティスト と #kaggle がついている投稿

    View Slide

  18. ■nlplotの使い方
    以下のようにインスタンスを生成できる

    View Slide

  19. ■nlplotの使い方
    描画の対象外としたいワード(ストップワード)の計算もできる

    View Slide

  20. ■bar chart
    unigram

    View Slide

  21. ■bar chart
    bigram

    View Slide

  22. ■bar chart
    異なるデータ群を比較することも可能

    View Slide

  23. ■bar chart
    異なるデータ群を比較することも可能

    View Slide

  24. ■tree map

    View Slide

  25. ■histogram
    出現単語数(今回の例だとハッシュタグの数)の分布 

    View Slide

  26. ■wordcloud
    日本語データも特に意識することなく描画が可能

    View Slide

  27. ■co-occurrence networks & sunburst chart
    これから説明する共起ネットワークとサンバーストチャートの描画に
    は、事前にグラフのビルド処理が必要
    ビルド処理のmin_edge_frequency引数でプロットするノードの数を
    制限できる(指定数以下のエッジ(辺)しか存在しないノードはプロッ
    ト対象から除外することができる)

    View Slide

  28. ■co-occurrence networks
    ノードの色は、コミュニティを表している
    ノードの大きさは、隣接エッジが多ければ多いほど大きくなる

    View Slide

  29. ■sunburst chart
    色の濃さはネットワークの媒介中心性が高いほど濃い色になる
    (媒介中心性 is 着目している点以外の2点を結ぶ最短経路のうち、その点を通過するものの割合)
    幅は前述した隣接エッジが多ければ多いほど大きくなる

    View Slide

  30. streamlitを使ったデモ

    View Slide

  31. ■streamlitとは
    ● pythonでフロントエンドを構築することができるフレームワーク
    ● フレームワーク側がデザイン仕様をある程度定めているため、デザ
    イン決めのコストが(ほぼ)無く、データ処理・分析のスクリプト
    開発に注力できる

    View Slide

  32. ■streamlitとは
    ● サポートされているライブラリも多い

    View Slide

  33. ■streamlitとは
    ● 例)irisのデータをプロットするサンプルコード

    View Slide

  34. ■streamlitを使ったデモ
    ● csvファイルをstreamlit上で読み込ませ、その中のデータをnlplotを
    使用して可視化してみます
    ● コードはGithubに公開しているので手元で動かしたい方がいれば是
    非!(docker compose up で動くようにしています)
    ○ https://github.com/takapy0210/nlplot_demo

    View Slide

  35. まとめ

    View Slide

  36. ■まとめ
    ● nlplotの使い方を紹介しました
    ● 普段自然言語のデータを扱う人には割と使えるライブラリになって
    いると思います
    ○ 自然言語以外にも系列データであれば利用できると思います
    ● 使いづらい点などあればISSUEの起票 or PRお待ちしております!
    ● そして何よりGithub Star★よろしくお願いします()
    nlplot

    View Slide

  37. 最後に

    View Slide

  38. ■We’re Hiring!
    弊社ではMLエンジニアを絶賛募集中です!
    ● ライフイベント/ライフスタイルの課題解決をするサービスに興味がある方
    ● MLプロダクト開発に興味のある方
    機械学習への取り組み事例や、今後やっていきたいことなどをまとめた資料も
    あるので、興味ある方はこちらもご覧いただけると嬉しいです!
    → https://tech.connehito.com/entry/ml_data_info
    コネヒト 機械学習
    詳しくは で検索!

    View Slide

  39. ■(宣伝)
    PyConJP 2022では自然言語処理やレコメンデーションの話をする
    予定なので、ご興味ある方はぜひ(今年はオフライン開催予定 🎉)
    https://staging.pycon-jp-2022.pages.dev/

    View Slide

  40. ■参考文献
    ● 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/

    View Slide

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

    View Slide