読書は人間の夢を見るか

平々凡々な社会人の読書と考えたこと。本文・写真についてはCC-BY-SA。当然ながら引用部分等の著作権は原文著者に属します。

トレンドに関係した資料をつぶやくBotを作ってみた話

むかしむかしにCouseraでPythonをならったりしたものの、特に使うこともなく生きてきたわけですが、最近AtCoderなどを楽しんでいます。

せっかくなので、国立国会図書館(NDL)が提供しているAPI*1を利用して、Twitterのトレンドに関係した資料を探してくるBotを作れないかな、と思いまして。

twitter.com

作ってみました。

 

要素としては、

TwitterAPIを使って、Twitterのトレンドを拾ってくる

→NDLのAPIで資料を探す

TwitterAPIでつぶやく

というようなコードを書いて、定期実行する、ということで良いのかな、と思っていたのが運の尽き。結構考えることが多かったです。

教訓としては、

・エラーメッセージを読むのは大切。

・ドキュメントは神。

 

1.トレンドを拾ってくる

トレンドを拾ってくる事自体は難しくありません。

Pythonで言えば、Twitter用のライブラリもいくつかあって、ぐぐるとたくさん記事が出てきます。

Python: Twitterにおけるトレンドを取得する - Fuwafuwa's memorandum

ただ、トレンドに入ってくる単語って、ハッシュタグ付きのわけわからない単文か、それだけではなんのことかわからないような固有名詞とかが多いんですね(今だと甲子園に出てる高校名とか)。

そうすると、それだけで、資料の検索をかけてもうまいものが出てこない、と。

結論から言うと

ハッシュタグは諦めた。

・単語については、Googleトレンドの関連語検索で情報を取ってきて、加えるようにしてみた。

という感じで、できる限り、今トレンドになってる言葉に近いものを拾ってくれないかな、と願っています(あと意外とトレンドに変動がない・・・)

Googleトレンドについては、以下参照。

Googleトレンドを使いこなそう その2 - Qiita

Pandasだなんだと次から次へデータ型を使わなきゃいけない・・・

 

2.NDLサーチにかける

国会図書館サーチね、たくさん横断検索かけられるのはいいのだけど、あまりにもかかりすぎるという欠点が・・・。

苦労したということでいうと辺戻りのXMLの読み方で、名前空間の概念がよくわかってなかった。

キーワードでなるべく絞ろう、というのは上で書いたとおりだけど、引っかかったものが近いのかどうかの判別はまだまだ未完成。今後用検討かなというところ。

反応が遅いのもあって、取得レコードを1点に制限しているのだけど、これを拡張して、トレンドの関連語と比較して点数つけたりするのだろうか。ちょっと気が遠くなってきた。

適切または意味ありげなデータを探してくるために、青空文庫新書マップを優先して検索しているのだけど、上に書いたようなキーワードの制約上、まだかかったことなし。

〇〇の日、というのから、「の日」を除いて検索かけるように調整してみたので、うまく行けばなにか出るかもしれない。

 

3.つぶやく(定期実行)

つぶやく自体はライブラリ使えばいいので、かんたん。

定期実行は、自分のPCをつけっぱにして回す方法と、サーバを使う方法がありそうだったけど、前者は電気代が死にそうなので、後者を。

Pythonで作ったTwitterのbotをHerokuで動かす - ひとメモ

などを参照して、Herokuにデプロイして動かしてみました。

gitも覚えないといけない。まぁ、こうやって一つなにか作っていくと、色々勉強の契機になっていいよね、という感じはします。

この点での要改善点で行くと、トレンドがあんまり変わらないことと関連して、過去ツイートとのかぶりの排除をどうしてくか、ということでしょうか。

別にファイルを持っておいて、比較したりするのがよいのかな。

 

今後の予定

・表示分の改善のための関数の微調整

・ニュースフィードから関連の資料を取ってくる(自然言語処理API?)

←トレンドってまじまじ見たことなかったけど、ほんとにほぼエンタメっぽいので、それ以外のバリエーションも紹介したいな、と。

 

ここをこうしたほうがいいよ、とか、諸先輩に教えていただけるとありがたいです。

どうぞよろしくおねがいします