#はじめに
Proofreading APIは文章の異常箇所を検知してくれるAPIになります.APIキーを発行し,httpsでリクエストに引数としてAPIキーと文章を渡すだけで簡単に使えます.しかし,引数として渡す文章が500文字以上の場合
{'status': 1500, 'message': 'server error'}
上記のようなリクエストがAPIから返されます.本記事の内容はProofreading APIで500文字以上の文章の以上検知をする手法についてになります.そのため,APIのわかりやすい使い方などは参考サイトを参照してください.
#参考サイト
・文章の異常箇所を検知するLSTMを利用したAPIをDjangoで実装
こちらのサイトでProofreading APIのわかりやすい使い方が紹介されています.本記事でも基本的な使い方はこちらを参考にしています.
#準備
こちらのサイトから,APIキーの発行を行なってください.メールアドレスだけで簡単に発行できます.
また,今回は500文字以上のテキストデータを使用しますので,青空文庫が公開している夏目漱石の「こころ」の上一を使用します.因みに1000文字弱でした.
#コーディング
Proofreading APIで500文字以上の文章の異常検知を行うコードを書いていきます.
import urllib.request
import urllib.parse
import json
import requests
API = "https://api.a3rt.recruit-tech.co.jp/proofreading/v2/typo"
#発行したAPIキーを指定する
KEY = ""
#ここに「こころ」の上一の文章を貼り付ける
TEXT = "私はその人を常に先生と呼んでいた。~~~~"
def proofreading_api(text): #異常検知
each_500_char_list=[]
sentences=""
for stc in text.split("。"):
if len(sentence + stc) < 500:
sentences = sentences + stc + "。"
else:
each_500_char_list.append(sentences)
sentences = stc + "。"
each_500_char_list.append(sentences)
result=[]
for text_500_char in each_500_char_list:
values = {
'apikey': KEY,
'sentence':text_500_char,
'sensitivity':"medium",
}
# パラメータをURLエンコードする
params = urllib.parse.urlencode(values)
# リクエスト用のURLを生成
url = API + "?" + params
#リクエストを投げて結果を取得
r = requests.get(url)
#一度辞書型に変換し,リスト化して追加していく
data=json.loads(r.text)
result.append(list(data.items()))
return result
print(proofreading_api(TEXT))
やっていることとしては,500文字以上ある文章を句点で区切り文ごとにし,文頭から500文字を超える文を見つけたら,その一つ手前までの文を配列に格納しています.そうすることで500文字以内の文章が格納された配列を作り,配列の各要素を順番にAPIへ渡すことができます.APIの返した結果は一度辞書型に変換したあとで,リスト化します.
#最後に
Proofreading APIは,求人などで使われるようなテキストが推奨されているため,今回使用したような文学チックなテキストだと結構異常だと判断されます.あと,青空文庫サイトの文章をコピペするとルビまで取得してしまうので,ニュース記事とか他のデータで試すのも良いかもしれません.