LinkedIn フレンドさんが「NTT研究所の日本語解析技術API公開、「語句類似度算出」「ひらがな化」など4種」という記事をチェックされてたので、早速昼休みに Perl でちょいプロを作って使ってみた。
俺はサラリーマン時代、後輩のO皮君と二人で広島県(県警含む)の複数の Web サーバを串刺し検索できるキーワード検索システムを Perl で一から作った経験があるので(もう 20年近く前だけど(笑))、「形態素解析」という言葉には敏感に反応するのだ(笑)
application/x-www-form-urlencoded形式での POST を受け付けるそうなので、以下のようなスクリプトを作成。
アプリケーションIDは事前に goo ラボで取得しておくこと。
リクエストID は任意の適当な文字列を。
PERL_NET_HTTPS_SSL_SOCKET_CLASS とかの環境変数の設定はうちのサーバの事情なので気になさらぬよう(笑)気になる人は、「IO::Socket::SSLモジュールが中間者攻撃のワーニングを出し始めた」参照のこと。
#!/usr/bin/perluse strict;use LWP::UserAgent;use HTTP::Request::Common;$ENV{'PERL_NET_HTTPS_SSL_SOCKET_CLASS'} = "Net::SSL";$ENV{'PERL_LWP_SSL_VERIFY_HOSTNAME'} = 0;my $url = 'https://labs.goo.ne.jp/api/morph';my %postdata = ('app_id' => 'c4e54ef1667***************************************495c84125','request_id' => 'hogehoge001','sentence' => '私の名前はりんごちゃんだよ。男好きだよ。','info_filter' => 'form|pos|read');my $request = POST($url, \%postdata);my $ua = LWP::UserAgent -> new;my $res = $ua -> request($request) -> as_string;print $res;
これを実行すると、
HTTP/1.1 200 OKDate: Fri, 05 Dec 2014 03:34:34 GMTServer: thin 1.5.1 codename Straight RazorContent-Length: 462Content-Type: application/jsonClient-Date: Fri, 05 Dec 2014 03:34:34 GMTClient-Peer: XXX.XXX.XXX.XXX:443Client-Response-Num: 1Client-SSL-Cert-Issuer: /C=US/O=Symantec Corporation/OU=Symantec Trust Network/CN=Symantec Class 3 Secure Server CA - G4Client-SSL-Cert-Subject: /C=JP/ST=Tokyo/L=Minato-ku/O=NTT Resonant Inc./OU=goo Service Platform 1/CN=labs.goo.ne.jpClient-SSL-Cipher: RC4-SHAClient-SSL-Warning: Peer certificate not verifiedP3P: policyref="/w3c/p3p.xml",CP="CAO DSP COR CURa ADMa DEVa TAIa PSAa PSDa IVAi IVDi CONo OUR SAMo OTRo IND PHY ONL UNI PUR FIN COM NAV INT DEM CNT STA HEA PRE LOC"X-Cnection: closeX-Content-Type-Options: nosniff{"request_id":"hogehoge001","info_filter":"form|pos|read","word_list":[[["私","名詞","ワタシ"],["の","格助詞","ノ"],["名前","名詞","ナマエ"],["は","連用助詞","ハ"],["りんご","名詞","リンゴ"],["ちゃん","名詞接尾辞","チャン"],["だ","判定詞","ダ"],["よ","終助詞","ヨ"],["。","句点","$"]],[["男好き","名詞","オトコズキ"],["だ","判定詞","ダ"],["よ","終助詞","ヨ"],["。","句点","$"]]]}
という結果が JSON 形式で返ってくる。
うひょう、面白え~
これはちょっと遊べるかも。いや、遊んでる暇がまったくないんですが(^^;