ユーザ用ツール

サイト用ツール


chasen

ChaSen

日本語形態素解析システム。本記事では naist_jdic および unidic における利用について言及する。

Ubuntu Linux における chasen

2009年9月7日に確認。

Ubuntu 9.04 において sudo apt-get install chasen によってインストールされるのは、 以下のパッケージである。

  • chasen-dictutils libchasen2 naist-jdic naist-jdic-utf8

かつては naist-jdic ではなく ipadic が使用されていた。

$ ls /usr/share/chasen/
chasenrc  chasenrc-utf8  dic/

$ ls -l /usr/share/chasen/dic/naist-jdic
-rw-r--r-- 1 root root    19357 Nov  8  2008 cforms.cha
-rw-r--r-- 1 root root 10435920 Sep  7 16:43 chadic.da
-rw-r--r-- 1 root root 11308128 Sep  7 16:43 chadic.dat
-rw-r--r-- 1 root root  7022308 Sep  7 16:43 chadic.lex
-rw-r--r-- 1 root root  2465536 Nov  8  2008 connect.cha
-rw-r--r-- 1 root root     1829 Nov  8  2008 ctypes.cha
-rw-r--r-- 1 root root     1321 Nov  8  2008 grammar.cha
-rw-r--r-- 1 root root    97595 Sep  7 16:43 matrix.cha
-rw-r--r-- 1 root root 25866969 Nov  8  2008 naist-jdic.dic
-rw-r--r-- 1 root root   155438 Sep  7 16:43 table.cha
-rw-r--r-- 1 root root       31 Nov  8  2008 version.cha

$ ls -l /usr/share/chasen/dic/naist-jdic-utf8
-rw-r--r-- 1 root root    23182 Sep  7 16:43 cforms.cha
-rw-r--r-- 1 root root 13189176 Sep  7 16:44 chadic.da
-rw-r--r-- 1 root root 14123450 Sep  7 16:44 chadic.dat
-rw-r--r-- 1 root root  7022308 Sep  7 16:44 chadic.lex
-rw-r--r-- 1 root root  3183151 Sep  7 16:43 connect.cha
-rw-r--r-- 1 root root     2478 Sep  7 16:43 ctypes.cha
-rw-r--r-- 1 root root     1623 Sep  7 16:43 grammar.cha
-rw-r--r-- 1 root root    97595 Sep  7 16:44 matrix.cha
-rw-r--r-- 1 root root 34535902 Sep  7 16:43 naist-jdic.dic
-rw-r--r-- 1 root root   201503 Sep  7 16:44 table.cha

さらに、これらは /var/lib/chasen/dic からリンクがはられている。

$ ls -l /var/lib/chasen/dic/naist-jdic
lrwxrwxrwx 1 root root 43 Sep  7 16:43 cforms.cha -> /usr/share/chasen/dic/naist-jdic/cforms.cha
lrwxrwxrwx 1 root root 42 Sep  7 16:43 chadic.da -> /usr/share/chasen/dic/naist-jdic/chadic.da
lrwxrwxrwx 1 root root 43 Sep  7 16:43 chadic.dat -> /usr/share/chasen/dic/naist-jdic/chadic.dat
lrwxrwxrwx 1 root root 43 Sep  7 16:43 chadic.lex -> /usr/share/chasen/dic/naist-jdic/chadic.lex
lrwxrwxrwx 1 root root 44 Sep  7 16:43 connect.cha -> /usr/share/chasen/dic/naist-jdic/connect.cha
lrwxrwxrwx 1 root root 43 Sep  7 16:43 ctypes.cha -> /usr/share/chasen/dic/naist-jdic/ctypes.cha
lrwxrwxrwx 1 root root 44 Sep  7 16:43 grammar.cha -> /usr/share/chasen/dic/naist-jdic/grammar.cha
lrwxrwxrwx 1 root root 43 Sep  7 16:43 matrix.cha -> /usr/share/chasen/dic/naist-jdic/matrix.cha
lrwxrwxrwx 1 root root 47 Sep  7 16:43 naist-jdic.dic -> /usr/share/chasen/dic/naist-jdic/naist-jdic.dic
lrwxrwxrwx 1 root root 42 Sep  7 16:43 table.cha -> /usr/share/chasen/dic/naist-jdic/table.cha
lrwxrwxrwx 1 root root 44 Sep  7 16:43 version.cha -> /usr/share/chasen/dic/naist-jdic/version.cha

$ ls -l /var/lib/chasen/dic/naist-jdic-utf8/
lrwxrwxrwx 1 root root 48 Sep  7 16:44 cforms.cha -> /usr/share/chasen/dic/naist-jdic-utf8/cforms.cha
lrwxrwxrwx 1 root root 47 Sep  7 16:44 chadic.da -> /usr/share/chasen/dic/naist-jdic-utf8/chadic.da
lrwxrwxrwx 1 root root 48 Sep  7 16:44 chadic.dat -> /usr/share/chasen/dic/naist-jdic-utf8/chadic.dat
lrwxrwxrwx 1 root root 48 Sep  7 16:44 chadic.lex -> /usr/share/chasen/dic/naist-jdic-utf8/chadic.lex
lrwxrwxrwx 1 root root 49 Sep  7 16:44 connect.cha -> /usr/share/chasen/dic/naist-jdic-utf8/connect.cha
lrwxrwxrwx 1 root root 48 Sep  7 16:44 ctypes.cha -> /usr/share/chasen/dic/naist-jdic-utf8/ctypes.cha
lrwxrwxrwx 1 root root 49 Sep  7 16:44 grammar.cha -> /usr/share/chasen/dic/naist-jdic-utf8/grammar.cha
lrwxrwxrwx 1 root root 48 Sep  7 16:44 matrix.cha -> /usr/share/chasen/dic/naist-jdic-utf8/matrix.cha
lrwxrwxrwx 1 root root 52 Sep  7 16:44 naist-jdic.dic -> /usr/share/chasen/dic/naist-jdic-utf8/naist-jdic.dic
lrwxrwxrwx 1 root root 47 Sep  7 16:44 table.cha -> /usr/share/chasen/dic/naist-jdic-utf8/table.cha

unidic をデフォルトの configure で入れた状態だとこうなる。

$ ls /var/lib/chasen/dic
debian/  naist-jdic/  naist-jdic-utf8/
$ ls -1 /var/lib/chasen/dic/debian/unidic/
cforms.cha
chadic.da
chadic.dat
chadic.lex
chasenrc
chasenrc_chaone
ctypes.cha
grammar.cha
matrix.cha
table.cha

naist-jdic の動作確認

$ LANG=ja_JP.utf-8 ; echo "今日はいい天気です。" | nkf -W | chasen
chasen: /var/lib/chasen/dic/debian/grammar.cha: No such file or directory

chasenrc の GRAMMER の値と辞書のある場所を対応させる必要がある。

chasen -h で確認すると、以下のとおり。

    -r rc-file     use rc-file as a chasenrc file other than the default
    -R             with -D, do not read chasenrc file, without -D, read the
                   default chasenrc file `/etc/chasenrc'
$ ls -l /etc/chasenrc
lrwxrwxrwx 1 root root 26 2009-09-07 16:43 /etc/chasenrc -> /etc/alternatives/chasenrc
$ ls -l /etc/alternatives/chasenrc 
lrwxrwxrwx 1 root root 31 2009-09-07 16:44 /etc/alternatives/chasenrc -> /usr/share/chasen/chasenrc-utf8
$ ls -l /usr/share/chasen/chasenrc-utf8 
-rw-r--r-- 1 root root 2317 2009-09-07 16:43 /usr/share/chasen/chasenrc-utf8

utf8 版の設定がデフォルト。

/usr/share/chasen/chasenrc-utf8 によると

(GRAMMAR  /var/lib/chasen/dic/debian)

なので上記のエラーになってしまう。

kterm で euc-jp 文字列のテスト。

_text というファイル名で解析対象のテキスト(EUC-JP)を与える。

/usr/share/chasen/chasenrc をコピーして修正した naist-jdic-chasenrc を作成する。

$ cat _text
今日はいい天気です。

$ grep GRAMMAR naist-jdic-chasenrc
;(GRAMMAR  /var/lib/chasen/dic/debian)
(GRAMMAR  /var/lib/chasen/dic/naist-jdic)

$ cat _text | chasen -ie -r naist-jdic-chasenrc
今日    キョウ  今日    名詞-副詞可能
は      ハ      は      助詞-係助詞
いい    イイ    いう    動詞-自立       五段・ワ行促音便        連用形
天気    テンキ  天気    名詞-一般
です    デス    です    助動詞  特殊・デス      基本形
。      。      。      記号-句点
EOS

「端末」(UTF-8) で同じようにテスト。 /usr/share/chasen/chasenrc-utf8 をコピーして修正した naist-jdic-chasenrc-utf8 を作成する。

$ cat _text_utf8 
今日はいい天気です。

$ grep GRAMMAR naist-jdic-chasenrc-utf8
(GRAMMAR  /var/lib/chasen/dic/naist-jdic-utf8)

$ cat _text_utf8 | chasen -iw -r naist-jdic-chasenrc-utf8
今日	キョウ	今日	名詞-副詞可能		
は	ハ	は	助詞-係助詞		
いい	イイ	いう	動詞-自立	五段・ワ行促音便	連用形
天気	テンキ	天気	名詞-一般		
です	デス	です	助動詞	特殊・デス	基本形
。	。	。	記号-句点		
EOS

unidic の動作確認

$ cp /var/lib/chasen/dic/debian/unidic/chasenrc unidic-chasenrc

下記のように修正

$ grep GRAMMAR unidic-chasenrc
(GRAMMAR /var/lib/chasen/dic/debian/unidic/)

$ cat _text_utf8 | chasen -iw -r unidic-chasenrc
今日	キョー	名詞-普通名詞-副詞可能			
lForm="キョウ" lemma="今日" orthBase="今日" pronBase="キョー" 
kanaBase="キョウ" formBase="キョウ" goshu="和" aType="1" aConType="C3"
は	ワ	助詞-係助詞			
lForm="ハ" lemma="は" orthBase="は" pronBase="ワ" kanaBase="ハ" 
formBase="ハ" goshu="和" aConType="動詞%F2@0,名詞%F1,形容詞%F2@-1"
いい	イー	形容詞-非自立可能	形容詞	連体形-一般	
lForm="ヨイ" lemma="良い" orthBase="いい" pronBase="イー" kanaBase="イイ" 
formBase="イイ" goshu="和" aType="1" aConType="C3"
天気	テンキ	名詞-普通名詞-一般			
lForm="テンキ" lemma="天気" orthBase="天気" pronBase="テンキ" 
kanaBase="テンキ" formBase="テンキ" goshu="漢" aType="1" aConType="C1"
です	デス	助動詞	助動詞-デス	終止形-一般	
lForm="デス" lemma="です" orthBase="です" pronBase="デス" 
kanaBase="デス" formBase="デス" goshu="和" aConType="形容詞%F2@-1,動詞%F2@0,名詞%F2@1"
。		補助記号-句点			
lForm="" lemma="。" orthBase="。" pronBase="" kanaBase="" formBase="" goshu="記号"
EOS

実行結果は1行が長いので改行を入れてある。

chaone モードの動作確認

GalateaTalk で unidic を利用する場合は、chaone 入力形式に合わせる必要がある。 chasenrc_chaone を使うことでこれが可能になる。

chasenrc_chaone はなぜか正しく GRAMMAR が指定されていた。

$ cat _text_utf8 | chasen -iw -r /var/lib/chasen/dic/debian/unidic/chasenrc_chaone 
<cha:W1 orth="今日" kana="{キョウ/コンニチ}" pron="{キョー/コンニチ}" 
pos="名詞-普通名詞-副詞可能" lForm="{キョウ/コンニチ}" lemma="今日" 
orthBase="今日" pronBase="{キョー/コンニチ}" kanaBase="{キョウ/コンニチ}" 
formBase="{キョウ/コンニチ}" goshu="{和/漢}" aType="1" aConType="{C3/C1}">今日</cha:W1>
<cha:W1 orth="は" kana="ハ" pron="ワ" pos="助詞-係助詞" lForm="ハ" 
lemma="は" orthBase="は" pronBase="ワ" kanaBase="ハ" formBase="ハ" 
goshu="和" aConType="動詞%F2@0,名詞%F1,形容詞%F2@-1">は</cha:W1>
<cha:W1 orth="いい" kana="イイ" pron="イー" pos="形容詞-非自立可能" 
cType="形容詞" cForm="連体形-一般" lForm="ヨイ" lemma="良い" 
orthBase="いい" pronBase="イー" kanaBase="イイ" formBase="イイ" 
goshu="和" aType="1" aConType="C3">いい</cha:W1>
<cha:W1 orth="天気" kana="テンキ" pron="テンキ" 
pos="名詞-普通名詞-一般" lForm="テンキ" lemma="天気" orthBase="天気" 
pronBase="テンキ" kanaBase="テンキ" formBase="テンキ" goshu="漢" 
aType="1" aConType="C1">天気</cha:W1>
<cha:W1 orth="です" kana="デス" pron="デス" pos="助動詞" cType="助動詞-デス" 
cForm="終止形-一般" lForm="デス" lemma="です" orthBase="です" pronBase="デス" 
kanaBase="デス" formBase="デス" goshu="和" 
aConType="形容詞%F2@-1,動詞%F2@0,名詞%F2@1">です</cha:W1>
<cha:W1 orth="。" kana="" pron="" pos="補助記号-句点" lForm="" 
lemma="。" orthBase="。" pronBase="" kanaBase="" formBase="" goshu="記号">。</cha:W1>
chasen.txt · 最終更新: 2009/09/07 00:00 (外部編集)

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki