[pukiwiki]
日本語WortdNetフロントエンドをPython2.5で。
*[[日本語WordNet:http://nlpwww.nict.go.jp/wn-ja/]]
こちらが公式サイト。
-[[WordNet(ウィキペディア) :http://ja.wikipedia.org/wiki/WordNet]]
linkの意味などの説明
*[[(Pythonで)日本語WordNetのデータベースを探索するフロントエンドプログラム:http://subtech.g.hatena.ne.jp/y_yanbe/20090314/p2]]
こちらの記事のプログラムを動かすには、Python2.6以降に追加された namedtupleが必要。 (collectionモジュールに収録)
なのですがー うちは2.5を使ってるので、上記プログラムに必要な機能のみ作ってみました。
[/pukiwiki]
[pukiwiki]
collections.pyとして、上記リンク先記事中のプログラムと同じフォルダに保存すればOK.
(標準モジュールと名前がかぶるのが厭な場合は適宜。)
[/pukiwiki]
"namedtuple.py"
def namedtuple(tname,tmemberstr):
__t=tmemberstr.split()
__a=",".join(__t)
class _(tuple):
exec "def __new__(cls, %s):return tuple.__new__(cls,(%s))"%(__a,__a)
exec "def __init__(self, %s):tuple.__init__(self,(%s))"%(__a,__a)
def __get__(self,x):
return self[__t.index(x)]
for m in __t :
setattr(_,m,property(lambda self,p=m:self.__get__(p)))
_.__name__=tname
return _
exec文使ってたり、かなり凶悪ですが、あまり気にしないことに(汗
(exec文使わずに、キーワード付き引数で初期化する方法を思いつかなかったので)
namedtupleの動作サンプル
>>> X=namedtuple("X","a b c") #名前付きタプル クラスXを作成
>>> x=X(1,2,3) #初期化方法 その1
>>> x.a #プロパティ名でアクセス
1
>>> print x
(1, 2, 3)
>>>x[0]
>>> x[0] #インデックスでアクセス
1
>>> x.b
2
>>> x.c
3
>>> x2=X(c=3,b=2,a=1) #キーワード引数で初期化
>>> x
(1, 2, 3)
>>> x2
(1, 2, 3)
>>> x==x2
True
>>> x==(1,2,3) #このあたりの挙動は純正と違うかも
True
日本語WordNet DBで、「お茶」という単語について検索した結果サンプル。
word お茶
words= [(161930, u'jpn', u'\u304a\u8336', None, u'n')]
link= hype
お茶 tea
ブッシュ bush
木本 ligneous_plant
維管束植物 tracheophyte
フロラ flora
生物 being
生き物 living_thing
全般 whole
もの physical_object
お茶 tea
草 herb
シーズニング seasoner
材料 fixings
食品 foodstuff
滋養分 food
お茶 tea
飲み料 drink
滋養分 food
リクイッド liquid
流体 fluid
物体 substance
物質 matter
一部分 part
結付き relation
お茶 coffee_break
おやつ collation
食事 repast
食べ物 nutrition
滋養分 food
link= hypo
お茶 tea
紅茶の葉 black_tea
緑茶 green_tea
お茶 tea
ハーブティー herbal
link= msub
お茶 tea
link= mprt
お茶 tea
link= hmem
お茶 tea
link= hsub
お茶 tea
link= hprt
お茶 tea
ところで、このデータベースは、何にどう使えばいいのか、linkが具体的に何を意味しているのか。。。は、これから調べます(汗
(多分、テキストマイニングに使うのかと思われ)
でも人工無脳に使うと面白そうですねー