note記事からワードクラウドを生成するツールを作った
今回は、任意のURL群からワードクラウドを生成するツールを作ってみました。タイトル画像は自己紹介がてら私のnoteを読ませてみたものです。
(まだまだ記事は少ないながら、Claude推しの傾向などが見てとれますね)
どなたでも使えますので、ぜひご自身のnoteを読ませてみたり、遊んでいただければと思います。
そもそもワードクラウドって?
テキストの単語を抽出し、頻出のものを大きく表示する表現手法です。
きちんとした分析というより、視覚的なインパクトが強みかなと思います。
手法自体は目新しいものではなく、「2010年頃からじわじわと定着」といった動向のようです。
今回実装した仕組み
以下の仕組みをGoogle Colabというプラットフォームで実装しています。
Python です。生成AIは絡んでません。
【使い方: 基本編】
まずは基本編として、お好きなURLを素材としてワードクラウドを出力する方法です。
作業の流れ
Google アカウントにログインする
私が作った Google Colab を自分用にコピーする
ワードクラウドの素材にしたいURLを記載する
3番だけ、コードっぽい箇所へのURLコピペ作業が必要ですが、普段noteを触られている方なら問題なく対応可能と思います。
[手順1] Google アカウントにログインする
Google Colab というサービスを使うためにログインが必要です。お使いのブラウザでログインしておいてください。
なお、Google アカウントやメアドが私に見えたり、不特定多数に見えるようなことはない認識ですが、Google系のサービスはどこで何が共有されるか分かりづらいところがあります。
そのため、Google アカウントやメアドが知られても問題ないアカウントでログインいただくほうが無難かと思います。
[手順2] 私が作った Google Colab を自分用にコピーする
まずは↓を開きます。
こんな画面が開くと思います。
「ファイル --> ドライブにコピーを保存」でコピーしましょう。
コピーが完了すると、こちらのタブが開くと思います。これができたら、最初に開いていたタブは閉じておきましょう(間違い防止のため)。
ここで一度、ちゃんと動作するか「ランタイム --> すべてのセルを実行」しておきます。大体、完了まで2分ほどかかります。
このとき↓の警告が出ると思いますので確認してください。
正常に実行完了したら、画面をスクロールした最下部に↓のような出力がされます(色や表現は毎回変わるので、画像と全く同じにはなりません)
[手順3] ワードクラウドの素材にしたいURLを記載する
まずはお試しとして、何でも良いのでnote記事のURLをコピーしましょう。
次に、URLを置き換えます。サンプルのURLが4つ記載されているので…
先ほどコピーしたURLだけにしてしまいます。
そして、URL箇所の左上にある「▶再生マーク」のボタンを押します。
実行後、✔チェックマークが出れば次に進んでOKです。0秒で終わります。
そのまま、次の「▶再生マーク」のボタンも押します。こちらは指定されたURLの文章量にもよりますが、1分以内には終わるかと思います。
実行が終わると、画面をスクロールした最下部に↓のような出力がされます。これが指定されたURLに沿った内容になっていれば成功です 🎉
あとは、ワードクラウドの素材にしたい分だけ、ご自身のnote記事のURLをコピペしてください。
その後、「▶再生マーク(URLリスト&その下の計2回)」を押せば自由にワードクラウドが生成できます。
なお、URLの数があまりに多いとエラーになる可能性があります。
とりあえず250個で問題なく動作はしましたが、「たくさんコピペ頑張ったけど結局エラーになった…」はしんどいので、こまめに実行して確認してください。
(そもそもそんなにたくさん指定しなくても十分遊べるかと)
[注意] 1つ目のエリアの「▶再生マーク」を押さないとエラーになることも
この「▶再生マーク」ですね。
1つ目のエリアの「▶再生マーク」ですが、以下いずれかの場合には改めて押していただく必要があります。
90分以上放置した
放置してないけど、12時間が経過した
これを忘れると、3つ目のエリアの「▶再生マーク」を押した際にエラーになります。とりあえずエラーが起きたら1つ目のエリアの「▶再生マーク」から押し直してみましょう。
【使い方: 応用編】
[応用1] ワードクラウドの形は画像で変えられる
こんな感じです。
ちなみに、公式ドキュメントを読む限り「白い部分はワードクラウドを生成しない」という判定のようです。よって、シルエット画像でなくても良さそうですが、「白」が含まれているとその部分は埋まらないと思われます。
【やり方】
png画像の公開リンクを用意し、↓の部分を置き換えれば好きな形で生成が可能です。
とはいえ、png画像の公開リンクを用意するのって結構大変ですよね。。。
もしリクエストがあれば、ファイルアップロード機能も作ろうと思います。
ちなみに、Google Driveにpngをアップロードし、共有設定を「リンクを知っている全員」とすれば簡単に公開リンクが作成できますが…
共有リンクそのままでは png にならず、以下のように imgタグのsrcを拾ってくる必要があります。ややこしい。
[応用2] 色は簡単に変えられる
ここを書き換えるだけです。
候補のカラーはこちらから。
その他の備忘メモ
このメモはエンジニア向けかと思います。
形態素解析の辞書データ
次の判断により、unidic-lite を使いました。解析ツールは fugashi です。
vs ipadic
2007年以降更新されておらず、非推奨のため。
↑のREADMEに思いっきり書いてあるが、ググると結構ヒットするし、Perplexityも普通に提案してくるので初心者の私は使いそうになった。
vs unidic
高精度より軽さを優先。Google Colabで割と頻繁にインストールを繰り返すので。
品詞などの解析方法
色々事例を参照、ネットの海を泳ぐ
そのうえで、出力結果を見ながら地道な調整をした
"名詞"が一番特徴を掴めそうなので、重みを3倍にしたり
これは多分もっと良い方法がある…
ほか、考えたこと
noteのexportデータを素材にすることも考えたが、やめた
常に全量だったはずで、サポートしづらい
そもそもxmlからテキストを抽出するのが手間、
そこまでやれてしまう方なら僕が作らなくても勝手にやりそうとはいえ、リクエストあれば対応考えます
ワードは敢えて高密度にした
今回の用途上、単語の視認性よりビジュアル優先
密度を落とすとスカスカになりがち(特に白抜き)
当初は画像アップロード形式にしていたが、非エンジニアに使ってもらう手順を簡単にするためにURL指定とした(アップロード画像は12時間で消えてしまうため、自分でアップロードしてもらう必要が生じる)
しかし、「任意の画像で出力したいケース」は却って難しくなってしまった感..
画像アップロード形式も残しておいたほうが良かったかもしれない
おわりに
「自己紹介=ワードクラウドを見て!」という主旨の記事でしたが、ここでも少し自己紹介しておきます。
発信すること1: 趣味エンジニアリング
まさにこの記事のような感じで、興味を軸にちょっとした開発をします。
今回ですと、「ワードクラウド、自分で出力できるようになっておきたいな…」からここまで来ました。
結果として見ていただいた方のお役に立ったり、楽しんでいただけたなら嬉しい限りです。
発信すること2: 趣味DTM
「ワードクラウド作る前に1つはDTM記事書いて読ませるぞ!」と意気込んでいたのですが、ちょっとまだ充電が足りませんでした。
ということで、自分ではまだ記事書いてないエセDTMerですが、スキやフォローはしていくのでよろしくお願いします。
以上です。それではまた。