スペルチェックのAPIを探していて、これに目をつけました。
例えば、
Thiss iss a pennu
とかスペルミスした文章を渡してやると、それぞれの単語に対して「もしかして」みたいな反応をしてくれます。
Yahooのやつは単語にしか反応しないみたいですが、ヌーラボは文章渡せるので気に入りました。やったね。
ただ、レスポンスで返ってくるJSONの形式が少しアレっぽいです。
[{offset:0,word:"Thiss",similars:["Thins",...
おやおや、"offset":とか"word":にしたいですよ。
レスポンスを修正
今回はperlで処理するので、こんな感じで対応。適当です。○○は、正規表現を書くなと言わせないで欲しいとか言われそうです。いや誰も見てないか。
# 受け取ったテキストを$jsonとする $json =~ s/(\w+):/"$1":/g;
1 use strict;
2 use warnings;
3
4 use constant {
5 SPELL_API => "http://lab.nulab.co.jp/spellchecker-2007-08-20/check",
6 };
7
8 use HTTP::Lite;
9 use JSON;
10 use Data::Dumper;
11 use Encode;
12 use URI::Escape;
13
14 my $http = new HTTP::Lite;
15 my $text = Encode::encode('UTF-8', "Thiss iss a pennu");
16 $text = uri_escape($text);
17 my $url = SPELL_API."?text=".$text;
18 my $req = $http->request($url) or die("can't get");
19 my $json = $http->body();
20 # レスポンスを修正
21 $json =~ s/(\w+):/"$1":/g;
22
23 my $api_result =decode_json($json);
24
25 print Dumper($api_result) ."\n";
こんな感じで、$api_resultの中身をごにょごにょして「もしかして」してみようと思います。