The jonki

呼ばれて飛び出てじょじょじょじょーんき

PythonでYahoo! APIのキーフレーズ検索、画像検索を使う。

Yahoo! APIは様々なYahoo!技術を簡単に利用できてしまうものです。
アプリケーションIDの登録をするだけでよいのでだいぶ敷居が低いと思います。
http://developer.yahoo.co.jp/



で、今回試しに使ったAPIは「キーフレーズ検索」、「画像検索」の2つです。その2つのAPIの概要の詳細はYahoo!のリンク先で。

キーフレーズ抽出

日本語文を解析し、特徴的な表現(キーフレーズ)を抽出するAPIXMLでスコア別に単語が帰って来ます。キーフレーズということで名詞のスコアが高く出る傾向あり。

画像検索

画像検索した結果をXMLで返してきます。

またXMLのパーサとしてBeautifulSoupを使ってます。これも検索すれば色々出てくるかと。このブログのBeautifulSoupタグも多少参考になるかも。

参考


以下2つを利用したソース

「キーフレーズ検索」YahooKeyphrase.py
#!/usr/bin/python
#-*- coding: utf-8 -*-
import urllib
from BeautifulSoup import BeautifulSoup

# サンプルリクエストURL
# http://jlp.yahooapis.jp/KeyphraseService/V1/extract?appid=<アプリケーションID>&sentence=<対象テキスト>

enc = "utf-8"

appid = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
sentence = urllib.quote_plus("吾輩は猫である。しかし犬でもあったりする。".encode(enc))

# BeautifulSoupにXMLを食わせたインスタンスの処理
def analyzeXml(_soup):
	items = _soup.findAll("result")
	for item in items:
		print "Keyphrase : %s " % item.find("keyphrase").string
		print "Score     : %s " % item.find("score").string

def main():
	url = "http://jlp.yahooapis.jp/KeyphraseService/V1/extract"
	query = "%s?appid=%s&sentence=%s" % (url, appid, sentence)
	xml = urllib.urlopen(query).read()
	soup = BeautifulSoup(xml)
	analyzeXml(soup)

main()
「画像検索」YahooImage.py
#!/usr/bin/python
#-*- coding: utf-8 -*-
import urllib
from BeautifulSoup import BeautifulSoup

# サンプルリクエストURL
# http://search.yahooapis.jp/ImageSearchService/V1/imageSearch?appid=<あなたのアプリケーションID>&query=%e6%b2%96%e7%b8%84&results=2

enc = "utf-8"

# パラメタ http://developer.yahoo.co.jp/webapi/search/imagesearch/v1/imagesearch.html 
# appid, query, type, results, start, format, adult_ok, coloration, site

appid = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
key = "椎名林檎"

# BeautifulSoupにXMLを食わせたインスタンスの処理
def analyzeXml(_soup):
	items = _soup.findAll("result")
	ct = 1
	for item in items:
		print "##############\n# Result %s\n##############" % str(ct)
		print "Title        : %s " % item.find("title").string
		print "Summary      : %s " % item.find("summary").string
		print "DisplayURL   : %s " % item.find("url").string
		print "ClickURL     : %s " % item.find("clickurl").string
		print "RefererURL   : %s " % item.find("refererurl").string
		print "FileSize     : %s " % item.find("filesize").string
		print "FileFormat   : %s " % item.find("fileformat").string
		print "Height       : %s " % item.find("height").string
		print "Width        : %s " % item.find("width").string
		print "Thumbnail    : %s " % item.find("thumbnail").string
		print ""
		ct += 1

def main():
	url = "http://search.yahooapis.jp/ImageSearchService/V1/imageSearch"
	query = "%s?appid=%s&query=%s" % (url, appid, key)
	xml = urllib.urlopen(query).read()
	soup = BeautifulSoup(xml)
	analyzeXml(soup)

main()
実行結果
* YahooKeyphrase.pyについて
>       $ python YahooKeyphrase.py 
>       Keyphrase : 吾輩は猫である 
>       Score     : 100 
>       Keyphrase : 犬 
>       Score     : 20 


* YahooImage.pyについて
>       $ python YahooImage.py
>       ##############
>       # Result 1
>       ##############
>       Title        : 20070505 10943 jpg 
>       Summary      : None 
>       DisplayURL   : http://jjj55.img.jugem.jp/20070505_10943.jpg 
>       ClickURL     : http://jjj55.img.jugem.jp/20070505_10943.jpg 
>       RefererURL   :
>       http://sokkuri.net/alike/%E5%A0%82%E7%9C%9F%E7%90%86%E5%AD%90/%E6%A4%8E%E5%90%8D%E6%9E%9
7%E6%AA%8E 
>       FileSize     : 17.4kB 
>       FileFormat   : jpeg 
>       Height       : 352 
>       Width        : 352 
>       Thumbnail    : None