はじめに

この記事では弊社で開発したTwitterのTweetsを取得して自動でクレンジング(テキストからURLを削除・リツイートの除外など)を行うパッケージを紹介します。
先日弊社ではPythonのパッケージの作成にチャレンジして、pip installできるようにするための公開方法の手順を紹介しました。(参考:【PyPI】自作のPythonパッケージを公開する
今回はその際に作成したTwitterのAPIを使ってTweetsを取得するライブラリを実際に使用してみたいと思います。

「Tweetl」の主な機能

  • ユーザーIDと任意のキーワードでツイートを取得
  • テキストのクレンジング(前処理)
    • ハッシュタグ、URL、画像、絵文字、メンション、RTを削除
    • 文字の統一(大文字から小文字、半角から全角)
    • 重複ツイートの削除(RTの可能性があるため)

インストールとAPIキーの設定

PyPIに公開済みですので、以下のようにどなたでもpip installすることが出来ます。

pip install tweetl

インストールが終わったらインポートします。

import tweetl

APIキーとアクセストークンを設定します。TwitterのDeveloperアカウントを発行すると、左上のメニューにある「Apps」から発行することができます。

TwitterのDeveloperアカウントの作成方法については詳しく解説されている方がいらっしゃいましたのでこちらをご覧ください。

# APIキーとアクセストークンを設定する
consumer_api_key = "XXXXXXXXXXXXXXXXXXXXXXXX"
consumer_api_secret_key = "XXXXXXXXXXXXXXXXXXXXXXXX"
access_token = "XXXXXXXXXXXXXXXXXXXXXXXX"
access_token_secret = "XXXXXXXXXXXXXXXXXXXXXXXX"

ツイートを取得するためのインスタンスを作成します。

# インスタンスを作成する
tweet_getter = tweetl.GetTweet(
                    consumer_api_key,
                    consumer_api_secret_key,
                    access_token,
                    access_token_secret
                )

下準備はこれだけです!

ツイートを取得してみる

今回は試しに弊社のTwitterアカウントのツイートを取得してみたいと思います。
tweet_getter.get_tweets_targetを使ってアカウントIDを指定するだけで簡単にDataFrame形式で取得することが出来ます。

# Deepblueのアカウント名を指定する
df_target = tweet_getter.get_tweets_target("deepblue_ts")
df_target.head()
tweet_id created_at text favorite_count retweet_count
0 1272767324198547456 2020-06-16 05:45:51 本日日本語版がリリースされたDeepL APIを試してみました!\n\nDeepL APIを... 2 0
1 1270670468526137344 2020-06-10 10:53:42 ProphetはFacebookが公開してるライブラリで、簡単に時系列予測が行え、結果がトレ... 2 0
2 1267303455175000064 2020-06-01 03:54:23 TensorFlow 2.0 の使い方を初心者向けに解説しています。\nTF2をコーディング... 1 0
3 1265892330415874050 2020-05-28 06:27:05 「PyPIにMITライセンスで自作のPythonパッケージを公開する方法」をご紹介します。P... 1 0
4 1265561526909521928 2020-05-27 08:32:35 変数間の因果関係を推測する学問として、統計的因果探索というものがあります。その中でLinGA... 5 1



しかし、よく中身を見てみると改行を示す\nやURLなどが含まれており、このままだとテキストマイニングをする際にノイズになってしまう可能性があります。

df_target.text[0]
'本日日本語版がリリースされたDeepL APIを試してみました!\n\nDeepL APIをPythonから利用して文章を日本語に翻訳する\nhttps://t.co/eHNh6T4Tn9'

ツイートをクレンジングする

tweet_cleanser.cleansing_dfを使って、text列を対象としてノイズとなる可能性のあるテキストのクレンジングを行ってみます。

# create an instance
tweet_cleanser = tweetl.CleansingTweets()
cols = ["text"]
df_clean = tweet_cleanser.cleansing_df(df_target, subset_cols=cols)
df_clean.head()
tweet_id created_at text favorite_count retweet_count
0 1272767324198547456 2020-06-16 05:45:51 本日日本語版がリリースされたdeepl apiを試してみました! deepl apiをpyt... 2 0
1 1270670468526137344 2020-06-10 10:53:42 prophetはfacebookが公開してるライブラリで、簡単に時系列予測が行え、結果がトレ... 2 0
2 1267303455175000064 2020-06-01 03:54:23 tensorflow 0.0の使い方を初心者向けに解説しています。tf0をコーディングするに... 1 0
3 1265892330415874050 2020-05-28 06:27:05 「pypiにmitライセンスで自作のpythonパッケージを公開する方法」をご紹介します。p... 1 0
4 1265561526909521928 2020-05-27 08:32:35 変数間の因果関係を推測する学問として、統計的因果探索というものがあります。その中でlinga... 5 1



クレンジング結果を確認してみると改行を示す\nと末尾のURLがきれいに削除されていることがわかります。

df_clean.text[0]
'本日日本語版がリリースされたdeepl apiを試してみました! deepl apiをpythonから利用して文章を日本語に翻訳する'

さいごに

今回は弊社で開発した「Tweetl」というパッケージの紹介をしました。
これからも改良を続けていきたいと考えておりますが、もしライブラリに不具合や追加機能の要望などございましたらご連絡いただけると幸いです。

PyPI : https://pypi.org/project/Tweetl/
GitHub: https://github.com/deepblue-ts/Tweetl