2008-02-25 21:12:14
Pythonで英語の単数形と複数形の変換ができるという記事を読んだ気がしていたのだが、Rubyだった(「Rubyを仕事に使うべし!」 IT-Pro)。なんだ、Rubyだったかと思ったが、一応試してみた。
RubyGemsとかRailsとか入れなければならないようだ。Synapticでrubygemsをインストールしたのに、gemなんてインストールされていないという警告しか返ってこない。変だなと思いながら、http://rubyforge.org/から最新版をダウンロードして、
sudo ruby setup.rbだけでインストールはされたのだが、
gem install railsと打っても、gemなんてないねと云われてしまう。
sudo gem1.8 install rails --include-dependenciesとやったら動いた。よく見ると、rubygemsのインストール時に、
install -c -m 0755 /tmp/gem /usr/bin/gem1.8と表示されていた。ubuntuではそうなのか。そういえば、前にgem1.8からgemへシンボリックリンクを張ったような気がする。まだ、Rubyを諦めていなかったころに。こうして、使う予定もないのにrailsをインストールしてしまって、複数形から単数形への変換をさせてみた。単複同形の語、違う形になるもの、-iumから-aになるもの、-ex/ixから-icesになるもの、-enがつくものなど。普通のsがつくものも入れてみる。
#!/usr/bin/ruby require 'rubygems' require 'active_support' swords = ["sheep", "person", "medium", "bacterium", "index", "matrix", "ox", "egg"] pwords = ["sheep", "people", "madia", "bacteria", "indices", "matrices", "oxen", "eggs"] puts "Singular -> Plural" for sw in swords puts "\t" + sw + " => " + sw.pluralize end print "\n" puts "Plural -> Singular" for pw in pwords puts "\t" + pw + " => " + pw.singularize endこれを実行させてみると、
Singular -> Plural sheep => sheep person => people medium => media bacterium => bacteria index => indices matrix => matrices ox => oxen egg => eggs Plural -> Singular sheep => sheep people => person madia => madium bacteria => bacterium indices => index matrices => matrix oxen => ox eggs => eggちゃんとできているではないか! 上記の記事では、「これが何の役に立つの? と言われると,ちょっと微妙な気もしますが。」なんて書いてあったが、単語リストを作ったり、索引を作ったり、検索するときに役立ちそうではないか。Pythonではできないのか。
この前作った単語リストの頻度順を高い方からにするのは、
freq = sorted(wDict.items(), key=lambda (k,v): (v,k), reverse=True)とすればいいことが判った。, reverse=Trueを付けるということである。なるほどね。