[[ノート/テキストマイニング]]~
訪問者数 &counter(); 最終更新 &lastmod();~
>>[[ノート/テキストマイニング/oregano2]]
>>[[ノート/テキストマイニング/oregano2]]~
>>[[ノート/テキストマイニング/oregano3]]
**テキストマイニング@Oreganoの設定 [#t2ae5bfa]
2009/02/22-24
***nkf [#cb743bfa]
漢字コードのごたごたが結構あるので(後で必要になったので)nkfをインストール。~
http://sourceforge.jp/projects/nkf/を参照
wget http://iij.dl.sourceforge.jp/nkf/37177/nkf-2.0.9.tar.gz
make
Makefileのinstallの時マニュアル類のインストール先を/usr/share/local/manに変更して
make install
***chasen [#i30b4b00]
Chasenは元のホームページは古いので、http://chasen-legacy.sourceforge.jp/を参照すること。
まず、iconvとdartsをインストール~
iconfはhttp://www.gnu.org/software/libiconv/を参照
wget http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.12.tar.gz
tar -zxvf libiconv-1.12.tar.gz
cd libiconv-1.12
./configure
make
make check
make install
次に、dartsをインストール~
dartsはhttp://chasen.org/~taku/software/darts/参照
wget http://chasen.org/~taku/software/darts/src/darts-0.32.tar.gz
tar -zxvf darts-0.32.tar.gz
cd darts-0.32
./configure
make
make check
make install
最後にchasenをインストール~
chasenはhttp://sourceforge.jp/projects/chasen-legacy/参照~
古い方http://chasen.naist.jp/hiki/ChaSen/はだめ。
wget http://jaist.dl.sourceforge.jp/chasen-legacy/32224/chasen-2.4.4.tar.gz
tar -zxvf chasen-2.4.4.tar.gz
cd chasen-2.4.4
./configure
make
make check
make install
辞書として、ipadic-2.7.0を入れてみよう。http://sourceforge.jp/projects/ipadic/参照。~
候補としてはUniDicというのもあるらしい。~
wget http://jaist.dl.sourceforge.jp/ipadic/24435/ipadic-2.7.0.tar.gz
tar -zxvf ipadic-2.7.0.tar.gz
cd ipadic-2.7.0
./configure
make
make check
make install
これだと、EUCベースなので、UTF-8に変更する必要がある。~
参照 http://www.crimson-snow.net/hmsvr/centos/memo/chasen_utf8.html、http://blog.nomadscafe.jp/archives/000482.html~
要するに、ipadicをmakeしたあと、インストール(make install)する前に、EUCコードをUTF-8に変換する。スクリプトファイルconv_utf-8.shをipadicを展開したディレクトリに
!/bin/sh
for file in $*
do
if [ -f $file ]; then
nkf --utf8 $file > tmpfile
mv tmpfile $file
fi
done
exit
のように作っておいて、次のように実行する。
chmod 755 conv_utf-8.sh <= スクリプトファイルに実行権限付加
./conv_utf-8.sh *.dic *.cha
このようにしてすべてのdic, chaファイルをUTF8へ変換後、辞書を(再?)生成する。
`chasen-config --mkchadic`/makemat -i w
`chasen-config --mkchadic`/makeda -i w chadic *.dic
こうしておいてから、インストールする。
make install
それから、起動時設定ファイルの /usr/local/etc/chasenrc もUTF8対応に変換する。
cd /usr/local/etc
nkf --utf8 chasenrc > chasenrc.tmp
mv chasenrc.tmp chasenrc
こうしておいて、テストすればよい。
echo "私は昨日学校へ行きました" | cat > tempfile
chasen -i w tempfile
結果が
私 ワタシ 私 名詞-代名詞-一般
は ハ は 助詞-係助詞
昨日 キノウ 昨日 名詞-副詞可能
学校 ガッコウ 学校 名詞-一般
へ ヘ へ 助詞-格助詞-一般
行き イキ 行く 動詞-自立 五段・カ行促音便 連用形
まし マシ ます 助動詞 特殊・マス 連用形
た タ た 助動詞 特殊・タ 基本形
EOS
のようになればよい。
最後に、chasenをいつも-i wを付けるのが面倒なので、($HOME)/.bash_profileに
alias chasen='chasen -i w'
を定義してしまうと、
chasen tempfile
だけでよくなる。
***09/02/25 chasenをpythonから使ってみる [#u4dfdc79]
いろいろなやり方が考えられる([[ラッパーを作る〜例えばこれ参照:http://owa.as.wakwak.ne.jp/zope/docs/Python/BindingC/]]、シェル経由で使う)が、ここではシェル経由で使ってみた。
シェル経由での使い方は、sysのpopen2などを使うのが古いやり方らしく、公式のお勧めはsubprocessのPopenを使うことらしい。~
subprocessについては、ライブラリマニュアルの17.1を参照。http://www.python.jp/doc/release/lib/node530.html
プログラム例が少ないが、たとえばhttp://d.hatena.ne.jp/kakurasan/20080413/p1
それを元にして書換えたのが以下である。あまりよい出来ではないが、とにかく。
#!/usr/bin/env python
# encoding: utf-8
# -*- coding: utf-8 -*-
# coding: utf-8
##
import sys
import codecs
import subprocess
import os
### A magic for printing UTF-8 characters
sys.stdout = codecs.getwriter('utf_8')(sys.stdout)
fin = open("myinput", "r")
cwd = "/" # 作業ディレクトリ
cmdline = "chasen -i w" # chasenコマンド。-i wが必要。
p = subprocess.Popen(cmdline, shell=True, cwd=cwd, stdin=fin,
stdout=subprocess.PIPE, stderr=subprocess.STDOUT,
close_fds=True)
stdouterr = p.stdout # 文字列オブジェクト〜パイプをつなぐ
# ここからphthon内の処理開始。
# chasen出力パイプを拾って(下でreadline)好きなように整形してpythonとして出力。
print "-" * 80 # 区切り表示(開始)
while True:
line = stdouterr.readline() # 改行を含んで行を読み込む
print "-" * 80 # 区切り表示(開始)
while True:
line = stdouterr.readline() # 改行を含んで行を読み込む
if not line:
break
print line.rstrip() # 後ろの改行を消して出力
print "-" * 80 # 区切り表示(終了)
ret = p.wait() # 戻り値が入る
print "Return code: %d" % ret
chasenに直接ファイル出力させることも出来る(subprocess.Popen(... stdout=ファイルオブジェクト ...)にすればよいが、今回は余り意味がない。
一応これで、chasenに入る前の入力をpythonで処理してから渡すことと、chasenから出てきた出力をpythonで受け取って処理することが、できるはず。
但し、出力については、chasenの端末出力の形式なので、別の出し方のほうが良いかもしれない。こんな形なので、始末は悪い。やはりラッパーにしようか。
--------------------------------------------------------------------------------
私 ワタシ 私 名詞-代名詞-一般
は ハ は 助詞-係助詞
昨日 キノウ 昨日 名詞-副詞可能
学校 ガッコウ 学校 名詞-一般
へ ヘ へ 助詞-格助詞-一般
行き イキ 行く 動詞-自立 五段・カ行促音便 連用形
まし マシ ます 助動詞 特殊・マス 連用形
た タ た 助動詞 特殊・タ 基本形
EOS
--------------------------------------------------------------------------------
Return code: 0
>>[[ノート/テキストマイニング/oregano2]]~
>>[[ノート/テキストマイニング/oregano3]]