XMLRPCで叩いてみた。

いつも参考にしているRubyリファレンスマニュアル - XMLRPC::Clientでもほとんど資料がない。
少し調べるとRubyist Magazine - 標準添付ライブラリ紹介 【第 1 回】 XMLRPC4Rでもう少し詳しく説明してあるものの・・・?って感じメソッドの指定なんかはよく分かるんだが引数がint型×2の例しか無い。実際にははてなダイアリーキーワード自動リンクAPIを参考にすると分かるが引数が

parameters
以下を参照

* body(string): キーワードを抽出するテキストを指定します。
* score(int): 0〜50。キーワードスコアのしきい値を指定します。指定された値よりもスコアが大きいキーワードのみが抽出されます。省略可。
* cname(array): キーワードのカテゴリーを指定します。指定があった場合、「一般」と指定されたカテゴリーのキーワードが抽出されます。指定が無かった場合は、全カテゴリーとなります。book,music,movie,web,elec,animal,anime,food,sports,game,comic,hatena,clubが指定可能です。省略可。
* a_target(string): アンカー(a)タグのtarget属性値を指定します。省略可。例:_blank
* a_class(string): アンカー(a)タグのclass属性値を指定します。省略可。例:keyword

といった感じで、Hashのようになって・・・・


ってそうか、引数はHushで与えるのかな?っという憶測の元にこんなコードを組んでみる。

#!/usr/bin/ruby -KU

require 'xmlrpc/client'

client = XMLRPC::Client.new2('http://d.hatena.ne.jp/xmlrpc')
arg = {
	'body' => "はてなダイアリー キーワード自動リンクAPIを叩いてみた。", # ここにキーワード抽出したい文章をば
	'mode' => 'lite', # コレが例の隠しパラメータ
	'score' => 20
}

p client.call('hatena.setKeywordLink', arg)

と実行結果は

{"wordlist"=>[{"score"=>100, "cname"=>"hatena", "word"=>"キーワード自動リンク", "refcount"=>4}, {"score"=>66, "cname"=>"hatena", "word"=>"はてなダイアリー", "refcount"=>324}, {"score"=>75, "cname"=>"elec", "word"=>"API", "refcount"=>121}]}

とベローンとこんな感じ。
実はサンプルコードの例文「はてなダイアリー キーワード自動リンクAPIを叩いてみた。」には途中半角スペースが入ってるんですね。ってか入れたんですね。
何でかって、半角スペース入れないと抽出されるキーワードが「はてなダイアリーキーワード自動リンクAPI」ただ一つになってしまって何も面白くないので。

この「refcount」って値、何なんでしょう。


これで自分の所属大学のtopページのHTMLタグを抜き、処理し、見やすいように整形しますと・・・・

"高エネルギー加速器研究機構"
"インターンシップ"
"コンピュータ"
"ソフトイーサ"
"ソフトウェア"
"データベース"
"キャンパス"
"サイエンス"
"代表取締役"
"アクセス"
"アクセス"
"アクセス"
"アクセス"
"アクセス"
"アメリカ"
"アメリカ"
"アメリカ"
"インテル"
"インテル"
"メディア"
"メディア"
"メディア"
"株式会社"
"情報科学"
"筑波大学"
"朝日新聞"
"リンク"
"リンク"
"リンク"
"協議会"
"助教授"
"留学生"
"IEEE"
"学会"
"教授"
"教授"
"高専"
"政府"
"福井"
"論文"
"acm"
"HPC"
"HPC"
"ISS"
"OS"
"OS"
"VM"

スッゴい被ってるよ!!


「アクセス」なんでそんなにあるの!!?


とよくよく見ますと、どうやら、各々キーワードには所属しているジャンルがあって、
分野"elec"からの「アクセス」、分野"music"からの「アクセス」、分野"geography"からの「アクセス」、・・・・と要った理由からのようです。

んーやっぱりBulkfeeds: RSS Directory & Search形態素解析 + 特徴語抽出よりは抽出語が好みだな。