[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が具体的に何を意味しているのか。。。は、これから調べます(汗
(多分、テキストマイニングに使うのかと思われ)
でも人工無脳に使うと面白そうですねー