Windows XP+Ruby環境でChaSenを使う

Windows XP+Ruby 1.8.7+ChaSen 2.4.2 環境のセットアップ作業の手順と、Ruby/Chasen Alternative の入手方法。

Ruby の入手とインストール

Ruby の入手とインストールの仕方については、以下の記事をお読みください。

よしいずの雑記帳 Windows XPにおけるRubyのセットアップのメモ

今回は、RubyInstaller 1.8.7-p352.exe を入手&インストール。

ChaSen の入手とインストール

ChaSen (茶筌) とは、形態素解析システムです。日本語の文章を形態素(=意味を持つ最小単位)に分解し、それぞれの品詞を決定してくれます。

ChaSen は、以下のページから入手可能です。

ダウンロード - ChaSen legacy - SourceForge.JP

ChaSen-2.4.2-1-ipadic-sjis-2.7.0.EXE をダウンロードします。ファイルをダブルクリックで実行し、ウィザードにしたがってインストールします。

環境変数の設定

環境変数 PATH に libchasen.dll のあるフォルダのパス (デフォルトでは、C:\Program Files\ChaSen) を追加します。

また、環境変数 CHASENRC に chasenrc ファイルのパス (デフォルトでは、C:\Program Files\Chasen\dic\chasenrc) を追加します。

Windows XPの場合、システムのプロパティ→「詳細設定」タブ→「環境変数」ボタンで、環境変数の設定画面が開きます。

現在ログインしているユーザーだけが利用する場合にはユーザー環境変数に、すべてのユーザーが利用する場合にはシステム環境変数に登録します。

「PATH」変数がない場合は、「新規」ボタンをクリックして、変数名に「PATH」、変数値に「C:\Program Files\ChaSen」のように記述します。「CHASENRC」についても同様です。設定したい環境変数がすでに存在するときは、「編集」ボタンをクリックして、変数値の間をセミコロン(;)で区切って追記します。一般に、環境変数の値においては、複数のパスの間を「;」で区切ります。

Windowsでは、環境変数の名前に大文字・小文字の区別はありません。

Ruby/Chasen Alternative の入手

Ruby/Chasen Alternative は、以下のページから入手可能です。概要と使い方も書かれています。

Ruby/Chasen Alternative

Ruby/Chasen Alternative (ver 0.11) の実体は、chasen.rb という1つのファイルです。

getopt メソッドで指定したフォーマット形式で sparse メソッドの解析結果が出力されます。

getopt メソッドの引数で指定するオプションについては、以下のページが詳しいです。

ChaSen - 長岡技科大 自然言語処理研究室

余談

その1

『恋するプログラム―Rubyでつくる人口無能』(秋山智俊著、毎日コミュニケーションズ刊) のサンプルプログラムにおける chasen.rb の代用として Ruby/Chasen Alternative の chasen.rb を使う場合には、morph.rb 内の Chasen::setarg と Chasen::analyze をそれぞれ Chasen::getopt と Chasen::sparse に変更します。

その2

Ruby/Chasen Alternative (ver 0.11) のスクリプトの中で使われている Win32API モジュールの仕様が Ruby 1.9 から変更されたため、Ruby 1.9 の環境ではそのままでは動作しません。

もとのスクリプトを例えば以下のように修正すると、Ruby 1.9 以降でも使えます。

#!ruby -Ks
require 'dl/import'

module Chasen
  extend DL::Importer
  dlload 'libchasen.dll'
  extern 'int chasen_getopt_argv(void*, void*)'
  extern 'void* chasen_sparse_tostr(void*)'

  def getopt(*opt)
    argv = opt.unshift($0.dup).push(nil).pack('p' * opt.size)
    chasen_getopt_argv(argv, nil)
  end

  def sparse(text)
    chasen_sparse_tostr(text).to_s.force_encoding("Windows-31J")
  end

  module_function :getopt
  module_function :sparse
end

if $0 == __FILE__
  Chasen.getopt('-F%m %P-\n')
  puts Chasen.sparse('今年は2011年です。')
end

その3

Ruby 1.9.2 以降、$LOAD_PATH にカレントディレクトリ "." が含まれなくなり、chasen.rb と同じフォルダにある他のスクリプトから require 'chasen' を実行するとエラーが出ます。とりあえずは、require メソッドの代わりに require_relative メソッドを使用すれば、chasen.rb を読み込むことができます。

【theme : プログラミング
【genre : コンピュータ

プロフィール

よしいず

Author:よしいず
MATHEMATICS.PDFというウェブサイトを運営しています。

管理の都合上、トラックバックとコメントはオフにしてあります。ブログ経験者なら分かっていただけると思いますが、スパム(アダルトやその他の宣伝)ばかりなのが現実です。

リンクは自由です。当サイトの記事に対する間違いの指摘・意見・感想などを述べた記事からのリンクは歓迎です。ただし、ブログ記事アップ直後はミスが多く、頻繁に修正します。場合によっては削除する可能性もあります。その際、何も断りもなく修正・削除しますがご了承ください。内容を参考にする場合には投稿後一週間ほど様子を見てからにしてください(笑)。

記事の間違いを指摘するときは、その具体的箇所、理由(仕様に反するなど)・根拠(参考にした文献など)、代替案(同じ結果を得るための正しいやり方)も教えてください。そうしないと、(指摘される側および第三者はその時点では無知の状態なので、)どこが間違いなのか分かりませんし、本当に間違っているのかどうかが判断・検証できません。実際、間違いだと指摘されたことが結局は正しかったというケースもありますので。

このブログのタイトル一覧

リンク
月別アーカイブ
カテゴリ
最新記事
検索フォーム
RSSリンクの表示