2018年8月24日
こんにちはyouです.今回はTwitterAPIとMeCabを用いて形態素解析をやってみました.
手順はまずTwitterAppのページからcustomer key、customer key secret、access token、access token secretの4つのキーを入手し、public streamで全世界のツイートを取得し、MeCabで形態素解析をするといった流れです.
以下ソースコードです.
全世界のツイートから日本語を含むツイートのみに絞り、ハッシュタグやURLを削除した後にMeCabに投げています
#! /usr/bin/env python3
# encoding=utf-8
# twitter-stream1.py
import re
import tweepy
import unicodedata
import MeCab
from datetime import timedelta
CK = ""
CS = ""
AT = ""
AS = ""
# StreamListenerを継承するクラスListener作成
class Listener(tweepy.StreamListener):
def on_status(self, status):
status.created_at += timedelta(hours=9) # 世界標準時から日本時間
if is_japanese(status.text):
tweet = format_text(status.text)
print(tweet)
print(MeCab.Tagger("").parse(tweet.encode("utf-8")))
return True
def on_error(self, status_code):
print('エラー発生: ' + str(status_code))
return True
def on_timeout(self):
print('Timeout...')
return True
def format_text(text):
'''
ツイートから不要な情報を削除
'''
text = re.sub(r'https?://[w/:%#$&?()~.=+-…]+', "", text)
text = re.sub(r'@[w/:%#$&?()~.=+-…]+', "", text)
text = re.sub(r'&[w/:%#$&?()~.=+-…]+', "", text)
text = re.sub(r'https?://[w/:%#$&?()~.=+-…]+', "", text)
text = re.sub('RT', "", text)
text = re.sub('お気に入り', "", text)
text = re.sub('まとめ', "", text)
text = re.sub(r'[!-~]', "", text) # 半角記号,数字,英字
text = re.sub(r'[︰-@]', "", text) # 全角記号
text = re.sub('n', " ", text) # 改行文字
text = re.sub(';', "", text)
text = re.sub('RT', "", text)
text = re.sub('n', " ", text)
return text
def is_japanese(string):
for ch in string:
name = unicodedata.name(ch)
if ("CJK UNIFIED" in name and ("HIRAGANA" in name or "KATAKANA" in name))
or ("HIRAGANA" in name or "KATAKANA" in name):
return True
return False
def name(ch):
try:
return unicodedata.name
except ValueError:
return None
# Twitterオブジェクトの生成
auth = tweepy.OAuthHandler(CK, CS)
auth.set_access_token(AT, AS)
# Listenerクラスのインスタンス
listener = Listener()
# 受信開始
stream = tweepy.Stream(auth, listener)
stream.sample()