品詞解析RubyライブラリEngTagger

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として公開することにします。詳細は以下の通り。

プロジェクト・サイト

インストール

gem install engtagger

使い方

require 'rubygems'
require 'engtagger'

# EngTaggerオブジェクトの作成
tgr = EngTagger.new

# サンプルテキスト text
text = "Alice chased the big fat cat."

# textに品詞タグ付与(XML形式)
tagged = tgr.add_tags(text)
# => "<nnp>Alice</nnp> <vbd>chased</vbd> <det>the</det> <jj>big</jj> <jj>fat</jj><nn>cat</nn> <pp>.</pp>"

# text中の全ての名詞・名詞句およびその頻度を取得
word_list = tgr.get_words(text)
# => {"Alice"=>1, "cat"=>1, "fat cat"=>1, "big fat cat"=>1}

# タグ付けされたテキストから名詞を抽出
nouns = tgr.get_nouns(tagged)
# => {"cat"=>1, "Alice"=>1}

# タグ付けされたテキストからすべての固有名詞を抽出
proper = tgr.get_proper_nouns(tagged)
# => {"Alice"=>1}

Posted in ,

言語研究とGoogle

Posted by Yoichiro Hasebe Mon, 18 Feb 2008 07:14:00 GMT

少し前に 言語学の研究をググってするというのはありなんだろうか? というブログ記事を読み、これについて少し考えた。個人的な意見としては、Googleが使っているクローラおよび検索のアルゴリズム(およびパラメター)に結果が少なからず左右されること、それからGoogleによる恣意的な操作のない保証がないということを考えると、100%「あり」だとは決して言えない。

ただ、人名や企業名などの固有名詞ならともかく、より一般的な表現のヒット数については、それが「何らかの傾向」を表している可能性は高いと思う。きちんとした理論に基づいた議論がまずあって、補足的にGoogleの検索結果をデータとして示すくらいなら許容範囲だろう。

実際、ここ何年かに出版された言語学の入門書には、概念やリサーチ手法の説明にGoogleの検索結果を利用したものがある。たとえば、谷口一美さんによる『ことばのエクササイズ 認知言語学』の「ことばのダイナミズム」という章では、「わたし的には/僕的には」といった、日本語の「~的」にみられる現代的用法についてGoogleを用いた分析を行っている。こういった口語表現に関する調査はウェブ上のデータが確かに役立つ。

でもやはり、検索画面の裏側に、利用者/研究者にとって覗き見ることができないブラックボックスが存在していることは無視できない。

その意味で、最近話題になった Wikia Search のように、ウェブ検索のインフラ自体をオープンソース化しようという試みには期待している。現時点ではまだまだ実用には耐えないけれど(日本語もちゃんと通らない)、上手く行けば、学術的なニーズを満たした検索サービスになる可能性はある。

Posted in ,

的は射るべきか得るべきか

Posted by Yoichiro Hasebe Mon, 18 Feb 2008 06:36:00 GMT

3年か4年くらい前に くらべて!Google というウェブアプリを作った。複数のキーワードをGoogleで一度に検索して棒グラフにしてくれる単純なプログラム。言語学のちょっとした用法調査に便利だという感想をたま~に頂く。最近自分でもあらためて使ってみたら少し面白かった。

昨今、「正しい日本語」がブームなそうで、例えば「的を射る」と「的を得る」のどちらが正しいかということが話題になったりする。もちろん前者が正しいわけで、Googleで検索してみると、その結果は上の事実を反映しているように思える。(ちなみに「的を得る」は、「的を射る」と「当を得る」との混用だそう。)

ところが、同じ表現の活用形である「的を射た」と「的を得た」とで検索をやりなおすと結果が逆転する。

実際のところ、ル形よりもタ形すなわち形容詞形のほうが圧倒的にヒット数が多いわけで、これを考えると、「正しい日本語」としてはどうあれ、「的」を「得る」べきものとして捉えている人は多いみたいだ。あくまでGoogleの検索結果に過ぎないので参考にしかならないが、これも言語事実の断片と言える。

他にも、「名誉挽回」「汚名返上」「汚名挽回」などでやってみた。いわゆる誤用が用いられている前後の文脈などを詳しく調べてみると、その表現でなければならない事情や理由が見いだせる可能性があるんじゃないだろうか。そうすると言語変化の一つの道筋が見えるかも知れない。

いや全然見えてこないかもしれないけど。

Posted in ,

形態素n-gramと正規表現による語法・用例検索の手法

Posted by Yoichiro Hasebe Mon, 18 Feb 2008 02:42:00 GMT

SlideShare というウェブサービスがあって、PDF や PowerPoint のファイルをアップロードすると、Flash形式のスライドとして公開できる。便利そうなので、試しにこのあいだの研究会で話したときに使った資料をアップロードしてみる。

「理論言語学研究におけるコーパスの(これまであまり着目されてこなかった)利用法とその意義」といった内容。

Posted in ,

Older posts: 1 2 3 ... 16