はじめに
今回は最大被覆モデルを使ったツイートの要約APIを作りました。キーワードを指定すると直近の話題を要約して教えてくれる、まるで執事のようなAPIです。たとえば「気になっている製品の市場の声を知りたい」「自分の会社のニュースや評判を知りたい」「今流行しているFGO関連のネタツイートを知りたい」などの用途で使えます。
API
サンプルコード
事前準備
あらかじめ、Apitoreのマイページから「Twitterと連携する」をクリックし、ApitoreをTwitterとアプリ連携してください。 あとは前回の記事で解説した内容とほぼ一緒です。アクセストークンの発行をしておいてください。
使ってみる
APIのデモページに行って、APIを使ってみます。iterを多めに指定すればより多くのツイートから要約を計算しますが、大抵の場合はiter=1で十分でしょう。まずは「とある魔術の禁書目録」を入力してみます。どうやらディバインゲートというソシャゲでコラボ企画がやっているようですね。ファミ通でも特集が組まれているようです。
"tweets": [
{
"statusId": 819472977976660000,
"text": "とある魔術の禁書目録コラボユニットの性能調整が行われました!!\n詳しくはこちら\nhttps://t.co/nCtI6L2lEB\n#ディバゲ https://t.co/euWj6SVOlU",
"createdAt": 1484212557000,
"userId": 1651752007,
"userName": "ミスター☆ディバイン@ディバゲ公式",
"userScreenName": "divine_gate",
"userProfileImageURL": "http://pbs.twimg.com/profile_images/545168403653083137/tPjlbZBx_normal.png",
"score": 15.556059143488126
},
{
"statusId": 819379554334576600,
"text": "【ディバゲ研究室】劇場版『とある魔術の禁書目録』コラボが1/13より復刻!新ユニットのステータス&スキルも判明 - ファミ通App https://t.co/i8B6GkYabA https://t.co/mmNxqtB0RR",
"createdAt": 1484190283000,
"userId": 5921162,
"userName": "ファミ通.com",
"userScreenName": "famitsu",
"userProfileImageURL": "http://pbs.twimg.com/profile_images/378800000675754960/d98b55583c072a904463b4a625655c70_normal.png",
"score": 13.692591672735654
},
続いて「ガチャ」。今はFGOのガチャが熱いようですね!
"tweets": [
{
"statusId": 819441067925782500,
"text": "FGOはシステムから「こいつがいないとクリアできないよor他のプレイヤーに勝てないよ」って無言の圧力をかけられる事がないから本当に「ガチャは自己責任」っていう意味で良心的だと思う",
"createdAt": 1484204949000,
"userId": 113922292,
"userName": "カボチャ@ティアマト鯖",
"userScreenName": "Lantern_pumpkin",
"userProfileImageURL": "http://pbs.twimg.com/profile_images/787644896349872128/67tAY3Cp_normal.jpg",
"score": 21.51741612946915
},
{
"statusId": 819164551534870500,
"text": "ガチャ回すの悩んでる人向けにJust do itの嘘字幕でっち上げておいたんで置いておきますね https://t.co/YrKBV4CmQp",
"createdAt": 1484139023000,
"userId": 3002869106,
"userName": "祢架丸(ねかまる)",
"userScreenName": "NakedAmarl",
"userProfileImageURL": "http://pbs.twimg.com/profile_images/732055255278452736/gFzwi9NU_normal.jpg",
"score": 12.289830977543446
},
最後は真面目なものを期待して「安倍首相」。蓮舫さんの発言やフィリピンでの1兆円支援が話題のようです。フィリピンに1兆円支援するのは知らなかったです。ふむふむ。
"tweets": [
{
"statusId": 819510275959181300,
"text": "民進・蓮舫「安倍晋三首相と意識共有できていない」~ネットの反応「有権者と意識を共有できてない蓮舫さん大いに語る」「党内の意識統一できない人が言うと面白いよね」\nhttps://t.co/oBChp3nIzL",
"createdAt": 1484221450000,
"userId": 3147651630,
"userName": "アノニマス ポスト",
"userScreenName": "anonymous201504",
"userProfileImageURL": "http://pbs.twimg.com/profile_images/713181990690775040/BWrea93U_normal.jpg",
"score": 26.90972898141721
},
{
"statusId": 819496986638315500,
"text": "TBS◆日比首脳会談で安倍首相、1兆円規模の支援表明 https://t.co/eabtk7unzH 「フィリピンのさらなる発展のため、ODAと民間投資をあわせ、今後5年間で1兆円規模のビジネス、機会を創出します」(安倍首相)※今年もバラマキスタート。",
"createdAt": 1484218281000,
"userId": 57184966,
"userName": "deepthroat",
"userScreenName": "gloomynews",
"userProfileImageURL": "http://pbs.twimg.com/profile_images/315728613/deepthroat_normal.gif",
"score": 23.325985203733698
},
サンプルコード(再掲)
public class Api27TwitterSummarizeExample {
static String ENDPOINT = "https://api.apitore.com/api/27/twitter-summarize/get";
static String ACCESS_TOKEN = "YOUR-ACCESS-TOKEN";
public static void main(String[] args) {
RestTemplate restTemplate = new RestTemplate();
Map<String, String> params = new HashMap<String, String>();
params.put("access_token", ACCESS_TOKEN);
params.put("q", "Apitore");
params.put("iter", "1");
params.put("num", "3");
String url = UrlFormatter.format(ENDPOINT, params);
TwitterSummarizeResponseEntity response =
restTemplate.getForObject(url, TwitterSummarizeResponseEntity.class, params);
System.out.println(response.getLog());
System.out.println(response.getTweets().get(0).getText());
System.out.println(response.getTweets().get(0).getScore());
}
}
おわりに
ツイートの要約サービスはちょっと探しましたが見つかりませんでした。結構便利だと思うので使ってみて下さい。「新製品が出たとき」や「ソシャゲで新キャラが出たとき」「自社の評判を知りたい」「時事問題を知りたい」「加湿器のオススメを知りたい」などの用途で役に立つと思います。