Yahoo形態素解析&係り受け解析を試したメモ…日本語構文解析

前回、Yahoo形態素解析&係り受け解析が流れるようになったと書いたが、メモとして残しておく。順を追うと、

  1. Yahooデベロッパーネットワークというところに、いくつかのAPIの紹介が有り、その中に「テキスト解析API」が有り、まず「日本語形態素解析」に行ってみた。他のYahooの例に漏れず、help、説明書等はほとんど無し。
  2. 無謀だったと反省しつつ、「サポート」の「ご利用ガイド」のところに行くと、「Yahoo! JAPAN IDを取得」、「アプリケーション登録&ID発行」が必要と有る。Yahoo IDは有るので、アプリケーション登録&ID発行を行った。下記プログラム中の ********************* はアプリケーション登録ID。
  3. ここからはボクの技術力では何が何だかわからないので、次はサンプルコードを見ようと思ったら、Perlは無くてPHPしかない。(5月頃までは「PHPならライブラリが用意してあります」とか書いてあったと思うけど、今はその記述も無し。)そうなると、webに望みをかける心細い生活に。
  4. いくつかのサイトでYahoo形態素解析を試した例を見つけ参考にしようとしたが、ボクが使っているYahooジオシティーズでは、モジュール使用に制約が有るようで(たぶん)うまく行かなかった。Perlについても自分か書いたコードしか知らないから、本を読んで地道にやっていくと、LWP::Simple というモジュールは動くことがわかった。XML処理系のモジュールは、それらのサイトの皆さんが使っているのは結局うまくできなくて、手処理にした。
#!/usr/bin/perl

use LWP::Simple;

$appid = "*********************";
$query = "庭には二羽ニワトリがいる";
$url = "http://jlp.yahooapis.jp/MAService/V1/parse?appid=$appid&results=ma,uniq&uniq_filter=9|10&sentence=$query";
$response = get($url);

print "Content-type: text/html; charset=utf-8\n\n";
print "<HTML><BODY>\n";
print "$response";
print "</BODY></HTML>\n";

上記は最も簡単に書いたもの。出力されたXMLは未処理なので、もとのXMLを見る場合はソースの表示で。(本当はXMLを直接出力できると思うけど、実際には出力することは目的ではなく、解析後の要素をどう使用するかが次のstepなのでこの辺で一旦止めた。)→この後のXMLの処理は、恥ずかしくて書けないが、連続した状態の文字列をぶった切って加工した。あとはformで入力できるようにhtmlを用意したところ。解析詳細は現在検討中。

  • 文字コードについて
    • Yahoo APIでは文字コードutf-8を指定している。メモ帳でutf-8で保存する時、文頭にヘンな記号が追加されるが、(メモ帳では見えず、PerlEditorでは見える)、このままuploadしても動く。htmlで表示する時、「utf8」指定では文字化けする。「utf-8」とすると文字化けが無かった。
    • とにかく、メモ帳でも、必ずutf-8で保存し、(formを使用する場合のhtmlファイルも全てそうした。)ffftpでのuploadは無変換(もともとEUCに変換してuploadするようにしていたのを止めた。)にした。
  • 係り受け解析について
    • urlが少し変わるくらいで、基本は上記と同様。

keyword: 人工知能