Tag Archives: API

Pushshift.io – reddit掲示板の過去投稿を提供するwebサービス/API

pushshift.io は、英語圏の巨大掲示板 reddit の過去の書き込みを蓄積し提供しているサイトです。ジェイソン・バウムガートナーさん(Jason Baumgartner)という個人の方による運営です。

FAQ ページを読むと、過去のデータを期間やキーワード、ユーザー等で一括取得したい時に使うサービスだということ。新規のコメントをリアルタイムで取得したい時は reddit 公式の API を使ったほうが良いとありますね。

reddit は巨大な掲示板なので、データ量も相当になると思いますが、 Pushshift は個人 + 寄付によって維持されているようです。

Pushshift API を使ったサービス

過去の膨大なコメントにAPIやCSVでアクセスできるということで、これを利用したサービスもいろいろ存在するようです。

revddit

任意の reddit ユーザーに対し、削除した/削除されたコメントを検索できるサービス。

自分の記憶にない8年前のコメントが出てきました。僕が消したわけではなさそう。スレッドがアーカイブされた結果見えなくなっているという意味でしょうかね。

Pushshift Reddit Search

いろいろな指定で、過去の reddit 掲示板をテキスト検索できるサービス

PSAW

Pushshift API を Python 3 から呼び出すためのラッパーライブラリ。

最新のスレッドを100件取るにはこんな感じ。

# The `search_comments` and `search_submissions` methods return generator objects
gen = api.search_submissions(limit=100)
results = list(gen)

スラング等が多く入った日常英語の書き文字データを大量に入手できるので、自然言語処理や機械学習の実験に使えるのではないかと思いました。

via Hacker News

Gamedetect.io – ゲーム画面の画像からゲーム名を当てるサービス

GameDetect.io のフォームにビデオゲームの画面写真を与えると、JSON でそれがどのゲームに似ているかを返してくれます。

適当な画像をアップロードすると、以下のような形でゲームタイトルとそのゲームである確からしさを戻してきます。


{
"filename":"dragonquest5.jpg",
"predictions":[
{
"label":"stardew valley",
"probability":0.568226
},
{
"label":"the legend of zelda a link to the past",
"probability":0.15813187
},
{
"label":"super mario maker",
"probability":0.031073814
},
{
"label":"factorio",
"probability":0.027034273
},
{
"label":"don t starve together",
"probability":0.020903632
}
],
"speed_ms":1113
}

Tensorflow と Golang によって実装されており、学習データとしてはTwitch のゲーム配信画面をスクレイプしたものを使っています。ゲーム実況にはゲームのタイトル情報とゲーム画面があるので、これを正答として学習させ、モデルを作っているのですね。

そのような作りなので、回答で出てくる候補のゲームはTwitch で今最も多く中継されているゲームトップ100 からだけとなっています。(冒頭で試したドラクエ5 の画面では、Stardew Valley やゼルダなど画面の似ているものが出てしまっていますね。)

NSFW画像検知APIの優劣比較

NSFW(Not safe for work = 職場閲覧不適)画像、わかりやすい言い方だとエロ画像ですが、画像を渡すとその画像がエロかどうか判定してくれる API というの、結構たくさんあるんですね。

なぜこの種のAPIに需要があるかというと、ユーザー投稿型のwebサービス運営において、広く見せられないような画像を投稿されることが運用の大きな障害となるからでしょうね。悪意のあるユーザーや考えなしのユーザーによって法に触れたりサービスのイメージが悪化するような画像を投稿され、さらにそのことがソーシャルメディアで喧伝されたりすれば、サイトの評判に関わります。

Facebook や twitter のような超大手なら、画像の判定もいくらでも内製できるでしょうが、そうでない小さなサービスでは、多少お金を払ってでも簡易に判定を外部に任せたいところでしょう。

…と、書いていたら、Tumblr が(おそらく Apple に iPhone アプリを禁止された影響で)アダルトな投稿を禁じるという方針転換を発表し、同時に開始したアダルト画像のフィルタリングの誤判定がひどいらしいので、NSFW 判定は多数のエンジニアを抱える大手でも難しい分野なのでしょう。

そんな画像検知のAPI を、Aditya Ananthram さんが、API の検出精度を実験したり、価格を比較したりしてくれています。

調査対象のAPIはなんと11個。このまとまったリストだけでも、取っ掛かりとしてはありがたいですね。

また、セーフ/アウトのアウトの種類もいろいろあるようで、API によっても分類は異なりそうですが、以下のようなカテゴリ分けで判定を試みています。

  • Explicit Nudity (露骨なヌード)
  • Suggestive Nudity (思わせぶりなヌード – 隠すところは隠しているが… みたいなやつ)
  • Porn/sexual act (ポルノ/性行為)
  • Simulated/Animated porn (CGやアニメのポルノ)
  • Gore/Violence (流血/暴力)
  • Safe for Work (職場で問題ない)

実験するにあたって、当然、本物の NSFW 画像が必要となります。ブログ記事自体は必要なところはボカシが入っていて、SFW(safe for work = 職場安全)ですけど、中にGoogle Documents へのリンクがあり、リンク先には今回使用された、正しく分類されたデータが入っています。追試とかしたい方は注意してください。

カテゴリごとに強いAPIはありますが、Google のものがおおむね良い成績を上げたそうで、さすがというところでしょうか。また、Gore/Violence や Safe for Work というカテゴリはどのAPIでも判定は難しいようで、各APIでも誤判定が多かったそうです。このへんは元のテストデータにしても正解かどうか意見がわかれそうですし、「職場で問題ないかどうか」なんて普遍的にわかるものでもないですからね。

擬陽性・偽陰性の多寡を並べたグラフ(Overall Comparison セクション内)や、呼び出し回数に対する価格(Pricing セクション内)などもまとめられているのでこれらを併せて比較することで、予算と精度からどのAPIを調べてみるといいかの手がかりが得られそうです。

米Yahoo!の株価/為替APIが停止

アメリカの株価や各通貨の交換レートが取得できる、米Yahoo! の finance API が、エラーを返すようになっていました。どうやら 2017-10-31 からこの状態になっているようです。

止まったのは REST API と、CSV によるダウンロードの両方。こういうエラーメッセージが帰ってきます。

このサービスは利用規約に違反して使われていたことにわたしたちは気づきました。そのため、サービスは終了しました。今後の市況や株価データのリサーチには finance.yahoo.com をお使いください

It has come to our attention that this service is being used in violation of the Yahoo Terms of Service. As such, the service is being discontinued. For all future markets and equities data research, please refer to finance.yahoo.com.

株価や為替のデータが無料で参照できる API として、オープンソースのツールなどもこの API を多く使っていたため、遮断から後で動かなくなったサイトや、困っているエンドユーザーが多いようです。Github で CSV ダウンロードのURLを検索すると、2万件以上ヒットしました。

ニュースサイトでも、「Yahoo のAPIが返事しないので…」というエラーを出してるところがありました。こんな感じで、API を使って表示しているサイトでエラーやデータ無しの状況が広がっていそうです。

米Yahoo のユーザーサポートページでは、APIの復活を望むコメントが寄せられ、それへの投票が呼びかけられています。

リアルタイム性の高い株価データは、高価な元データをYahoo! が購入し、それを無料で10年以上も配っていたわけで、メディアとしてAOLと統合された Yahoo! には維持が難しかったのかもしれません。

予告なしに突然止まったことに憤る人も多いですが、ビジネスとして仕方が無かったのかもしれません。

代替

reddit や Hacker News でいくつか替わりに使えそうな、無料あるいは無料枠のあるサービスやAPIが紹介されています。

株価に関しては、

為替に関しては、

などの名前が上がっています。呼び出し回数の上限があったり、数分前のデータだったりと、無料なだけにいろいろ制約があるかもしれません。まあ、それほど重要な使い方をしているなら、有料のAPIを購読しなさいということですね。

# 本当に取れるかは確認してません

イギリス中の自転車事故などを地図上で一望できるwebサービス

Bikedata は、イギリスにおける自転車に関するデータを地図上にプロットした、インタラクティブな情報地図です。

この画面では、道路のどの場所で自転車事故が発生したことがあるか、が、ピンクのマーカーで示されています。

通勤やツーリングの計画を立てる時に、事故が頻発するところを知って避ける、といった使い方もできるでしょうね。スマートフォンアプリなどで、事故の多い場所に近づいたら注意をうながす、みたいなものを作ったりもできるかもしれません。

サイトでは、事故の他にも、交通量、自転車の盗難、駐輪場、サイクルレーンの写真、など、様々な自転車に関するデータを表示することができます。

さらに、このサイトのソースはGPLv3 で公開されています。

元データは国によるもの

イギリス政府のデータ公開サイトに、道路の安全データ(Rode Safety Data)というのがあり、ここではSTATS19 という書類で報告された2005年から2014年までの事故のデータが公開されているようです。

100Mぐらいあるデータを見てみたら、こんな感じで緯度経度や日時、事故の状況を表すフラグを持つレコードが大量にあるCSVファイルでした。

こういったデータが公にされているのはいいですね。このデータを API 化して自転車事故について Cyclestreets.net が提供し、それを Google Maps APIなどを使って可視化したのが今回のサービス、ということになります。

via Maps Mania

住所から、その近くのYouTube動画を検索する

YouTube の API では、動画に関連した座標情報が取得できるようですね。YouTube 本体の検索ではどうやるか見つけられなかったので、API でだけアクセスできる情報なんでしょうか。

Google 自身による API 利用サンプルのデモとして、geoサーチサービスが公開されているのを知りました。座標や住所を入れると、その近くの動画を列挙してくれます。

こちらが、「東京都中央区日本橋」で検索した結果

youtube-geo-search-screenshot

これ、最初見たときはアップロードした動画の中にある情報を使ってるのかと思って驚きましたが、さすがに本人が知らないのに住所と関連づけられたりはしていないでしょう。東京の真ん中で検索してもあまり密度濃く出てこないですし。

YouTube の動画管理ページの方に、位置情報を入れるフィールドがあり、そこで明示的に座標を入れている動画が出てくるようです。

自分で「場所を出しても良い」と判断している投稿者の動画だけがあるなら、まあそんなに危険はないんでしょう。旅行先での動画とか、お店の宣伝動画とかは、むしろ積極的に位置情報を入れていくのが良さそうですね。たまに個人 YouTuber が家で撮ってるような動画も出てくるのはわかりませんが。

YouTube上で東京都中央区日本橋という言葉で検索した場合とは、明らかに異なる結果です。こちらは、住所「名」で検索したら、当然ながらタイトルに「日本橋」とか入っている動画がたくさんでてきます。

Google 自身によるサンプルのデモサイトなので、ソースコードも入手できます。ソース中でなぜか車のメーカーの名前をフィルタしたりしてるんですが、取り除かないと車名が入った動画がたくさん出てくるんでしょうか。

via Hacker News