PythonからYahoo!のWebAPIを叩いてお手軽に形態素解析

2011-03-30
このエントリーをはてなブックマークに追加

形態素解析だとこれまではMeCabを利用していましたが、ちょっと使いたいだけだったり、テスト用データを作成したいだけだったりするとインストールとか面倒だったりするんですよね。

MeCabのPythonバインディングってWindowsじゃ動かないし(動かない、よね?)。

で、Yahoo!のAPI叩いて形態素解析したいと思います。もしかすると辞書はこっちのほうが充実してるのかもしれませんね。

#! /usr/bin/python
# -*- coding: utf-8 -*-

import urllib
import urllib2
from xml.dom import minidom

def main():

_url = “http://jlp.yahooapis.jp/MAService/V1/parse?appid=%s&sentence=%s&results=ma”
_get = urllib2.urlopen(_url % (アプリケーションID, urllib.quote(‘わたしまけましたわ’))).read()
_xdoc = minidom.parseString(_get)

for item in _xdoc.getElementsByTagName(u’surface’):

print item.firstChild.data

if __name__ == “__main__”:

print “Hello World”;
main()

アプリケーションIDの取得やAPIの詳細、レスポンスのXMLに関してはこちらをご覧いただければ。

getElementsByTagNameは、特定のノードを取得しています。surfaceとは分かち書きされた単語ですね。これで分割された単語を取得可能です。

以下、結果出力

わたし
まけ
まし

Tags:

Pythonでbit.lyのAPIを叩いて短縮URLを取得する

2011-03-22
このエントリーをはてなブックマークに追加

Twitterでお馴染みの短縮URL。やはり真っ先に思いつくのはbit.lyかと思われますが、Pythonでbit.lyのAPIを叩いて短縮URLを取得したいと思います。

事前にbit.lyのアカウントを取得しておく必要があります。

#!/usr/bin/python
# -*- coding: utf-8 -*-

import urllib
import urllib2
import json
def get_shorten():

_url = “http://api.bitly.com/v3/shorten?login=[bit.lyアカウント]&apiKey=[APIキー]&longUrl=%s&format=json”
_long = urllib.quote(短縮したいURL)
_get = urllib2.urlopen(_url % (_long))
_response = json.load(_get)
print _response[‘data’][‘url’]

if __name__ == “__main__”:

print “Hello World”
get_shorten()

jsonはPython2.6から標準で実装されているようです。それ以前のバージョンの場合はsimplejsonを使うのが便利かと。短縮したいURLはURLエンコードしておきましょう。

APIの仕様はこちらに詳しく載ってます。

Tags:

Djangoのformで複数選択可能なcheckboxを出力する

2011-03-18
このエントリーをはてなブックマークに追加

Djangoのフォームは非常に便利で、コード量を猛烈に削減してくれます。が、多機能であるが故に使いこなせないと宝の持ち腐れになります。

はい、持ち腐れてます。泣。

ユーザにフォームでの入力をしてもらう場合、いくつかの選択肢から複数選択してもらうケースがあります。今回はそのサンプル。

フォームを定義するときに、

week = forms.MultipleChoiceField(widget=forms.CheckboxSelectMultiple, choices=[(0,u’月’),(1,u’火’),(2,u’水’),(3,u’木’),(4,u’金’),(5,u’土’),(6,u’日’),])

これだけ。これで月~日の複数選択可能なチェックボックスが出力されます。ユーザからの入力値はリストで返ってきます。

また、初期値を入れたい場合は[1,3]とリストで渡してあげればOK。上記の例だと火曜日と木曜日にチェックが入った状態で出力されます。

結構悩みました。

Python2.5、Django1.2.3で動作。1.0から動くみたいです。

Tags: ,