ようこそ!yohasebe.com は長谷部陽一郎が言語学の研究のこと、プログラミングのこと、等々について思いつくままに書くサイトです。その他、大学での担当授業に関する連絡や、ソフトウェアの公開も行っています。どうぞごゆっくり。
Posted by Yoichiro Hasebe
Mon, 03 Nov 2008 12:32:00 GMT
RSyntaxTree というツールを公開しています。しばらく前に ミシガン州立大の Dr. Alan Munn から「こんなことできないか」というリクエストがあり、「多分できる」と返事をしました。要するに、今までは左側のような出力しかできなかったのを、右のように出力できるようにしてほしいとのこと。
約束した以上もういい加減やらないと、と思って、本日の授業が終わってから取りかかりましたが、1年以上前に自分が書いたコードはもはや意味不明。適当にいじくっているうちに、何とかできました。新バージョンでは、ツリーの末端のノードにつながる枝のシェイプを triangle, vertical-bar, nothing の3種類から選べるようになっています。
しかし、そもそもなぜこのような機能が必要だったのかは不明(ご本人に聞いていなかった)。単なる好み?
Posted by Yoichiro Hasebe
Mon, 03 Nov 2008 08:38:00 GMT
先週末、サーバのメンテナンスを行いました。その結果、1つ前のエントリーが消えてしまいましたが、単に「最近ブログ書いてないなー」という内容だったので問題ないでしょう。
金曜日にサイト全体のレスポンスが異様に悪くなりました。ソフトウェア的な不具合はどこにも見つからなかったので、ハードウェアかと思ってNICを交換したものの、それでも改善されず。いろいろ調べてみると、参照していたDNSに問題があったようで、変更したら直りました。
ついでなので、Rubyを最新バージョンに上げたり、調子に乗って色々やったのですが、そうすると今度はブログ・エンジンのTypoが動かなくなって、これにも大変悩みました。Typo 5.1.3はRuby 1.8.7に対応してないのですね。Railsのコンフィグファイルを少しいじって対処しました。
このところyohasebe.comへの繋がりが悪かったのはそういう訳です。ちなみにこのサイトで一番参照が多いのは RSyntaxTree で、ほとんどが海外からのアクセスです。そう考えるとこのエントリーは英語で書くべきだったかもしれません。とにかくご不便をおかけしました。
Posted in Miscellaneous
Posted by Yoichiro Hasebe
Wed, 21 May 2008 14:04:00 GMT
5月の初めからPerlを勉強しています。今後仕事で必要になる可能性があるので。8年くらい前に小さなスクリプトを作って遊んだりしてたけど、Perlのオブジェクト指向はどうもよく分からんなぁと思って使うのを止めたのでした。あらためて調べてみると、これが結構合理的だし面白い。
早速何かに役立てたいと思いつつも、ある程度の規模のプログラムをPerlで書く気にはなりません(それだったらRubyで書きたい)。じゃあPerlモジュールを何か見つけてきてそれのRuby移植版を作ろう。ということで、CPANを眺めていたら、Lingua::En::Taggerというのを見つけました。どんなモジュールかというと、Part of Speech Tagger、すなわち品詞解析器です。Pen Treebankのコロケーション情報を元にした隠れマルコフモデルを使い、入力された英文を品詞解析します。ライセンスはGPL2でした。
ゴールデンウィークの時間を使って、何とか一通りの作業が完了。もとのPerlモジュールがそうなのだけど、英文中からすべての名詞を抜き出したり、固有名詞(と思われるもの)を抜き出したり、修飾句に導かれた名詞句を抜き出すといった機能があります。もちろんこれらをすべて実装。
コードの品質はともかく、Rubyライブラリとして需用は少なからずあると思うので、RubyForgeでgemとして公開することにします。詳細は以下の通り。
プロジェクト・サイト
インストール
使い方
require 'rubygems'
require 'engtagger'
tgr = EngTagger.new
text = "Alice chased the big fat cat."
tagged = tgr.add_tags(text)
word_list = tgr.get_words(text)
nouns = tgr.get_nouns(tagged)
proper = tgr.get_proper_nouns(tagged)
Posted in Linguistics, Programming
Posted by Yoichiro Hasebe
Thu, 28 Feb 2008 13:15:00 GMT
RHGによると、クラスの特異クラスはスーパークラスの特異クラスを継承している。

ということは、クラスメソッドはサブクラスに受け継がれるということだ。ならばクラスインスタンス変数はどうなんだろう?これもサブクラスに受け継がれるのだろうか?
class Bird
@can_fly = true
class << self
def can_fly?
@can_fly
end
end
end
class Sparrow < Bird
@can_fly = true
end
class Penguin < Bird
@can_fly = false
end
class Ostrich < Bird
end
puts "Bird can fly: " + Bird.can_fly?.to_s
puts "Sparrow can fly " + Sparrow.can_fly?.to_s
puts "Penguin can fly: " + Penguin.can_fly?.to_s
puts "Ostrich can fly: " + Ostrich.can_fly?.to_s
これを実行すると
Bird can fly: true
Sparrow can fly true
Penguin can fly: false
Ostrich can fly:
確かにクラスメソッドは継承されるけど、クラスインスタンス変数は継承されないことが分かった。考えてみるとクラス「インスタンス」変数なんだから当たり前だ。でもこうやってはっきり確認すると気持ちがいい。
Posted in Programming | Tags Ruby