Proofreading(校正)というリクルートが開発したAPIを使って、今まで投稿した記事に誤字がないかを判別してもらった。因みに1000文字を超える文章は対象にならないのでワードプレスで取得した記事を900文字程度で切って判断してもらうことにしています。誤字があった場合、1を最大値として値が渡されるので、その平均値を取ればその文章の誤字率が判定できる。今回は平均値を取らず、最大値を判断材料として文章をスコア化しました。一応、判断した値をCSVで出力するプログラムをちょこちょこと制作したので参考にして頂ければ幸いです。正直なところ、ProofreadingのAPIが制度が良いのか疑わしいものがあるがAPIを取り扱うのが始めてという人は勉強になると思います?。
ソースコードはこちらになります。
<?php
require "../../wp-load.php";
global $wpdb;
$proofreading = function($text=""){
$url = "https://api.a3rt.recruit-tech.co.jp/proofreading/v2/typo";
$params = [
'apikey' => '取得したAPIKEY',
'sentence'=>"$text",
'sensitivity'=>"high"
];
$curl = curl_init($url);
curl_setopt($curl, CURLOPT_POST, TRUE);
curl_setopt($curl, CURLOPT_POSTFIELDS, $params);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($curl);
curl_close($curl);
$obj = (object)json_decode($response);
$score = 100;
if($obj->alerts){
$max = 0;
foreach($obj->alerts as $key=>$val){
$max = $max<$val->score?$val->score:$max;
}
$score = 100 - ($max * 100);
}
return $score;
};
if($argv[0]){
file_put_contents("blogscore.csv","");
$query = "SELECT * FROM $wpdb->posts WHERE post_status = 'publish' and post_type = 'post'";
$results = $wpdb->get_results( $wpdb->prepare($query));
foreach($results as $row) {
$id = $row->ID;
$title = $row->post_title;
$score = $proofreading(mb_strimwidth(preg_replace("/[\r|\n]/","",strip_tags($row->post_content)),0,900,"…"));
$str = "'$id'".",'".$title."',"."'$score'";
print $str.PHP_EOL;
file_put_contents("blogscore.csv",mb_convert_encoding($str."\n","SJIS","UTF-8"),FILE_APPEND);
}
}