2011年05月30日

Twitterのbotを作ってみる【マルコフ連鎖を使ってみる編】

日本語を話すbotなら形態素解析したいよね!ということで、よくある「マルコフ連鎖」を使ったbotを作ってみました。
元データとして自分の今までのツイートのログを使い、形態素解析してマルコフ連鎖で文章を作るようにします。

形態素解析はMeCab+IPA辞書を使用しています。
気を付けたのは以下の点

・あまり突飛な文章にならないようにする→3次のマルコフ連鎖にする
・他人の文章は使用しない→「RT 」「QT 」などで始まる引用文は削除する
・他ユーザ名(@〜)やハッシュタグ「#〜」、URLは削除する
・文章の始まり、終わりは日本語らしいものにする
 (「な人がいたので私の」みたいな明らかな断片にならないよう、主語〜述語の形を取るようにする)

3次のマルコフ連鎖の作り方は、MeCabとPythonでマルコフ連鎖を書いてみる(改)を参考にして、リストを作る単語の数を3つにしてみた。
Twitterにつぶやくため、文章が長すぎないように80文字以上120文字以下にしている。

また、「日本語らしい文」にするたえ
・文章の始まりは非自立名詞、英単語以外の名詞から始まるようにする
・文章の終わりは句点(。)、終助詞、助動詞とし、さらに助動詞でも一部の語を除くようにする
・文章の終わりが「っ」だった場合「た」を追加する
・文章の終わりは句点を追加する
という工夫を加えている。

これでかなり「読めるけどなんかおかしい」文章が生成されるようになった。
URLはこちら

http://twitter.com/Shadow_Tombu
posted by 岩永 at 18:23| Comment(0) | TrackBack(0) | パソコン | このブログの読者になる | 更新情報をチェックする

Twitterのbotを作ってみる【今日の天気をつぶやいてみる編】

今回作成したbotは決まった時間にスケジュールと写真しかつぶやかなかったので、朝の挨拶をつぶやく機能を追加しようと考えました。
どうせなら「おはようございます」という挨拶だけでなく、天気予報も呟いてみようと思います。

天気予報が取得できるAPIがあるようですが、これは有料っぽい。
ならばRSSで取得できないかと探してみると、Yahoo!天気予報livedoor 天気予報が各地の天気予報をRSSで配信しています。
どちらを使うか迷いましたが、「天気 最高気温/最低気温」という質実剛健なパラメータのYahoo!天気予報を使うことにします。

RSSの取得はurllib、取得したRSSの解析はElementTreeを使います。
RSS(XML)のtitleタグに日付が入っているので、今日の日付の文字列で検索。
見つかったところの天気予報部分のdescriptionタグの値を取りだして、文字列を分解して天気、最高気温、最低気温を取得します。

朝の挨拶は「おはようございます。今日もよろしくお願いします。」という定型文なので、あとは取りだしたパラメータを使って「今日の佐賀県の天気予報は○、最高気温はXX℃、最低気温はYY℃だそうです。」という文章を使ってツイートするようにしてみました。
posted by 岩永 at 17:35| Comment(0) | TrackBack(0) | パソコン | このブログの読者になる | 更新情報をチェックする
×

この広告は1年以上新しい記事の投稿がないブログに表示されております。