朝日新聞の長文要約生成APIを使ってみた【Python】

Python

先日、朝日新聞社メディア研究開発センターが、評価版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を叩く勉強も兼ね、作ってみました。

 

以上です。