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>