見出し画像

note記事からワードクラウドを生成するツールを作った

今回は、任意のURL群からワードクラウドを生成するツールを作ってみました。タイトル画像は自己紹介がてら私のnoteを読ませてみたものです。
(まだまだ記事は少ないながら、Claude推しの傾向などが見てとれますね)

どなたでも使えますので、ぜひご自身のnoteを読ませてみたり、遊んでいただければと思います。


形もカスタマイズできます(後述)
色もカスタマイズできます(後述)





そもそもワードクラウドって?

テキストの単語を抽出し、頻出のものを大きく表示する表現手法です。
きちんとした分析というより、視覚的なインパクトが強みかなと思います。

活用事例: Yahoo知恵袋アワード2022
https://chiebukuro.yahoo.co.jp/topic/award2022/index.html


手法自体は目新しいものではなく、「2010年頃からじわじわと定着」といった動向のようです。

画像は載せていませんが、前身である「タグクラウド」は2007年頃に流行り、言葉としては既に廃れていそうでした


今回実装した仕組み

以下の仕組みをGoogle Colabというプラットフォームで実装しています。
Python です。生成AIは絡んでません。

この図はClaudeにほぼ作ってもらった
可視化のアイコン is 何?



【使い方: 基本編】

まずは基本編として、お好きなURLを素材としてワードクラウドを出力する方法です。

作業の流れ

  1. Google アカウントにログインする

  2. 私が作った Google Colab を自分用にコピーする

  3. ワードクラウドの素材にしたいURLを記載する

3番だけ、コードっぽい箇所へのURLコピペ作業が必要ですが、普段noteを触られている方なら問題なく対応可能と思います。


[手順1] Google アカウントにログインする

Google Colab というサービスを使うためにログインが必要です。お使いのブラウザでログインしておいてください。

なお、Google アカウントやメアドが私に見えたり、不特定多数に見えるようなことはない認識ですが、Google系のサービスはどこで何が共有されるか分かりづらいところがあります。

そのため、Google アカウントやメアドが知られても問題ないアカウントでログインいただくほうが無難かと思います。


[手順2] 私が作った Google Colab を自分用にコピーする

まずは↓を開きます。


こんな画面が開くと思います。


「ファイル --> ドライブにコピーを保存」でコピーしましょう。


コピーが完了すると、こちらのタブが開くと思います。これができたら、最初に開いていたタブは閉じておきましょう(間違い防止のため)。

こちらのコピー版は、コピーした人の所有物でありコピーした人にしか見えません。
好きに触ってOKな環境です。


ここで一度、ちゃんと動作するか「ランタイム --> すべてのセルを実行」しておきます。大体、完了まで2分ほどかかります。


このとき↓の警告が出ると思いますので確認してください。

もちろん「このまま実行」で問題ないですが、基本的な所作としては疑った方が良いです。
コードを読める方は目を通す、そうでなくても全てのコードをChatGPTなどに貼り付け、「こちらはGoogle Colabのコードです。何をしていますか?安全に利用可能ですか?」などと聞いてみることをお勧めします。


正常に実行完了したら、画面をスクロールした最下部に↓のような出力がされます(色や表現は毎回変わるので、画像と全く同じにはなりません)

ちなみに、画像は「名前を付けて画像を保存」でダウンロードできます。


[手順3] ワードクラウドの素材にしたいURLを記載する

まずはお試しとして、何でも良いのでnote記事のURLをコピーしましょう

単にURLコピーするだけです。
かなり丁寧に書いているため逆に分かりづらいかもしれません。


次に、URLを置き換えます。サンプルのURLが4つ記載されているので…

先ほどコピーしたURLだけにしてしまいます。

そして、URL箇所の左上にある「▶再生マーク」のボタンを押します。
実行後、✔チェックマークが出れば次に進んでOKです。0秒で終わります。


そのまま、次の「▶再生マーク」のボタンも押します。こちらは指定されたURLの文章量にもよりますが、1分以内には終わるかと思います。


実行が終わると、画面をスクロールした最下部に↓のような出力がされます。これが指定されたURLに沿った内容になっていれば成功です 🎉


あとは、ワードクラウドの素材にしたい分だけ、ご自身のnote記事のURLをコピペしてください。
その後、「▶再生マーク(URLリスト&その下の計2回)」を押せば自由にワードクラウドが生成できます。

ここを変更したら「▶再生マーク」ボタンを押して反映が必要


なお、URLの数があまりに多いとエラーになる可能性があります。

とりあえず250個で問題なく動作はしましたが、「たくさんコピペ頑張ったけど結局エラーになった…」はしんどいので、こまめに実行して確認してください。
(そもそもそんなにたくさん指定しなくても十分遊べるかと)


[注意] 1つ目のエリアの「▶再生マーク」を押さないとエラーになることも

この「▶再生マーク」ですね。

1つ目のエリアの「再生マーク」ですが、以下いずれかの場合には改めて押していただく必要があります。

  • 90分以上放置した

  • 放置してないけど、12時間が経過した

これを忘れると、3つ目のエリアの「▶再生マーク」を押した際にエラーになります。とりあえずエラーが起きたら1つ目のエリアの「▶再生マーク」から押し直してみましょう。



【使い方: 応用編】

[応用1] ワードクラウドの形は画像で変えられる

こんな感じです。

ちなみに、公式ドキュメントを読む限り「白い部分はワードクラウドを生成しない」という判定のようです。よって、シルエット画像でなくても良さそうですが、「白」が含まれているとその部分は埋まらないと思われます。

(注)ロゴのガイドラインを逸脱する表現なので、note公式のロゴは使えません。

【やり方】
png画像の公開リンクを用意し、↓の部分を置き換えれば好きな形で生成が可能
です。

とはいえ、png画像の公開リンクを用意するのって結構大変ですよね。。。
もしリクエストがあれば、ファイルアップロード機能も作ろうと思います。


ちなみに、Google Driveにpngをアップロードし、共有設定を「リンクを知っている全員」とすれば簡単に公開リンクが作成できますが…

共有リンクそのままでは png にならず、以下のように imgタグのsrcを拾ってくる必要があります。ややこしい。


[応用2] 色は簡単に変えられる

ここを書き換えるだけです。

書き換えたら左上の▶再生マークボタン押してくださいね。
画像に見えてるボタンの一つ上のボタンです。

候補のカラーはこちらから。

例えば「plasma」が良さげ、と思ったら、
「colormap = "plasma"」とするだけ
あとはコードを触れば背景色も変えられますし、もっと色々できます
公式ドキュメント



その他の備忘メモ

このメモはエンジニア向けかと思います。

形態素解析の辞書データ

次の判断により、unidic-lite を使いました。解析ツールは fugashi です。

  • vs ipadic

    • 2007年以降更新されておらず、非推奨のため。

    • ↑のREADMEに思いっきり書いてあるが、ググると結構ヒットするし、Perplexityも普通に提案してくるので初心者の私は使いそうになった。

  • vs unidic

    • 高精度より軽さを優先。Google Colabで割と頻繁にインストールを繰り返すので。

品詞などの解析方法

  • 色々事例を参照、ネットの海を泳ぐ

  • そのうえで、出力結果を見ながら地道な調整をした

    • "名詞"が一番特徴を掴めそうなので、重みを3倍にしたり

  • これは多分もっと良い方法がある…

ほか、考えたこと

  • noteのexportデータを素材にすることも考えたが、やめた

    • 常に全量だったはずで、サポートしづらい

    • そもそもxmlからテキストを抽出するのが手間、そこまでやれてしまう方なら僕が作らなくても勝手にやりそう

      • とはいえ、リクエストあれば対応考えます

  • ワードは敢えて高密度にした

    • 今回の用途上、単語の視認性よりビジュアル優先

    • 密度を落とすとスカスカになりがち(特に白抜き)

  • 当初は画像アップロード形式にしていたが、非エンジニアに使ってもらう手順を簡単にするためにURL指定とした(アップロード画像は12時間で消えてしまうため、自分でアップロードしてもらう必要が生じる)

    • しかし、「任意の画像で出力したいケース」は却って難しくなってしまった感..

    • 画像アップロード形式も残しておいたほうが良かったかもしれない



おわりに

「自己紹介=ワードクラウドを見て!」という主旨の記事でしたが、ここでも少し自己紹介しておきます。

発信すること1: 趣味エンジニアリング

まさにこの記事のような感じで、興味を軸にちょっとした開発をします。
今回ですと、「ワードクラウド、自分で出力できるようになっておきたいな…」からここまで来ました。

結果として見ていただいた方のお役に立ったり、楽しんでいただけたなら嬉しい限りです。


発信すること2: 趣味DTM

「ワードクラウド作る前に1つはDTM記事書いて読ませるぞ!」と意気込んでいたのですが、ちょっとまだ充電が足りませんでした。

うん、まぁ、よくないやつ

ということで、自分ではまだ記事書いてないエセDTMerですが、スキやフォローはしていくのでよろしくお願いします。


以上です。それではまた。


いいなと思ったら応援しよう!

この記事が参加している募集