http://developer.yahoo.co.jp/webapi/jlp/ma/v1/parse.html
1.アプリケーションIDの準備
https://e.developer.yahoo.co.jp/register
からアプリケーション情報の入力をして、アプリケーションIDを取得します。
取得したIDで試しに動かしてみます。
http://jlp.yahooapis.jp/MAService/V1/parse?appid=取得したID&results=uniq&sentence=解析したい文章
これをブラウザで動かしてみると
のようになります。
2.格納用テーブルの用意
今回は、下記を使います。
・claims(文章が入っているテーブル)
・morphems(解析結果が入るテーブル)
・categories(品詞が入っているテーブル)
morphemsテーブルの構造は図のようになっています。
3.コードの追加
今回はController/ClaimsController.phpのviewアクションを利用してやりました。
public function view2($id = null) {
if (!$this->Claim->exists($id)) {
throw new NotFoundException(__('Invalid claim'));
}
$options = array('conditions' => array('Claim.' . $this->Claim->primaryKey => $id));
$this->set('claim', $this->Claim->find('first', $options));
$claim = $this->Claim->find('first', $options);
if($claim['Claim']['chk'] == 0 ){
$appid = '自分のID';
$url = "http://jlp.yahooapis.jp/MAService/V1/parse?appid=".$appid."&results=uniq";
$url .= "&sentence=".urlencode($claim['Claim']['naiyou']);
$xml = simplexml_load_file($url);
APP::import('Model', 'Morphem');
$this->Morphem = new Morphem;
APP::import('Model', 'Category');
$this->Category = new Category;
foreach ($xml->uniq_result->word_list->word as $cur){
$category_id = $this->Category->find('first',
array(
'fields' => array('id'),
'conditions' => array('Category.name' => (string)$cur->pos),
)
);
$this->Morphem->create();
$data = array(
'claim_id' => $id,
'word' =>(string)$cur->surface,
'category_id' => (int)$category_id['Category']['id'],
'count' =>(int)$cur->count,
);
$this->Morphem->save($data);
}
$data1 = array(
'id' => $id,
'chk' => 1
);
$this->Claim->save($data1);
}
}
図のように作成され、テーブルに保存します。