先日、朝日新聞社メディア研究開発センターが、評価版APIを公開しました。
長文要約生成API:朝日新聞社メディア研究開発センター 人工知能研究の取り組み
本APIは、入力された記事本文を機械学習を用いて要約するものです。
長文の要約、もしくは文章量を圧縮したものを自動で作成する、というものだそうです。
評価版は、1つのAPIキーに対し、1日20回まで使用できるとのこと(評価目的に限ると思われるが)。
Pythonコード
プログラムの全文です。要約作成の元となるデータは、プログラムと同じ階層に「original_text.txt」というファイル名で置いています(文字コードはUTF-8で)。
import urllib.request
import json
url = 'https://clapi.asahi.com/abstract'
headers = {
'accept':'application/json',
'Content-Type':'application/json',
'x-api-key':'***'
}
with open('original_text.txt', 'r', encoding='UTF-8') as f:
text = f.read()
post_data = {
'text': text,
'length':200,
'auto_paragraph': True
}
req = urllib.request.Request(url, json.dumps(post_data).encode(), headers)
with urllib.request.urlopen(req) as res:
body = res.read()
print(body.decode())
ネットで調べると、HTTPリクエストにRequestsというサードパーティー製のライブラリを使用している例も見つかると思います。
公式ドキュメントでも、「より高水準な」HTTPクライアントインタフェースとしてはRequestsがおすすめされているので、場合によってはそちらを使用したほうがいいのかもしれません。
より高水準のHTTPクライアントインターフェースとして Requests package <https://requests.readthedocs.io/en/master/> がお奨めです。
urllib.request — URL を開くための拡張可能なライブラリ
今回は、単純なHTTPのPOSTリクエストなので、標準ライブラリを使いました。
実行結果
ソースは、こちらのYahoo!ニュースを使用。
Yahoo!ニュース
Yahoo!ニュースは、新聞・通信社が配信するニュースのほか、映像、雑誌や個人の書き手が執筆する記事など多種多様なニュースを掲載しています。
こんな、JSONデータが返ってきました。
{"result":["米Faceboo","kの日本を含む世界のユーザー5億3300万人の個人情報が、誰でもアクセスできるサイバー犯罪フォーラムで公開されていると米メディアが報じた。","Facebookユーザーが2019年に流出した個人データは、誰でもアクセスできるデータベースに保存されていた。このときもFacebookは、古いデータにしろ、当時からメールアドレスを変えていないユーザーのデータについてツイートした。"]}
日本語も単語の区切り方も変な箇所がありますが、要約っぽくはなっています。パラメータをチューニングすれば、自然な文章になるかもしれません。
でも、現状は、文章自体は人の目でチェックしないといけないかな?というふうに見えますね。
APIを叩く勉強も兼ね、作ってみました。
以上です。