[Python]twitterのstreaming APIは日本語によるフィルタリングが未対応。

streming APIを利用する。
twitterのstreaming APIを利用してストリーム上に流れるツイートの情報をフィルターを利用して取得することができます。
Python用のtwitter APIラッパーであるtweepyを利用して、ストリーム上に流れるツイートのうち、あるキーワードを含むツイートを取得しようと試みた所、日本語キーワードは使えないことがわかりました。

tweepy
https://github.com/tweepy/tweepy

なお、tweepyの使用方法は下記のサイト様を参考にさせていただいた。
kk6のメモ帳* – tweepyがUser Streamsに対応していた
http://kk6.hateblo.jp/entry/20110817/1313564125

tweepyを利用してstreming APIを利用する。

#!/usr/bin/env python
#-*- coding:utf-8 -*-

import codecs, simplejson, time

from tweepy.streaming import StreamListener, Stream
from tweepy.auth import OAuthHandler
from tweepy.api import API
from datetime import timedelta

def get_oauth():
    # 以下4つのキー等は適宜取得して置き換えてください。
    consumer_key = 'XXXXXXXXXXXXX'
    consumer_secret = 'YYYYYYYYYYYY'
    access_key = 'XXXXXXXX-XXXXXXXXXXXXXXXXXXX'
    access_secret = 'XXXXXXXXXXXXXXXXXXXX'
    auth = OAuthHandler(consumer_key, consumer_secret)
    auth.set_access_token(access_key, access_secret)
    return auth

class AbstractedlyListener(StreamListener):
    def on_status(self, status):
        status.created_at += timedelta(hours=9)
        text = status.text
        
        print "-------------------\n"
        print "tweet " + str(status.created_at) +"\n"
        print text + "\n"

if __name__ == '__main__':
    auth = get_oauth()
    stream = Stream(auth, AbstractedlyListener(), secure=True)
    stream.filter(track=["AKB"])

ここでは、”AKB”をキーワードに使用しています。さすがにAKBとなるとツイートの量が半端ではありません。”AKB”はアルファベットで構成されているため、次のようなツイートも取得出来ます。

◯ "AKB選抜総選挙で大島優子は何位になるか?"
◯ "ところでさ、AKB大島優子とHKT指原莉乃どっち好き?"
◯ "     akbの大島優子"

ダブルクォーテーション内がツイートの全体の長さだとして、アルファベットによるフィルタリングはほぼ問題なく取得出来ます。

日本語のキーワードは未対応。
“大島優子”の様に日本語によるキーワードはtwitter API自体が未対応で、今のところ使いドコロがありません。

× "AKB選抜総選挙で大島優子は何位になるか?"
× "ところでさ、AKB大島優子とHKT指原莉乃どっち好き?"
× "     akbの大島優子"

唯一、ツイート全体の長さとキーワードが一致した時のみ、取得することができます。

◯ "大島優子"

未対応であることは、twitter API documentに記載されている事項です。

Streaming API request parameters
https://dev.twitter.com/docs/streaming-apis/parameters#track

Non-space separated languages, such as CJK and Arabic, are currently unsupported.
“日​​中韓やアラビア語などの非スペース区切り言語では、現在サポートされていません。”

将来的に正規表現とか指定できたらいいのにね。
それにしても毎秒すごい数のツイートのなかから自分が知りたいものを教えてくれるわけだからすごいなぁって思うわけですが、やはり日本語をキーワードに指定したいなぁって思うので、将来的に正規表現とかまでできればいいなぁ~

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA


This blog is kept spam free by WP-SpamFree.