見出し画像

Twitterの日本語コーパスの準備

Twitterの日本語コーパスを準備する方法をまとめました。

1. TwitterAPI登録

Twitter Developers」でTwitterAPI登録を行い、「APIキー」を取得します。

Rate Limit」でTwitterAPIの利用制限を確認できます。

2. APIキーの定義とOAuth認証

「APIキー」を定義と「OAuth認証」を行います。

import tweepy

# APIキーの定義
consumer_key = '<Consumer Keyを記述>'
consumer_secret = '<Consumer Secretを記述>'
access_token = '<Access Tokenを記述>'
access_token_secret = '<Access Token Secretを記述>'

# OAuth認証
auth = tweepy.OAuthHandler(consumer_key, consumer_secret)
auth.set_access_token(access_token, access_token_secret)
api = tweepy.API(auth, wait_on_rate_limit=True)​

◎ APIキーの定義
Twitter Developers」で取得したAPIキーを記述します。

◎ OAuth認証
Tweepy」でTwitterAPIの制御を行います。「wait_on_rate_limit = True」で、TwitterAPIの利用制限に引っかかった時に、必要な時間だけ待機するようになります。

3. ホームタイムラインの取得

ホームタイムラインの取得方法は、次のとおりです。

%%time
# ファイルのオープン
f = open('home_timeline.txt', mode='w')

# ホームタイムラインの取得 (最新20件)
for status in api.home_timeline():
    # Status → 行
    line = status.text.replace('\n', ' ').strip() 
    if len(line) == 0:
        continue

    # 1行書き込み
    f.write(line+'\n')

# ファイルのクローズ
f.close()

改行をスペースに置換して、1行1ツイートとしています。

4. 特定単語を含むツイートの取得

特定単語を含むツイートの取得方法は、次のとおりです。

%%time
# ファイルのオープン
f = open('search_q.txt', mode='w')

# 特定単語を含むツイートの取得
for status in tweepy.Cursor(api.search, q='機械学習').items(100):
    # Status → 行
    line = status.text.replace('\n', ' ').strip() 
    if len(line) == 0:
        continue

    # 1行書き込み
    f.write(line+'\n')

# ファイルのクローズ
f.close()

今回は、'機械学習'という単語を含む最新100ツイートを取得しています。

5. 特定ユーザーのツイートの取得

特定ユーザーのツイートの取得方法は、次のとおりです。

%%time
# ファイルのオープン
f = open('user_timeline.txt', mode='w')

# 特定ユーザーのツイートの取得
for status in tweepy.Cursor(api.user_timeline, id='entaro8960').items(100):
    # Status → 行
    line = status.text.replace('\n', ' ').strip() 
    if len(line) == 0:
        continue

    # 1行書き込み
    f.write(line+'\n')

# ファイルのクローズ
f.close()

今回は、’entaro8960’(ヤクルトスワローズのマスコット)の最新100ツイートを取得しています。

6. フィルタリング

RT、メンション(@)、ハッシュタグ(#)、URL(http(s)://) の要素が含まれる行を削除するコードは、次のとおりです。

%%time
# ファイルのオープン
fw = open('user_timeline_filtering.txt', mode='w')

# フィルタリング
with open('user_timeline.txt') as fr:
    for line in fr:
        # RT,@,#のフィルタリング
        if (list(line)[:2]==['R', 'T']) | ('@' in line) | ('#' in line): 
            continue
        
        # URLのフィルタリング
        if ('http://' in line) | ('https://' in line): 
            continue

        # 1行書き込み
        fw.write(line)            

# ファイルのクローズ
fw.close()



この記事が気に入ったらサポートをしてみませんか?