pythonで日本語判定
#! /usr/bin/env python # encoding=utf-8 import re def isJapanese(text) : return re.search(u'[ぁ-んァ-ヴ]', text) if __name__ == '__main__' : print isJapanese(u'aiueo') #=> None print isJapanese(u'あいうえお') #=> <_sre.SRE_Match object at 0x7ffb5926f370>
pythonでtwitterのstreaming apiから日本語ツイートを取得する
basic認証だけで行けるので結構簡単です.
getJapaneseTweetsは引数個の日本語ツイート(json)をsimplejsonで辞書に変換して,そのリストを返します.
文字参照をデコードし直してるのはツイート本文だけになってます.
#! /usr/bin/env python # encoding=utf-8 import urllib2 import base64 import simplejson import re STREAM_URL = 'https://stream.twitter.com/1/statuses/sample.json' USERNAME = 'username' PASSWORD = 'userpassword' def getJapaneseTweets(length, username=USERNAME, password=PASSWORD) : req = urllib2.Request(STREAM_URL, headers={ 'Authorization': 'Basic %s' % (base64.encodestring('%s:%s' % (username, password))[:-1]) }) tweets = [] while True : ua = urllib2.urlopen(req) for line in ua: tweet = simplejson.loads(line) try : tweet['text'] = tweet['text'].encode('utf-8').decode('utf-8', 'xmlcharrefreplace') except KeyError : tweet['text'] = '' if tweet['text'] and isJapanese(tweet['text']): tweets.append(tweet); if len(tweets) == length : return tweets time.sleep(30) def isJapanese(text) : return re.search(u'[ぁ-んァ-ヴ]', text) if __name__ == '__main__' : print getJapaneseTweets(1)[0]['text']
pythonで日本語分かち書き
まず,MeCabnのpython用バインディングがあるのでaptでインストールします.
sudo apt-get install python-mecab
そうしたら,あとは以下のコードで分かち書きできます.(NLTK使ったほうが楽かも)
#! /usr/bin/env python # encoding=utf-8 import MeCab def getTokens(text) : m = MeCab.Tagger() n = m.parseToNode(text.encode('euc-jp', 'ignore')) n = n.next tokens = [] while n: word = n.surface.decode('euc-jp', 'ignore') tokens.append(word) n = n.next return tokens if __name__ == '__main__' : for token in getTokens(u'今日は本当に天気のいい日だ') : print token # output #今日 #は #本当に #天気 #の #いい #日 #だ #
twitterのツイート時刻をパースする.
この記事でツイートの取得はできるようになりましたが,時刻のほうが文字列のままなので,ちょっと扱うのが大変です.そういうときはこうします.
#! /usr/bin/env python # encoding=utf-8 import datetime def getTimeByTweet(tweet) : return datetime.datetime.strptime(tweet['created_at'], "%a %b %d %H:%M:%S +0000 %Y")