はじめに
この記事では弊社で開発した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