先週木金の1年向け授業で,Web APIを使って単語ごとに分割(形態素解析)する例を用意し,説明しました.いまそのスライドを見てみると,載せていたコマンドに書き損じがあったので,より良いコマンドを作ることにしました.
次のようにします.
curl "http://jlp.yahooapis.jp/MAService/V1/parse?appid=$APPID&sentence=$(echo -n 'よるいろいろいるよ' | ruby -r uri -e 'puts URI.escape ARGF.read')"
1つ1つ,見ていきます.
- Linuxなどのシェル上で実行します.bashとzshのいずれでも動作します*1.
- curlは,うしろにURLを書いたら,そのページにアクセスし,結果(HTMLやXML)を出力するコマンドです.
- URLはhttpから始まるものですが,httpの直前と,コマンドの最後に「"」を置き,その間がURL(1個のコマンドライン引数)となることを指示しています.
- 「http://jlp.yahooapis.jp/MAService/V1/parse」の部分が,Web APIへのアクセスとなります.詳細は以下のページに書かれています.
- 「http://jlp.yahooapis.jp/MAService/V1/parse」の後ろにリクエストパラメータをつけて,1つのURLとします.具体的には,まず「?」を置き,あとは「パラメータ=値」を並べて「&」で挟みます.上のコマンドでも,「?」「appid=値」「&」「sentence=値」の順になっています.2つの「値」を,問い合わせに適した内容にすれば,URLが完成し*2,Webサーバに渡されます.
- appid=の直後の$APPIDについては,あらかじめ,「APPID=〈アプリケーションID〉」というコマンドを実行して,シェル変数に値を格納しておきます.格納時は「$」なし,参照時は「$」つきなのは,シェルを使いこなす際の大事なところです.アプリケーションIDとは何か,またその取得方法については,以下をご覧ください.
- もう1つの値は,コマンドでは「$(echo -n 'よるいろいろいるよ' | ruby -r uri -e 'puts URI.escape ARGF.read')」と書かれています.これは,「よるいろいろいるよ」*4を解析対象のテキストとします.「$(」と「)」の中が,1つのコマンドになっていて,これによってURLエンコードと呼ばれる変換操作をします*5.
出力は次のようになりました.
4 4 よる よる 動詞 いろいろ いろいろ 名詞 いる いる 助動詞 よ よ 助詞
見やすく整形します.
<?xml version="1.0" encoding="UTF-8" ?> <ResultSet xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:yahoo:jp:jlp" xsi:schemaLocation="urn:yahoo:jp:jlp http://jlp.yahooapis.jp/MAService/V1/parseResponse.xsd"> <ma_result> <total_count>4</total_count> <filtered_count>4</filtered_count> <word_list> <word><surface>よる</surface><reading>よる</reading><pos>動詞</pos></word> <word><surface>いろいろ</surface><reading>いろいろ</reading><pos>名詞</pos></word> <word><surface>いる</surface><reading>いる</reading><pos>助動詞</pos></word> <word><surface>よ</surface><reading>よ</reading><pos>助詞</pos></word> </word_list> </ma_result> </ResultSet>
これを見ることで,「よるいろいろいるよ」という,ひらがなばかりの文を形態素解析にかけると,「よる」「いろいろ」「いる」「よ」に分割され,それぞれの品詞が動詞・名詞・助動詞・助詞になることが分かりました---あれれ,「夜色々居るよ」だから,最初が動詞だと困るんですが*6.また失敗作かよ……
Yahoo!デベロッパーネットワークで提供されているWeb APIには,ほかにも地図やショッピングなど,便利なものがたくさんあります.アイデア次第で面白いアプリが簡単に作れますので,試してみてはいかがでしょうか.
*2:どんなURLになるかは,もとのコマンドのcurlを「echo」に置き換えて,実行すれば,知ることができます.
*3:上のコマンドを実行したい場合,アプリケーションの種類は「サーバーサイド」がおすすめです.
*4:授業の例文から変更しています.後ろから読んでも「よるいろいろいるよ」です.こういうのを回文といいます.
*5:手元の環境では,URLエンコードをせず,「curl "http://jlp.yahooapis.jp/MAService/V1/parse?appid=$APPID&sentence=よるいろいろいるよ"」のコマンドでも,同じ出力を得ました.
*6:Web APIを使わずに形態素解析をするなら,mecabコマンドがお勧めです.あるLinux環境で実行しても,最初は「よる 動詞,自立,*,*,五段・ラ行,基本形,よる,ヨル,ヨル」と出ました.