年末に久しぶりに紅白歌合戦のツイートを取得してWordCloud
のデータを作成してみようと思ったのですが、今まで使っていたPCを実家に持って行かなかったので以前のブログエントリを使って再構成していこうとしたのですが、python
のライブラリ(モジュール)関係が少し変わっていたようでそのままでは動きませんでした。
参考
そのままで動作しない理由はemoji
モジュールのバージョンアップにより動作が違っていたためでした。pip freeze
と使用してrequirements.txt
などを作成しておけば旧バージョンをインストールできたのになあと思ってしまったのですが、さすがに2018年当時のライブラリをつかうのもどうかなと思って今回はソースを修正して対応することにしました。
状態の保持と一括インストール
# インストール済のライブラリ(モジュール)を保存 $ pip freeze > requirements.txt # モジュールの状態を一括インストール $ pip install -r requirements.txt
当時emoji
モジュールを使用していたのはなぜかというとツイートに含まれる絵文字を削除するためでした。
以前は以下のような関数を作成して、絵文字の削除をしていました。絵文字集合に含まれるかをfor文で走査して絵文字を含まない文字列にしていました。
import emoji def removeEmoji(src): return ''.join(c for c in src if c not in emoji.UNICODE_EMOJI)
今回は新しいemoji
モジュールをインストールして、以下のようなコードに変更しました。今回は正規表現を使用して絵文字の判定を行い、絵文字の場合は空文字に変更して文字列にするという処理に変えました。下記のコードを実行すると絵文字以外のなんちゃって
という部分のみが残る形になります。
import re import emoji emojiString = '😢🥺🤮🤣🤣🤣😆なんちゃって😅🙂😱😸🤔😛😾' print(re.sub(emoji.get_emoji_regexp(), '', emojiString))
関数化するのであれば以下のようになります。
def removeEmoji(src): return re.sub(emoji.get_emoji_regexp(), '', src)
絵文字のコードは結構増えてきていることもあるので、モジュールに準備されている機能を純粋に使用するのがいいのかなと思いました。
emoji
モジュールの使い方は以下が参考になると思います。
参考
おわりに
今回は3年前に作成していたエントリがそのままで動作しなかったので、新しいモジュールに対応させるべく修正を行ってみました。
Twitter
の書き込みにも絵文字が増えたこともあり、絵文字を削除してデータ収集を行いましたが、逆にどんな絵文字が使われているのかを調べてみるのも面白いかなと思ったりもしました。
今年の紅白のWordCloud
のデータは以下のようになっていましたが、今年は出演者の名前が大きくなっていたなあという印象がありますね。
色々と興味深いテキストが取得できてよかったです。