見出し画像

Yahoo!のAPIで形態素解析

WEBサイトをブックマークする時にサイトタイトルを形態素解析してタグにしていた。使っていたYahoo!のAPIが去年V2になってV1が廃止になったので手直しした。

形態素解析とは

知らない言葉はググろう。

ざっくり言えば文章を単語に分割すること。古くから検索処理用にキーワードの候補を抽出するのに使っている。
インターネットおじさんとしてはnamazuの実装なんかでも使っていた。

Yahoo!のAPIを使う

なによりも本体の資料を見るのが一番。しかも今回は日本語なので楽。

実装はこんな感じ。

<?php
$appid="■■■■■■■■■■■■■■■■■";
$KEYWORD="トヨタがオウンドメディアで会見やったっていうけど、アップルとかGoogleもそうだし、そういう会社と並べても別に特に遜色ない企業な気はする。外資かどうかで印象が違うのが島国根性って感じがして良い。";

$data_json=json_encode(array(
	"id"=>time(),
	"jsonrpc"=>"2.0",
	"method"=>"jlp.maservice.parse",
	"params"=>array("q"=>$KEYWORD)
));
$ch = curl_init();
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
	'Content-Type: application/json',
	'User-Agent: Yahoo AppID: '.$appid
));
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data_json);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_URL, 'https://jlp.yahooapis.jp/MAService/V2/parse');
$result=curl_exec($ch);
$json=json_decode($result);
curl_close($ch);

print_r($json);
exit;
?>

$appidはYahoo!でAPIを使う時に取得する。V1で取得したものが引き続き使えた。
$KEYWORDにいれた文章を名詞、動詞、助詞などなどに分割した結果を戻してくれる。
文章は先日思いつきをつぶやいたhttps://note.com/yukioterasawa/n/n40022e452d24 。ちょっとした文章のサンプルで特に意味はない。
検索対象キーワードを取得するには、名詞と未定義語、形容詞、動詞を抜き出すようなイメージ。
"トヨタ"は名詞として拾ってくれるけど"アップル"や"Google"は未定義語になる。このあたりの辞書はあんまり贅沢言っちゃならない。

ちなみに $KEYWORD="ぼっち・ざ・ろっく!" で形態素解析したら"ざ"と"ろ"が名詞として取得できた。わりと散々な結果ではある。

まあまあ使えるんですよ

"アップル"や"Google"が未定義語なように、"ぼっち"とか"ろっく"を拾ってくれないものとして運用する必要がある。検索ワードとして”ぼっち・ざ・ろっく!”だけ用意しておけば部分一致するし良くないですか?という話。無料のAPIに全部頼っちゃならんて、未定義語が出てくるだけマシっすよ、というくらいの期待値で使うと、まあまあ使えると思います。
というかそういう気持ちで使ってます。

ウェブサービスブームありましたよね

Yahoo!のAPI使い始めたのは2000年代のウェブサービスブームの頃で、公開された小さい便利機能をうまく利用するやり方はマッシュアップなんて言われたりした。結局それで注目集めたいだけですよねって人たちに広く使われた結果、流行として終わってしまった印象がある。当時だってみんなバズりたかったんです。
今そういうブームは覚えてる人は性格歪んでる人くらいな感じで、すっかり無かったものになってっぽいけど、その恩恵は今でも地味に続いていたりします。
末永く使わせてください。

この記事が気に入ったらサポートをしてみませんか?