%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%                                       
%%%  形態素解析システム 茶筌 使用説明書
%%%                                       
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%%%  This file is for ASCII jLaTeX.  %%%
%%%  Use `j-article' for NTT jLaTeX. %%%

\documentstyle[ascmac,titlepage]{jarticle}

\topmargin -10mm
\textheight 240mm
\oddsidemargin -5mm
\textwidth 165mm

%\input a4

\title{\vspace{-3cm}
%{\small \sf \hfill NAIST Technical Report\\
%\vspace{-5mm}\hfill NAIST-IS-TR99012}\\
\vspace{3cm}
\bf 形態素解析システム\\
  『茶筌』version 2.2.7 \\
  使用説明書}
\author{松本裕治 ~ 北内啓 ~ 山下達雄 ~ 平野善隆 ~ 松田寛 ~ 高岡一馬 ~ 浅原正幸}
\date{平成 13 年 6 月\\
\rule{0mm}{110mm}Copyright \copyright\ 2001 奈良先端科学技術大学院大学 松本研究室} 

\def\|{\verb|}
\def\*{\verb**}

\begin{document}

\maketitle

\thispagestyle{empty}

\vspace*{\fill}

\begin{footnotesize}
\noindent
Morphological Analysis System ChaSen 2.2.7 Users Manual

\noindent
Yuji Matsumoto, Akira Kitauchi, Tatsuo Yamashita, Yoshitaka Hirano,
Hiroshi Matsuda, Kazuma Takaoka and Masayuki Asahara

\noindent
Copyright (c) 2001 Nara Institute of Science and Technology
All rights reserved.

\vspace{.5em}
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
are met:
\begin{enumerate}
 \item Redistributions of source code must retain the above copyright
   notice, this list of conditions and the following disclaimer.
 \item Redistributions in binary form must reproduce the above copyright
   notice, this list of conditions and the following disclaimer in the
   documentation and/or other materials provided with the distribution.
 \item  All advertising materials mentioning features or use of this software
   must display the following acknowledgement:
     This product includes software developed by Nara Institute of 
     Science and Technology.
 \item The name Nara Institute of Science and Technology may not be used to
   endorse or promote products derived from this software without specific
   prior written permission.
\end{enumerate}
   
\vspace{.5em}
THIS SOFTWARE IS PROVIDED BY Nara Institute of Science and Technology 
``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A 
PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE Nara Institute
of Science and Technology BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 
PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF 
LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING 
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

\end{footnotesize}

\vspace*{1em}

\begin{small}
\noindent
\begin{tabular}{ll}
JUMAN\\
~ ~ version 0.6 & 17 February 1992\\
~ ~ version 0.8 & 14 April 1992\\
~ ~ version 1.0 & 25 February 1993\\
~ ~ version 2.0 & 11 July 1994\\
ChaSen\\
% ~ ~ version 1.0b1 & 14 October 1996\\
% ~ ~ version 1.0b2 & 15 October 1996\\
% ~ ~ version 1.0b3 & 15 October 1996\\
% ~ ~ version 1.0b4 & 17 October 1996\\
% ~ ~ version 1.0b5 & 15 November 1996\\
% ~ ~ version 1.0b6 & 16 January 1997\\
% ~ ~ version 1.0b7 & 21 January 1997\\
~ ~ version 1.0 & 19 February 1997\\
~ ~ version 1.5 & 7 July 1997\\
%~ ~ version 1.51 & 29 July 1997\\
%~ ~ version 2.0b6 & 20 April 1999\\
~ ~ version 2.0 & 15 December 1999\\
%~ ~ version 2.01 & 20 December 1999\\
%~ ~ version 2.02 & 29 December 1999\\
~ ~ version 2.2.0 & 06 December 2000\\
~ ~ version 2.2.1 & 20 December 2000\\
~ ~ version 2.2.2 & 22 February 2001\\
~ ~ version 2.2.3 & 24 February 2001\\
~ ~ version 2.2.4 & 18 March 2001\\
~ ~ version 2.2.5 & 24 March 2001\\
~ ~ version 2.2.6 & 17 April 2001\\
~ ~ version 2.2.7 & 22 June 2001\\
ChaSen for Windows\\
~ ~ version 1.0 & 29 March 1997\\
~ ~ version 2.0 & 15 December 1999\\
NAIST Technical Report\\
~ ~ 1st edition(NAIST-IS-TR99008) & 20 April 1999\\
~ ~ 2nd edition(NAIST-IS-TR99012) & 15 December 1999\\
\end{tabular}
\end{small}

\clearpage

\pagenumbering{roman}
\tableofcontents

\clearpage
\pagenumbering{arabic}
%----------------------------------------%
%           本文                         %
%----------------------------------------%

\section*{はじめに}

計算機による日本語の解析において，欧米の言語の解析と比べてまず問題になるの
に次の2点があります．一つは形態素解析の問題です．ワードプロセッサの普及など
によって日本語の入力には大きな問題がなくなりましたが，計算機による日本語解
析では，まず入力文内の個々の形態素を認識する必要があります．これには実用に
耐えられるだけの大きな辞書も必要であり，これを如何に整備するかという問題も
同時に存在します．もう一つの問題として，日本語には広く認められ同意を得られ
た文法，ないし，文法用語がないという現実です．学校文法の単語分類および文法
用語は一般には広く知られていますが，研究者の間ではあまり評判がよくありませ
んし，計算機向きではありません．

日本語の解析に真っ先に必要な形態素解析システムは，多くの研究グループによっ
て既に開発され技術的な問題が洗い出されているにも係わらず，共通のツールとし
て世の中に流布しているものはありません．計算機可読な日本語辞書についても同
様です． 

本システムは，計算機による日本語の解析の研究を目指す多くの研究者に共通に使
える形態素解析ツールを提供するために開発されました．その際，上の二つ目の問
題を考慮し，使用者によって文法の定義，単語間の接続関係の定義などを容易に変
更できるように配慮しました．

大学で小人数で開発したシステムであり，色々な点で不完全な部分があると思いま
す．可能な限り順次改良を重ねる予定です．皆様の寛容な利用をお願いいたします． 


本茶筌システムの原形は，京都大学長尾研究室および奈良先端科学技術大学院大学
松本研究室において開発された日本語形態素解析システムJUMAN(version2.0)です．
JUMANは，京都大学および奈良先端科学技術大学院大学のスタッフおよび多くの学生
の協力を得て作成したものです．また，辞書に関しては，Wnnかな漢字変換システム
の辞書，および，ICOTから公開された日本語辞書を利用し，独自に修正を加えまし
た．JUMAN 2.0をともに開発した京都大学の黒橋禎夫氏，現在キャノン勤務の妙木
裕氏には特に感謝いたします．

JUMAN開発のきっかけを作って下さった京都大学長尾真先生に感謝します．JUMAN開
発に関して様々な形で協力していただいた奈良先端大宇津呂武仁氏に感謝します．
奈良先端大の知念賢一氏には，茶筌システムの開発に関して多くの助言をいただき
ました．
奈良先端大在学時の今一修氏，今村友明氏には茶筌1.0および茶筌2.0β
版の開発の際に種々の助
力をいただきました．両氏および茶筌の開発に協力いただいた松本研究室のメ
ンバーに深く感謝します．
奈良先端大の鹿野清宏教授を代表とする「日本語ディクテーショ
ン基本ソフトウェアの開発」グループの方々には，IPA品詞体系辞書の大幅な
整備を行っていただきました．特に，御尽力いただいた電子技術総合研究所の
伊藤克亘氏，ASTEMの山田篤氏に感謝いたします．話し言葉の解析を中
心にして辞書の整備に様々な助言をいただいた奈良先端大の伝康晴氏に
感謝します．
奈良先端大の高林哲氏，工藤拓氏には autoconf，automake 化および RPM パッケージ作成に多くの助言をいただきました．
また，一人一人の名を挙げることはできませんが，JUMANシステムおよび
茶筌システムに対して多くのコメントと質問をいただいた利用者の方々に感謝します．

\begin{flushright}
平成12年12月06日
\end{flushright}

\vfill

\noindent
本システムに関するお問い合わせは以下にお願いします．

\noindent
〒630-0101\\
奈良県生駒市高山町8916-5\\
奈良先端科学技術大学院大学\\
情報科学研究科\ 松本研究室\\
茶筌管理開発担当者集団\\
Tel: (0743)72-5240,\ Fax: (0743)72-5249\\
E-mail: {\sf chasen@is.aist-nara.ac.jp}

~\\
\noindent
また以下のURLにて最新情報を提供しています．

\noindent
URL: {\sf http://chasen.aist-nara.ac.jp/}

\clearpage

%----------------------------------------%
\section{茶筌の使用法}

\subsection{インストール手順}
\label{app:inst}

\begin{enumerate}
\item `{\tt configure}' を実行する．

\begin{screen}\begin{verbatim}
% ./configure
\end{verbatim}\end{screen}

コンパイラやコンパイルオプションは自動的に設定される．
これらを手動で変更したい場合は以下のように実行する．

\begin{screen}\begin{verbatim}
% env CC=cc CFLAGS="-O2 -Wall" ./configure
\end{verbatim}\end{screen}

{\tt configure} の詳しい使用法については {\tt INSTALL},
{\tt INSTALL-ja} あるいは `{\tt ./configure --help}'
の出力を参照のこと．

\item `{\tt make}' を実行する．

\begin{screen}\begin{verbatim}
% make
\end{verbatim}\end{screen}

茶筌本体の実行ファイルは {\tt chasen/chasen} に，
ライブラリは {\tt lib/} に，辞書作成のプログラムは
{\tt mkchadic/} 以下に作成される．
OS 標準の make を使うとコンパイルに失敗することがある．
その場合は GNU make を使用する．

\item `{\tt make install}' を実行する．

\begin{screen}\begin{verbatim}
% make install
\end{verbatim}\end{screen}

バージョン2.1からインストール先ディレクトリが変更されており，
デフォルトでは以下の場所にインストールされる．
{\tt PREFIX} は {\tt ./configure --prefix}で指定することができる
(デフォルトは {\tt /usr/local})．


\begin{tabular}{ll}
 {\tt PREFIX/bin/chasen}           & 茶筌の実行ファイル \\
 {\tt PREFIX/libexec/chasen/}      & 辞書作成プログラム \\
 {\tt PREFIX/lib/libchasen.*}      & 茶筌ライブラリ \\
 {\tt PREFIX/include/chasen.h}     & ヘッダファイル \\
 {\tt PREFIX/share/chasen/doc/}    & マニュアル \\
 {\tt PREFIX/share/chasen/prolog/} & Prolog 用インタフェース \\
\end{tabular}

ただし，以下のものはインストールされない．

\begin{tabular}{ll}
 {\tt chasen/chasen.el}     	      & Emacs 用インタフェース \\
 {\tt perl/ChaSen.pm}       	      & Perl モジュール \\
\end{tabular}

なお，バージョン2.02以前の茶筌を削除する場合は以下のコマンドを
実行すればよい．

\begin{screen}\begin{verbatim}
# rm -rf PREFIX/lib/chasen
\end{verbatim}\end{screen}

\end{enumerate}

Windows では，Cygwin 環境があれば同様の方法でコンパイルできる．

バージョン2.2.2 以降，{\tt chasenrc} はシステムインストール時にはインス
トールされなくなった．辞書インストール時に、{\tt PREFIX/etc} 以下に {\tt
chasenrc} を置く必要がある．

バージョン2.2.4 以降， 辞書(ipadic-2.4.4 以降)インストール時に
{\tt chasen-config}から {\tt chasenrc}のパスを受け取り，
{\tt PREFIX/etc} 以下に {\tt chasenrc} がない場合に自動的に
コピーされる．既に{\tt PREFIX/etc} 以下に {\tt chasenrc} が
ある場合コピーされないため管理者が手で変更する必要がある．

\subsection{実行方法}\label{exec}

システムの実行ファイルは，
`{\tt make install}' によって
{\tt PREFIX/bin/chasen} などにインストールされる．

\begin{itemize}
\item 形態素解析の実行

茶筌は，以下のように {\tt chasen} コマンドを実行することにより起動される．

\begin{screen}\begin{verbatim}
% chasen [オプション] [ファイル名...]
\end{verbatim}\end{screen}

標準入力，または引数で指定されたファイルから一行ごとに文を読み込んで
形態素解析処理を行なう．
% 文字コードとしては日本語EUCあるいはJIS(ISO-2022-JP)を受け付ける．

\item 処理内容

コスト最小(それぞれの形態素の区切りで最小コストとの差が許容されるコスト幅
以内)の解を求め，結果をオプションに従って表示する．
% 出力時の文字コードは日本語EUCである．
各オプションの意味は次節にまとめる．

\item 使用例

入力ファイルを引数として指定できる．以下に使用例を示す．

\begin{screen}
\begin{tabular}{llllll}
\multicolumn{6}{l}{\tt \% cat temp}\\
\multicolumn{6}{l}{私は昨日学校へ行きました．}\\
\multicolumn{6}{l}{\tt \% chasen temp}\\
私      & ワタクシ    & 私   & 名詞-代名詞-一般\\
は      & ハ          & は   & 助詞-係助詞\\
昨日    & キノウ      & 昨日 & 名詞-副詞可能\\
学校    & ガッコウ    & 学校 & 名詞-一般\\
へ      & ヘ          & へ   & 助詞-格助詞-一般\\
行き    & イキ        & 行く & 動詞-自立 & 五段・カ行促音便 & 連用形\\
まし    & マシ        & ます & 助動詞 & 特殊・マス & 連用形\\
た      & タ          & た   & 助動詞 & 特殊・タ & 基本形\\
．      & ．          & ．   & 記号-句点\\
{\tt EOS}\\
\end{tabular}
\end{screen}

\end{itemize}

\subsection{実行時のオプション}\label{option}

形態素解析の実行については，いくつかのオプションが用意されている．
以下にそれをまとめる．
{\tt -r} など引数をともなうオプションでは，オプションと引数の間には
空白があってもなくてもかまわない．

\begin{itemize}
\item 茶筌の起動についてのオプション
  \begin{quote}
  \begin{tabular}{ll}
  {\tt -s} & 茶筌サーバの起動\\
  {\tt -P port} & 茶筌サーバのポート番号の指定\\
  & ({\tt -s} オプションとともに使用，デフォルト値は 31000)\\
  {\tt -D host[:port]} & 茶筌サーバに接続\\
  {\tt -a} & 環境変数 {\tt CHASENSERVER} があってもスタンドアロンで実行
  \end{tabular}
  \end{quote}
\item 解が曖昧性を含む場合の表示方法(曖昧性がない場合はどの方法も同じ表示
  となる)
  \begin{quote}
  \begin{tabular}{ll}
  {\tt -b} & 後方最長一致の解を一つだけ表示する(デフォルト)\\
  {\tt -m} & 曖昧性のある部分だけ，複数の形態素を表示する\\
  {\tt -p} & 曖昧性の組合せを展開し，すべての解を個別に表示する
  \end{tabular}
  \end{quote}
\item 各形態素の表示方法
  \begin{quote}
  \begin{tabular}{ll}
  {\tt -f} & カラムを整えて表示(デフォルト)\\
  {\tt -e} & 完全な形態素情報を文字で表示\\
  {\tt -c} & 完全な形態素情報をコードで表示\\
  {\tt -d} & 各形態素をPrologの複合項で表現し，それらをリストにしたも
  のを出力\\
  {\tt -v} & 美茶のための詳細表示\\
  {\tt -F format} & 形態素を {\tt format} で指定された形式で出力\\
  {\tt -Fh } & {\tt -F} オプションの出力フォーマットのヘルプを表示
  \end{tabular}
  \end{quote}
\item その他
  \begin{quote}
  \begin{tabular}{ll}
  {\tt -j} & 句点あるいは空行を文の区切りとして解析\\
  {\tt -o file} & 解析結果出力ファイルを指定\\
  {\tt -w width} & コスト幅を指定\\
  {\tt -C} & コマンドインタプリタを使用\\
  {\tt -r rc\_file} & {\tt rc\_file} を {\tt chasenrc}ファイルとして使用\\
  {\tt -R} &
\begin{minipage}[t]{24zw}
 クライアントモード({\tt -D})のときは {\tt chasenrc} ファイルを読み込ま
 ない，スタンドアロンのときはデフォルトのchasenrcファイル({\tt
 PREFIX/etc/chasenrc})を読み込む 
\end{minipage}
\\
  {\tt -L lang} & 言語を指定\\
  {\tt -lp} & 品詞番号と品詞名のリストを表示\\
  {\tt -lt} & 活用型番号と活用型名のリストを表示\\
  {\tt -lf} & 活用型番号，活用形番号と活用形名のリストを表示\\
  {\tt -h} & ヘルプメッセージを出力\\
  {\tt -V} & 茶筌のバージョンを出力
  \end{tabular}
  \end{quote}
\end{itemize}

\paragraph{{\tt -j}オプションについて} ~

茶筌では通常，改行をもって一つの入力文字列の終了とする．そのため，
文の途中で改行が挿入されているファイルを解析した場合，正しい結果が
得られなくなることが多い．

そのようなときは {\tt -j} オプションをつけると，句読点など(デフォルトで
は「．。！？」の4文字)あるいは空行を文の区切りとして解析を行うようになる．

また，
%茶筌1.5以降では
 chasenrc ファイルの「区切り文字」の項目を
指定することにより，{\tt -j} オプションをつけた時の文の区切り文字
を設定することができる．

\subsection{茶筌サーバとクライアントの使用法}

%茶筌1.5以降では，
クライアントから茶筌サーバに接続して形態素
解析を行うことができる．茶筌サーバを利用するには，まず，
以下のように入力してサーバを起動する．

\begin{screen}\begin{verbatim}
% chasen -s
\end{verbatim}\end{screen}

次に {\tt -D} オプションをつけて茶筌を実行すると，クライアントが起動し
サーバに接続して形態素解析を行う．ここで，{\tt server} は茶筌サーバを
立ち上げたマシンのホスト名である．

\begin{screen}\begin{verbatim}
% chasen -Dserver filename
\end{verbatim}\end{screen}

茶筌サーバでは，デフォルトでポート番号 31000 を使う．このポート番号を
変更するには，{\tt -P} オプションをつけて茶筌サーバを起動する．

\begin{screen}\begin{verbatim}
% chasen -s -P31234
\end{verbatim}\end{screen}

また，クライアントの起動時には {\tt -D} オプションで
サーバ名の後ろに `:'(コロン)をつけ，ポート番号を指定すればよい．

\begin{screen}\begin{verbatim}
% chasen -Dserver:31234 filename
\end{verbatim}\end{screen}

また，以下のように環境変数 {\tt CHASENSERVER} を設定することにより，
{\tt -D} オプションをつけなくても茶筌のクライアントが起動されるように
なる．

\begin{screen}\begin{verbatim}
% setenv CHASENSERVER server:31234
\end{verbatim}\end{screen}

逆に，環境変数 {\tt CHASENSERVER} を設定している場合でもスタンドアロン
で茶筌を実行したいときは，{\tt -a} オプションをつけて起動すればよい．

茶筌サーバを起動すると，スタンドアロンの時と同じように {\tt chasenrc} 
ファイルを読み込み，辞書や文法ファイルが読み込まれる．クライアント側で
はサーバが読み込んだ辞書と文法ファイルが用いられる．つまり，クライアン
トの起動時には {\tt chasenrc} ファイルの「文法ファイル」「PATDIC」
の項目は無視され，それ以外の項目だけが有効となる．もし，辞書や文法ファイ
ルだけでなく他の項目についてもサーバと同じ設定でよければ，クライアント
の起動時に {\tt -R} オプションをつけることで {\tt chasenrc} ファイルを
読み込まずに解析を行わせることができる．

% 茶筌サーバのプロトコルについては付録 \ref{protocol} に概要の説明がある．

\subsection{出力フォーマット}\label{format}

{\tt -F}オプションや，{\tt chasenrc}ファイルの「出力フォーマット」で
出力フォーマットを指定することにより，解析結果の出力形式を変えることが
できる．

出力フォーマットの文字列の末尾に `\|\n|' があれば，各形態素情報の
表示ごとに改行を行い，文末の次に `{\tt EOS}' の1行を出力する．末尾に 
`\|\n|' がなければ，1文中の形態素情報を1行で出力し，行末に改行を
表示する．

また，出力フォーマットに `{\tt -f}', `{\tt -e}', `{\tt -c}' を
指定すると，それぞれ {\tt -f}, {\tt -e}, {\tt -c} と同じ出力形式
になる．

出力フォーマットの使用例をいくつかあげる．

\begin{itemize}
\item デフォルト({\tt -f} オプション)と同様の出力

\*"%m\t%y\t%M\t%U(%P-)\t%T \t%F \n"* または \*"-f"*

\item 見出し，読み，品詞をタブで区切って表示

\*"%m\t%y\t%P-\n"*

\item 見出し語のみ

\*"%m\n"*

\item 分かち書き(見出し語を空白で区切って表示)

\*"%m "*

\item 漢字かな変換

\*"%y"*

\item ルビつき表示．``漢字(かな)'' の形式で表示する．

\*"%r ()"*

\end{itemize}

出力フォーマットの変換文字の一覧を以下に示す．

\begin{tabular}{l|l} \hline \hline
変換文字 & 機能 \\ \hline
\|%m|       & 見出し(出現形)\\
\|%M|       & 見出し(基本形)\\
\|%y, %y1|  & 読みの第一候補(出現形)(※1)\\
\|%Y, %Y1|  & 読みの第一候補(基本形)(※1)\\
\|%y0|      & 読み全体(出現形)\\
\|%Y0|      & 読み全体(基本形)\\
\|%a|       & 発音の第一候補(出現形)\\
\|%A|       & 発音の第一候補(基本形)\\
\|%a0|      & 発音全体(出現形)\\
\|%A0|      & 発音全体(基本形)\\
\|%rABC|    & ルビつきの見出し(``\|A漢字BかなC|'' と表示)(※2)\\
\|%i, %i1|  & 付加情報の第一候補\\
\|%i0|      & 付加情報全体\\
\|%Ic|      & 付加情報(空文字列か ``\|NIL|'' なら文字\|c|)(※2)\\
\|%Pc|      & 各階層の品詞を文字\|c|で区切った文字列\\
\|%Pnc|     & 1〜\|n|(\|n|:1〜9)階層目までの品詞を文字\|c|で区切った文字列\\
\|%h|       & 品詞の番号\\
\|%H|       & 品詞文字列\\
\|%Hn|      & \|n|(\|n|:1〜9)階層目の品詞(なければ最も深い階層)\\
\|%b|       & 0(旧版との互換性のみ)\\
\|%BB|      & 品詞細分類(なければ品詞)\\
\|%Bc|      & 品詞細分類(なければ文字\|c|)(※2)\\
\|%t|       & 活用型の番号\\
\|%Tc|      & 活用型(なければ文字\|c|)(※2)\\
\|%f|       & 活用形の番号\\
\|%Fc|      & 活用形(なければ文字\|c|)(※2)\\
\|%c|       & 形態素のコスト\\
\|%S|       & 解析文全体\\
\|%pb|      & 最適パスであれば ``\|*|'', そうでなければ ``\* *''\\
\|%pi|      & パスの番号\\
\|%ps|      & パスの形態素の開始位置\\
\|%pe|      & パスの形態素の終了位置$+1$\\
\|%pc|      & パスのコスト\\
\|%ppiC|    & 前に接続するパスの番号を文字\|C|で区切り列挙\\
\|%ppcC|    & 前に接続するパスのコストを文字\|C|で区切り列挙\\
\|%?B/STR1/STR2/| & 品詞細分類があれば\|STR1|，なければ\|STR2|(※3)\\
\|%?I/STR1/STR2/| & 付加情報が ``NIL'' でも ``''(空文字列)でもなければ\|STR1|，そうでなければ\|STR2|(※3)\\
\|%?T/STR1/STR2/| & 活用があれば\|STR1|，なければ\|STR2|(※3)\\
\|%?F/STR1/STR2/| & \|%?T/STR1/STR2/| と同じ \\
\|%?U/STR1/STR2/| & 未知語なら\|STR1\|，そうでなければ\|STR2|(※3)\\
\|%U/STR/|        & 未知語なら"未知語"，そうでなければ\|STR|(\|%?U/未知語/STR/|と同じ)(※3)\\
\|%%|       & \|%| そのもの\\ \hline
\end{tabular}

\begin{tabular}{l|l} \hline \hline
変換文字 & 機能 \\ \hline
\|.|        & フィールド幅の指定\\
\|-|        & フィールド幅の指定\\
\|1-9|      & フィールド幅の指定\\
\|\n|       & 改行文字\\
\|\t|       & タブ\\
\|\\|       & \|\| そのもの\\
\|\'|       & \|'| そのもの\\
\|\"|       & \|"| そのもの\\ \hline
\end{tabular}

\begin{description}
\item[※1]  ipadic では，「行く(いく/ゆく)」のように
形態素が複数の読みを持つ場合，その読みを「\{イ/ユ\}ク」のように，
半角のブレースとスラッシュを使って表している．
通常の読みの出力(出力フォーマットの \|%y|)では，その第一候補である
「イク」が出力され，\|%y0| を使うと読み全体である「\{イ/ユ\}ク」
が出力される．
% \item[※1] 茶筌付属の ipadic では，「行く(いく/ゆく)」のように
% 形態素が複数の読みを持つ場合，その読みを「\{イ/ユ\}ク」のように，
% 半角のブレースとスラッシュを使って表している．
% 通常の読みの出力(出力フォーマットの \|%y|)では，その第一候補である
% 「イク」が出力され，\|%y0| を使うと読み全体である「\{イ/ユ\}ク」
% が出力される．

\item[※2] \|A|,\|B|,\|C|,\|c| が空白文字の時は何も表示しない．
\item[※3] `/'には任意の文字が使える．また，括弧``\|(){}[]<>|''を
用いることもできる．以下に例をあげる．

\begin{itemize}
\item \|%?T#STR1#STR2#|
\item \|%?B(STR1)(STR2)|
\item \|%?U{STR1}/STR2/|
\item \|%U[STR]|
\end{itemize}

\end{description}

%%%%%%%%%%%
\subsection{コマンドインタプリタ}
\label{sec:コマンドインタプリタ}

{\tt -C} オプションにより茶筌実行時に以下のコマンドを
対話的に与えることができる．


\vspace{1em}
\begin{tabular}{l|l} \hline \hline
コマンド & 機能 \\ \hline
\*#V*        & {\tt -V} オプションと同じ．\\
\*#F [文字列]* & {\tt -F} オプションと同じ．ただし，
フォーマット文字列をクォートする必要はない．\\
\*#w [数字]* & コスト幅の変更．例： \*#w 500*\\
\*#i*        & 様々な情報の出力．\\
\*#e [単語]* & 辞書に単語が入っているか調べる．例： \*#e 茶筌* \\
\*#q*        & 茶筌の終了．\\
\*#a*        & 辞書への単語の追加．\\
\*#f*        & 単語を追加する辞書の指定．\\
\*#s*        & 単語追加後のパトリシア木のセーブ．\\ \hline
\end{tabular}

\paragraph{注意}

\begin{itemize}
\item コマンドインタプリタは，PATDIC にのみ機能する．
	日本語版辞書(ipadic)以外には作用しない．
\item {\tt \#a}, {\tt \#f}, {\tt \#s} は，茶筌の解析結果を視覚化する
プログラム「美茶」用のコマンドなので，無闇に実行してはならない．
\item コマンドと引数の間は必ずスペース一文字でなければならない．
\item ipadic に対して {\tt \#e} を利用する際、活用形の全展開を行なえないバグが報告されている。 
\end{itemize}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\section{chasenrc ファイル}
\label{s:chasenrc}

chasenrc ファイルは形態素解析プログラムに必要な様々な選択肢を定義する
ために用いられる．これらの定義は通常，
{\tt PREFIX/etc/chasenrc} に記述されるが，
利用者のホームディレクトリの
`{\tt .chasenrc}' というファイルに記述することもできる．
起動時オプションなどに
よって chasenrc ファイルを指定することもできる．
具体的には次のような優先順位で chasenrc ファイルが読み込まれる．

\begin{enumerate}
\item 起動時に {\tt -r} オプションで指定されたファイル．
\item 環境変数 {\tt CHASENRC} で指定されたファイル．
\item 利用者のホームディレクトリにある {\tt .chasen2rc}．
\item 利用者のホームディレクトリにある {\tt .chasenrc}．
\item {\tt PREFIX/etc/chasenrc}(デフォルトではインストールされない)．

\end{enumerate}

% オプションファイルの記述例を付録\ref{app:chasenrc}に示す．

設定項目一覧を以下に示す．
このうち，「{\tt PATDIC}」または「{\tt SUFDIC}」，
「未知語品詞」，「品詞コスト」は必ず指定しなければならない．

\begin{enumerate}
\item {\bf 文法ファイルのディレクトリ}

文法ファイル({\tt grammar.cha, ctypes.cha, cforms.cha, connect.cha})
が存在するディレクトリを指定する．

\begin{screen}\begin{verbatim}
(文法ファイル /usr/local/share/chasen/ipadic/dic)
\end{verbatim}\end{screen}

「文法ファイル」は省略することができ，その場合 chasenrc ファイルがある
ディレクトリと同じディレクトリを指定したとみなされる．
茶筌に付属の辞書 ipadic1.01 以降のchasenrcファイルでは
「文法ファイル」は省略されている．

\item {\bf システム辞書}

システム辞書({\tt chadic.int})とインデックスファイル({\tt chadic.pat}
または{\tt chadic.ary})を，
ファイル名から末尾の拡張子を除いたものを記述することによって指定する．
複数組みの辞書を指定することもできる．
また，相対パス，つまり ``/'' で始まらないパスを記述すると，
文法ファイルと同じディレクトリを指定したとみなされる．
例えば以下のように指定する．

\begin{screen}\begin{verbatim}
(PATDIC chadic
        /home/rikyu/mydic/chadic)
\end{verbatim}\end{screen}

上の記述では，以下の二組の辞書ファイルが読み込まれる．

\begin{enumerate}
\item 文法ファイルと同じディレクトリにある {\tt chadic.int}, {\tt chadic.pat}
\item {\tt /home/rikyu/mydic/} にある {\tt chadic.int}, {\tt chadic.pat}
\end{enumerate}

辞書引きに際しては，これらの辞書の両方が用いられる
\footnote{
  一組の辞書には同一の形態素の登録は行なわれないが，複数の辞書に同じ形態
  素が登録されている場合はあり得る．
  このような場合は，同じ形態素が複数得られることになる．
  }．

辞書引きにSUFARY \footnote{SUFARY は文字列検索パッケージである．
詳しくは {\tt http://cl.aist-nara.ac.jp/lab/nlt/ss/} を参照．}
を使う場合は「{\tt SUFDIC}」を指定する．

\begin{screen}\begin{verbatim}
(SUFDIC chadic)
\end{verbatim}\end{screen}

上の記述では，文法ファイルと同じディレクトリにある
{\tt chadic.int}, {\tt chadic.ary} が読み込まれる．

{\tt chadic.ary} はデフォルトでは作成されない．
辞書のあるディレクトリで `{\tt make ary}' を実行すると作成される．

\begin{enumerate}
\item {\tt /home/rikyu/mydic/} にある {\tt chadic.int}, {\tt chadic.pat}
\end{enumerate}

SUFDIC は PATDIC に比べ，最初にインデックスファイルを読み込む時間は
短いが，検索速度自体は遅いという特徴がある．
解析時間を短くするには，解析文の量が少ないときは SUFDIC，
多いときは PATDIC を使うとよい．

使用する辞書の最大数は，PATDIC, SUFDIC とも5個に設定されている．
これを変更したい場合は， {\tt chasen/pat.h} の {\tt MAX\_DIC\_NUMBER}
の値を変更してコンパイルしなおせばよい．

\item {\bf 未知語の品詞}

未知語が発見された時に，その語をどのような品詞として連接規則を適用するか
を指示する．複数の品詞を指定した時は，それぞれの品詞について連接規則が
適用される．

\begin{screen}\begin{verbatim}
(未知語品詞 (名詞 サ変接続))              ; 1個の品詞を指定
(未知語品詞 (名詞 サ変接続) (名詞 一般))  ; 複数の品詞を指定
\end{verbatim}\end{screen}

\item {\bf 品詞のコスト}

% \ref{kaiseki}章で述べるように，
形態素解析プログラムでは，解析結果の優先情報をコストとして計算している．
解析に曖昧性がある場合は，コストの総計が低いものを優先することになっている．
「品詞コスト」では，各品詞のコストの倍率と，
「未知語」についてのコストを定義する．
コストは正の整数値をとる．

\begin{screen}\begin{verbatim}
(品詞コスト
        ((*)                1)
        ((未知語)           500)
        ((名詞)             2)
        ((名詞 固有名詞)    3)
)
\end{verbatim}\end{screen}

同じ品詞に対してコストの定義が複数回指定されている場合は，
後のものが優先される．
上の記述では，「名詞」の形態素のコストは基本的には 2 倍になるが，
「{\tt 名詞-固有名詞}」以下に細分類される名詞だけは形態素のコストが
3 倍になる．
また，先頭の `{\tt (*)}' の指定により，ここで明示的に定義されていない
形態素のコストはすべて 1 倍(そのままのコスト値)となる．
未知語の形態素のコスト値はすべて500になる．

\item {\bf 連接コストと形態素コストの相対的な重みの定義}

形態素解析におけるコストの計算は形態素のコストと連接のコストの総計として
計算される．
これら二種類のコストに異なる重みを掛けたい場合には，それを指定することが
できる．
解析結果のコストはそれぞれのコストにここで指定された重みを乗じた値の総計
として計算される．
省略した場合の重みは 1 である．

\begin{screen}\begin{verbatim}
(連接コスト重み 1)      ; デフォルト値
(形態素コスト重み 1)    ; デフォルト値
\end{verbatim}\end{screen}

\item {\bf コスト幅}

形態素解析の過程において，常にコストが最低の結果を出すのではなく，
ある程度のコスト幅を許容したい場合がある．
この許容幅を指定することができる．
コスト幅におさまるすべての解を出力するには
{\tt -m} オプションや{\tt -p} オプションを使う．

\begin{screen}\begin{verbatim}
(コスト幅 0)   ; デフォルト値
\end{verbatim}\end{screen}

コスト幅は{\tt -w}オプションでも指定することができる．
その場合，{\tt -w}オプションで指定したものが優先される．
% コスト計算については，\ref{kaiseki}章を参照のこと．

\item {\bf 未定義連接コストの定義}

連接規則ファイルに連接規則が定義されていない形態素間の連接コストを指定する．
未定義連接コストを設定しないか，あるいは 0 を指定すると，連接規則が定
義されていない形態素どうしは決して連接しないという意味になる．
デフォルトは0．

\begin{screen}\begin{verbatim}
(未定義連接コスト 500)
\end{verbatim}\end{screen}

\item {\bf 出力フォーマット}

出力フォーマットを指定することにより，解析結果の出力形式を変えることが
できる．

\begin{screen}\begin{verbatim}
(出力フォーマット "%m\t%y\t%P-\n")
\end{verbatim}\end{screen}

出力フォーマットは{\tt -F}オプションでも指定することができる．
その場合，{\tt -F}オプションで指定したものが優先される．
詳しくは \ref{format} 節を参照のこと．

\item {\bf BOS文字列}

解析結果の文頭に表示する文字列を指定する．``{\tt \%S}''を使うと
解析文全体を表示できる．デフォルトは空文字列(何も表示しない)．

\begin{screen}\begin{verbatim}
(BOS文字列 "解析文: [%S]\n")
\end{verbatim}\end{screen}

\item {\bf EOS文字列}

解析結果の文末に表示する文字列を指定する．``{\tt \%S}''を使うと
解析文全体を表示できる．デフォルトは ``\|EOS\n|''．

\begin{screen}\begin{verbatim}
(EOS文字列 "文末\n")
\end{verbatim}\end{screen}

\item {\bf 空白品詞}

茶筌は，半角の空白文字(ASCIIコード32)とタブ(ASCIIコード9)を空白と
みなし，これらを無視して解析する．通常は，解析結果に空白の情報を
出力しないが，「空白品詞」を設定することにより，空白についての情報
を出力するようになる．
例えば，以下のように設定すると，空白を「{\tt 記号-空白}」として出力する．

\begin{screen}\begin{verbatim}
(空白品詞 (記号 空白))
\end{verbatim}\end{screen}

なお，出力フォーマットを ``\|%m|'' に設定して，空白品詞を
指定する(品詞は何でもよい)と，解析文と全く同じ出力が得られる
ことになる．

\item {\bf 注釈}

ある文字列で始まりある文字列で終わる文字列を注釈のように
扱い，その文字列の部分を無視して解析させることができる．
解析結果には，その文字列が一つの形態素として出力される．

chasenrc ファイルには，開始文字列，終了文字列からなるリストと
出力時の品詞名あるいはフォーマット文字列を記述する．
終了文字列は省略することができ，その場合，開始文字列と一致する文字列
自身を注釈として扱う．また，出力時の品詞名あるいはフォーマット文字列
を省略するとその形態素についての情報を全く出力しなくなる．

\begin{screen}\begin{verbatim}
(注釈 (("<" ">") "%m\n")
      (("「") (記号 一般))
      (("」") (記号 一般))
      (("\"" "\"") (名詞 引用文字列))
      (("［" "］"))
      )
\end{verbatim}\end{screen}

例えば，上のように記述すると，以下のように解析，出力される．

\begin{itemize}
\item {\tt <img src="cha.gif">} のように ``\|<|'' で始まり
``\|>|'' で終わる文字列をそのまま出力する．
\item ``「'' あるいは ``」'' を「{\tt 記号-一般}」として出力する．
\item ``{\tt "hello(again)"}'' のようにダブルクォーテーションで
囲まれた文字列を「{\tt 名詞-引用文字列}」として出力する．
\item ``{\tt ［ちゃせん］}'' のように ``［'' で始まり ``］'' で
終わる文字列を無視して解析し，解析結果にはその文字列の情報を
出力しない．
\end{itemize}

\item {\bf 連結品詞}

ある品詞の形態素が連続して出現したときに，一つの形態素として連結して出
力させるときに使用する．

\begin{screen}\begin{verbatim}
(連結品詞 ((複合名詞) (名詞) (接頭詞 名詞接続) (接頭詞 数接続))
	  ((記号)))
\end{verbatim}\end{screen}

例えば，上の記述では以下のように品詞を連結する．

\begin{enumerate}
\item 連続した「名詞」「{\tt 接頭詞-名詞接続}」
「{\tt 接頭詞-数接続}」を連結し「複合名詞」として表示する．
なお，「複合名詞」は品詞定義ファイル {\tt grammar.cha} に記述しておく
必要がある．
\item 連続した「記号」を連結し，「記号」として表示する．
\end{enumerate}

\item {\bf 複合語出力}

形態素辞書ファイル({\tt .dic})内で定義した複合語について，
複合語全体の形態素情報を出力する(``複合語'')か，
複合語を構成する各単語の形態素情報を出力する(``構成語'')かを
選択することができる．デフォルトは``複合語''．

\begin{screen}\begin{verbatim}
(複合語出力 "複合語")
\end{verbatim}\end{screen}

なお，複合語出力については {\tt -Oc}, {\tt -Os} オプションによっても
制御することができる．

\item {\bf 区切り文字}

{\tt -j} オプションをつけた時の文の区切り文字を並べ，一つの文字列にし
たものを指定する(\ref{option}節参照)．区切り文字には全角文字，半角文字
の両方を使用することができる．例えば

\begin{screen}\begin{verbatim}
(区切り文字 "。．、，！？.,!? ")
\end{verbatim}\end{screen}

と定義すると，全角文字の「。．、，！？」のいずれか，または半角文字の
``\*.,!? *'' (空白文字が入っていることに注意)のいずれかの文字が文の
区切りとなる．

\end{enumerate}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\section{茶筌ライブラリ}

茶筌ライブラリ {\tt libchasen.a}, {\tt libchasen.so}
を利用することで，
茶筌のモジュールを他のプログラムに組み込むことができる．
ヘッダファイルとして {\tt chasen.h} をインクルードする．
利用できるライブラリ関数・変数は以下の通りである．

\begin{description}

\item[{\tt \#include <chasen.h>}] ~

\item[{\tt int chasen\_getopt\_argv(char **argv, FILE *fp);}] ~

\item[{\tt extern int Cha\_optind;}] ~

茶筌にオプションを渡す．もし茶筌の初期化が行われていなければ，
初期化を行ってからオプションの設定を行う．
デフォルトのオプションのままでよければ，この関数を呼び出さずに
以下の解析関数を呼び出してもかまわない．

茶筌ライブラリではスタンドアロンによる解析のみができる．
{\tt -s},{\tt -D} などサーバやクライアントに関するオプションは利用できない．

{\tt argv} にはコマンドラインオプションとして {\tt NULL} で終わる文字列の
配列を指定する．ただし {\tt argv[0]} はプログラムのファイル名である．
オプション指定に誤りがあった場合，ファイル・ポインタ{\tt fp} にエラー
メッセージを出力する．
{\tt fp} が {\tt NULL} のときは何も出力しない．

オプション指定に誤りがなければ 0 を，誤りがあれば 1 を返す．

外部変数 {\tt Cha\_optind} には処理したオプション({\tt argv[0]}を含む)
の数が格納される．

以下に使用例を示す．{\tt chawan} というプログラムにおいて，
`{\tt -r /home/rikyu/chasenrc.proj -j}' というオプションを茶筌に渡している．
この関数の実行後 {\tt Cha\_optind} には 4 が代入される．

\begin{screen}\begin{verbatim}
char *option[] = {"chawan", "-r", "/home/rikyu/.chasenrc.proj", "-j", NULL};
chasen_getopt_argv(option, stderr);
\end{verbatim}\end{screen}

\item[{\tt \#include <chasen.h>}] ~

\item[{\tt int chasen\_fparse(FILE *fp\_in, *fp\_out);}] ~

\item[{\tt int chasen\_sparse(char *str\_in, FILE *fp\_out);}] ~

\item[{\tt char *chasen\_fparse\_tostr(FILE *fp\_in);}] ~

\item[{\tt char *chasen\_sparse\_tostr(char *str\_in);}] ~

スタンドアロンでの形態素解析を行う．
もし茶筌の初期化が行われていなければ，初期化を行ってから形態素解析を行う．
入力と出力がファイルであるか文字列であるかによって，4つの関数がある．

{\tt chasen\_fparse()}, {\tt chasen\_fparse\_tostr()} はファイル・ポインタ 
{\tt fp\_in} から読み込んだ文字列を解析する．
文字コードとしては日本語EUCあるいはJIS(ISO-2022-JP)を受け付ける．
{\tt chasen\_getopt\_argv()} で {\tt -j} オプションを指定したときは，
句点などを文の区切りとして解析を行う．

{\tt chasen\_sparse()}, {\tt chasen\_sparse\_tostr()}
は 文字列{\tt str\_in} を解析する．
文字コードとしては日本語EUCあるいはJIS(ISO-2022-JP)を受け付ける．

{\tt chasen\_fparse()}, {\tt chasen\_sparse()} は解析結果をファイル・ポインタ
{\tt fp\_out} に出力する．
コマンドモードで `{\tt \#q}' を実行して茶筌を終了したときは 1 を，
それ以外のときは 0 を返す．

{\tt chasen\_fparse\_tostr()}, {\tt chasen\_sparse\_tostr()} は解析結果を
茶筌内部で確保したメモリ領域に格納し，そのポインタを返す．
この領域は，次に {\tt chasen\_fparse\_tostr()}, {\tt chasen\_sparse\_tostr()}
を呼び出すまで有効である．
コマンドモードで `{\tt \#q}' を実行して茶筌を終了したときは NULL を返す．

\end{description}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\section{他のシステムからの利用}

\subsection{Prolog からの使用}

\begin{itemize}

\item 基本的構成

茶筌システムが形態素解析を行なった結果を，SICStus Prologがパイプを介し
て受けとるという構成になっている．

\item 動作環境

茶筌が仮定するProlog処理系は，SICStus Prolog Release 3 である．
日本語を用いるためには，環境変数{\tt SP\_CTYPE}の値を{\tt euc}に設定する必
要がある．
具体的には，例えば次の一行を利用者の{\tt .login}ファイルなどに含めればよい．

\begin{screen}\begin{verbatim}
setenv SP_CTYPE euc
\end{verbatim}\end{screen}

\item 起動方法

Prolog を起動し，`{\tt prolog/chasen\_user.pl}'をconsultもしくは
compileする．

`{\tt prolog/chasen\_user.pl}'はユーザ設定用ファイルなので，ユーザ
が各自のディレクトリにコピーして各自の設定を行なうことを前提としている．

解析は，以下の要領でファイル単位で行なうことができる．

\begin{screen}\begin{verbatim}
| ?- cha.
Input file name?  入力ファイル名.
Output file name? 出力ファイル名.
\end{verbatim}\end{screen}

入力ファイル名，出力ファイル名を `user' とすると，端末からの入出力が可能
である．

\begin{screen}\begin{verbatim}
| ?- chatty.
\end{verbatim}\end{screen}

とすれば，標準入力から入力し，標準出力へ結果を出力することができる．

\item 処理内容

Prolog側からの一回の呼び出しによって，茶筌システムとのパイプがオープンされ
る．
呼び出しが終了するとパイプが閉じられる．
Prolog側は，茶筌システムが形態素解析を行なった結果を受けとるだけである．
一つの形態素について，Prolog側が受けとるデータは，

\begin{quote}
morph([\ 識別子(ID),開始位置(From),終了位置(To),コスト(Cost),見出し語(Md),
読み(Ym),基本形(Kh),品詞名(Hn0),品詞細分類(Hn),活用型名(KT),活用形名(KF),意
味情報(Imi),形態素コスト(MrphCost),前節形態素との接続コストのリスト(PreCCL), 
前接形態素の識別子のリスト(PreIDL)]) 
\end{quote}

という複合項である．
また，茶筌システムからデータを受けとる処理は，
`{\tt prolog/chasen.pl}'中の{\tt cha/3}において，
{\tt read(+}{\sl Str,-MorphList}{\tt )}によって上述の複合項のリスト
{\sl MorphList}を読み込むという形で行なわれている．

Prolog版の出力オプションは，
\begin{quote}
  {\tt e} : 完全な形態素情報を文字で表示(デフォルト)\\
  {\tt f} : カラムを整えて表示\\
  {\tt s} : 見出しと品詞名を表示
\end{quote}
であり，述語 {\tt cha\_print\_form/1}により変更することができる．
\end{itemize}

\subsection{Perl からの使用}

{\tt perl/ChaSen.pm} を使うことにより，perl から茶筌を利用できる．
インストール方法，使用方法については perl/README を参照のこと．

\subsection{Emacs からの使用}

茶筌クライアントの Emacs Lisp 版インタフェース {\tt chasen.el}
を使うことにより，Emacs 上で形態素解析を行うことができる．
{\tt chasen.el} を利用するには，{\tt chasen/chasen.el}
をインストール(例えば {\tt /usr/local/share/emacs/site-lisp/} にコピー)し，
{\tt .emacs} 中で茶筌サーバのホスト名とポート番号の設定，
autoload の指定を行う．

\begin{screen}\begin{verbatim}
(setq chasen-server-host "kyusu")
(setq chasen-server-port 31234)    ; デフォルトは 31000

(autoload 'chasen-region "chasen" "ChaSen client" t)
(autoload 'chasen-line "chasen" "ChaSen client" t)
(autoload 'chasen-highlight-class-region "chasen" "ChaSen client" t)
(autoload 'chasen-property-class-region "chasen" "ChaSen client" t)
\end{verbatim}\end{screen}

それぞれの関数の詳細については {\tt chasen.el} の先頭のコメント部分を
参照のこと．

%----------------------------------------%
%           参考文献                     %
%----------------------------------------%
\begin{thebibliography}{88)}
\addcontentsline{toc}{section}{参考文献}

\bibitem{Masuoka92}
  \newblock {益岡隆志，田窪行則：}
  \newblock {『基礎日本語文法 --改訂版--』}
  \newblock {くろしお出版，}
  \newblock {1992.}

\bibitem{Myoki91}
  \newblock {妙木裕，松本裕治，長尾眞：}
  \newblock {「汎用日本語辞書および形態素解析システム」}
  \newblock {情報処理学会第42回全国大会予稿集，}
  \newblock {1991.}

\bibitem{man:juman}
  \newblock {松本裕治，黒橋禎夫，宇津呂武仁，妙木裕，長尾真：}
  \newblock {日本語形態素解析システムJUMAN 使用説明書 version 2.0，}
  \newblock {NAIST Technical Report, NAIST-IS-TR94025，}
  \newblock {1994.}

\bibitem{Kitauchi}
  \newblock {北内 啓，山下 達雄，松本 裕治：}
  \newblock {「日本語形態素解析システムへの可変長連接規則の実装」,}
  \newblock {言語処理学会第三回年次大会論文集, pp.437-440,}
  \newblock {1997.}

\bibitem{IPAreport}
  \newblock {研究開発用知的資源タグ付きテキストコーパス報告書 平成９年度,}
  \newblock {テキストサブワーキンググループ,\
技術研究組合 新情報処理開発機構,}
  \newblock {1998.}

\end{thebibliography}

%----------------------------------------%
\clearpage

\appendix
\noindent
{\LARGE\bf 付録}
\addcontentsline{toc}{section}{付録}

\section{著作権および使用条件について}

茶筌システムは，広く自然言語処理研究に資するため無償のソフトウェアとし
て開発されたものである．
茶筌の著作権は，奈良先端科学技術大学院大学情報科学研究科自然言語処理学講
座(松本研究室)が保持する．本ソフトウェアの使用，改変，再配布については，
特に制限を課すことはしないが，再配布については，次の事項を条件とする．

\begin{itemize}
\item 本ソフトウェアがその原形あるいは修正された形で再
配布される場合は，再配布されるソフトウェアに茶筌2.2が使用されているこ
とを明記すること．
\item 再配布されるソフトウェアに，著作権に関する本節の記述と使用説明書
の表紙裏のページの著作権に関する但し書きを必ず含むこと．
\end{itemize}

なお，本ソフトウェアの著作権者である奈良先端科学技術大学院大学は，
原形あるいは改変された形で配布された本ソフトウェアに関連して生じる
一切の損失に対して保証の責を負わないこととする．

また、上に述べた著作権は茶筌システム本体についてのものであり、
ipadic をはじめとする他の辞書については、各辞書についての著作権条項があ
るためそちらを参照すること．

\section{更新履歴}


\subsection{茶筌 2.0 から 茶筌 2.2 への拡張点}

\begin{itemize}
\item 辞書とシステムの分離 \\
      他言語の辞書整備により，辞書とシステムを分離した．
      chasenrc は辞書側が持ち、システムインストール時にはインストールさ
      い。辞書インストール時に {\tt PREFIX/etc} 以下に {\tt chasenrc} を
      インストールする必要がある。
\item autoconf, automake, libtool 化 \\
      {\tt ./configure} で，自動的に環境を読み込み設定できるようにした．
      これに伴い，各辞書をコンパイルする際に必要になる情報を出力するプロ
      グラム {\tt chasen-config} を導入した．	
\end{itemize}

\subsection{JUMAN 2.0 から 茶筌 2.0 への拡張点}

茶筌 2.0 では品詞体系や連接規則の機能などを拡張した．
この機能拡張版をv-gram版，従来のバージョンをbi-gram版と呼ぶ．
v-gram版はbi-gram版と文法ファイルの形式が異なっているため，
辞書に互換性がない．ただし，{\tt mkchadic/convdic}を実行することにより，
bi-gram版の辞書をv-gram版の辞書に変換することができる．

{\tt convdic} はbi-gram版の辞書があるディレクトリ上で，
v-gram版の辞書を格納するディレクトリを引数として実行する．
例えば以下のように実行すると，bi-gram版の辞書がある {\tt dic}という
ディレクトリと同じ階層に{\tt dic2}というディレクトリが作成され，
その中にv-gram版の辞書が格納される．
なお，{\tt convdic} 実行後，茶筌に付属の {\tt dic/Makefile} を
v-gram版の辞書があるディレクトリ(下の例では{\tt dic2})にコピーする
必要がある．また，chasenrcファイルも用意する．

\begin{screen}\begin{verbatim}
% cd dic
% ../mkchadic/convdic ../dic2
% cp Makefile ../dic2
\end{verbatim}\end{screen}

茶筌2.0ではデフォルトでv-gram版がコンパイルされる．`{\tt make bigram}'
を実行すればbi-gram版の実行ファイルが作成され，bi-gram版の
辞書を利用することができる．

v-gram版はbi-gram版と比べ，以下のような拡張機能や変更点がある．

\begin{enumerate}
\item 品詞を2階層から多階層に拡張した．
\item 連接規則をbi-gramの固定長からvariable-gram(可変長)に拡張した．
すなわち，連接する2個の単語(あるいは品詞)の連接コストだけではなく，
3個以上の任意の長さの単語(品詞)列に対して単語(品詞)の連接コストを記述
できる．
\item {\tt *.dic} で「発音」という属性を使える．出力フォーマットの
\|%a|, \|%A| で表示できる．
また，{\tt cforms.cha} で発音の語尾を定義できる．
\item {\tt *.dic} で「base」という属性を使える．見出し語の基本形など
を表示する際，活用を持っていればその基本形を，活用がなくbaseを
持っていればbaseを表示する．英語の辞書などで使用する．
\item chasenrc ファイルの「連結品詞」の機能を拡張し，複数の種類の
品詞を別々に連結できるようにした．
\item 空行に対しても``{\tt EOS}''(正確にはBOS文字列とEOS文字列)を
表示する．つまり，``{\tt EOS}''の個数が入力文の行数と一致する．
\item 解析結果のデフォルトの出力形式({\tt -f})で，
見出し語などの直後の区切りがスペースではなくタブになった．
\item 辞書に登録されていない単語の品詞表示を「未定義語」から「未知語」
に変更した．
\item 形態素辞書ファイル {\tt *.dic}で単語のコスト値が省略されている
場合，bi-gram版ではコスト値が10となるのに対し，v-gram版では
{\tt *.dic} 中の「デフォルト品詞コスト」で指定されたコスト値
(指定されていない場合は65535)が用いられる．
\item bi-gram版では形態素コストと連接コストを内部で10倍しているが，
v-gram版ではそのままの値を用いる．また，bi-gram版では形態素コストの
範囲が0〜6553.5(茶筌1.51以前は0〜25.5)であるが，v-gram版では0〜65535である．
\item 連接コスト0を「確率1で連接する」という意味に，
-1を「連接しない」という意味に変更した．
また，連接コストの範囲を -1〜32767 に変更した．
\item 文節区切りの機能を持つ，長さ0の品詞が使える．
品詞定義ファイルで品詞名の後ろに `/' をつけると文節区切りとして機能する．
\end{enumerate}

\subsection{茶筌1.5 から 茶筌 2.0 への拡張点}

ここでは v-gram 版，bi-gram 版に共通する拡張点をあげる．

\begin{enumerate}

\item chasenrc の「文法ファイル」を省略できるようにした．
「PATDIC」「SUFDIC」が '/' で始まっていない場合は，「文法ファイル」
のディレクトリからの相対パスとみなすようにした．
\item 辞書引きに SUFARY を使えるようにすることにより，半角文字も検索できる
  ようにした．
\item SUFARY を使って英語を解析できるようにした．
\item -D なしで -R を指定した場合は Makefile で指定した chasenrc
(/usr/local/share/chasen/dic/chasenrc など)を読み込むようにした．
\item 文頭・文末で出力する文字列を設定できるようにした．
\item 未知語品詞とそのコストを複数指定できるようにした．
\item chasenrc ファイルで「空白品詞」を指定することにより，空白も解析結果に
出力できるようにした．
\item chasenrc ファイルで「注釈」を指定することにより，SGMLタグのような
特定の文字列を空白と同様に無視して解析できるようにした．
\item -lp, -lt, -lf オプションで品詞や活用のリストを表示できるようにした．
\item -o オプションで出力ファイルを指定できるようにした．
\item 出力フォーマット {\tt "\%?T/STR1/STR2/"} を使えるようにした．活用があれば
  {\tt STR1}, なければ {\tt STR2} を出力する．
  そのほかに {\tt \%?I}, {\tt \%?B}, {\tt \%?F}, {\tt \%?U} も使えるようにした．
\item 出力フォーマット {\tt "\%rABC"} を導入し，ルビを表示できるようにした．
\item chasenrc ファイルで「BOS文字列」「EOS文字列」を指定することにより，
  文頭・文末で出力する文字列を設定できるようにした．
\item BOS文字列，EOS文字列，出力フォーマットで，解析文全体を表示する 
{\tt "\%S"} を使えるようにした．
\item 辞書ファイルの形態素コストの範囲を今までの0〜25.5から，
bi-gram版は0〜6553.5に，v-gram版は0〜65535に変更した．
\item 連接ファイルの連接コストの範囲を0〜255から0〜32767に変更した．
\end{enumerate}

\subsection{茶筌1.0 から 茶筌 1.5 への拡張点}

\begin{enumerate}

\item ライブラリ化を行い，茶筌のモジュールを他のプログラムに
簡単に組み込めるようにした．

\item サーバ化を行い，クライアントを用いて他のマシンから解析を
行うことができるようにした．また，クライアントのEmacs Lisp 版
インタフェースを作成した．

\item {\tt -w} オプションでコスト幅を指定できるようにした．

\item {\tt chasenrc} ファイルに「区切り文字」を指定することにより，
jfgets() の区切り文字を設定できるようにした．半角文字を指定することも可能．
また，区切り文字のデフォルトを "．。！？" に変更した．

\item バッファを動的に確保することにより，文字列が長いときでも 
``Too many morphs'' の警告が出ないようにした．

\item 美茶(ViCha)用出力オプション -v を新設した．

\item {\tt -d} オプションと {\tt -b} を同時に指定したときに
{\tt -d} の出力形式で最適解パスだけ表示できるようにした．

\end{enumerate}

\subsection{JUMAN 2.0 から 茶筌 1.0 への拡張点}

\begin{enumerate}
\item 辞書検索の方法を従来のNDBMを用いて疑似的にTRIE構造を実現する方法から， 
 独自開発のパトリシア木を用いたものに変更した．
 解析に必要な辞書のサイズが約4分の1に縮小した．
 また，辞書のコンパイル時間が3〜40分の1になった．

\item 解析システムの見直しを行ない，高速化を図った．
  解析速度が約8〜11倍になった(JUMAN 2.0との比較)．

\item 多くのプラットフォームでインストール可能になるようにコードを書き
  直した．また，GNU Cコンパイラ(gcc)だけでなく OS 付属のCコンパイラなど
  でもコンパイルできるようにした．

\item 日本語EUCだけでなく，JIS(ISO-2022-JP)の文字列も解析できるようにした．

\item 未定義連接コストの導入により，未定義語の出力を減らすことができるようになった．

\item  連結品詞を定義できるようにし，最適パスを出力する時に，その
  品詞の単語を一単語に連結して表示するようにした．

\item 活用語尾の読みを定義できるようにすることにより，「来る」「得る」など
  の読みがひらがなで表示されるようになった．

\item 入力文を改行コードで区切るのではなく，句点により区切るオプション
  ({\tt -j}) を追加した．

\item  {\tt -r} オプションや環境変数 {\tt CHASENRC} で{\tt chasenrc}ファイル
  を指定できるようにした．

\item {\tt -F} オプションや {\tt chasenrc} ファイルの「出力フォーマット」で
  解析結果の出力形式を変更できるようにした．

\item 文法の見直しを行ない，品詞分類「特殊」の下の「括弧」を「括弧開」と「括
  弧閉」に分離した．
  また，同じく「特殊」の下に「空白」を定義した．「空白」は具体的には全角の
  空白を表す． 

\item 助動詞の活用型に「助動詞べきだ型」を追加した．助動詞「べきだ」の活用
  を従来の「ナ形容詞」型から「助動詞べきだ型」に変更した．

\item 辞書登録語について見直し，追加削除等の修正を行なった．

\end{enumerate}

\section{JUMAN3.0 と 茶筌 との関係について}

JUMAN 2.0が1994年7月にリリースされて以降，京都大学長尾研究室と奈良先端大松本
研究室では，それぞれ異なる方向での拡張を試みていました．
京都大学では，従来のbi-gramモデルでは記述できない連接関係を記述するために連
語処理や括弧の透過処理などの機能を追加し，文法ファイル，形態素辞書に大幅な修正
を行なった拡張版を作成していました．
奈良先端大では，今後大量の蓄積が始まると思われる日本語タグ付きコーパスから
bi-gram以上の連接規則(単語レベルや品詞レベルの設定も含む)を自動的に学習する
機能を追加するための拡張と，UNIXのハッシュデータベースNDBMに依存しない辞書
の構築を考えていました．
後者の拡張はUNIX以外のOSでの稼働を要求する声に対応することと辞書のコンパイ
ル時間と検索速度の改善を目指したことによります．
bi-gram以上の連接規則に対する両者の考え方がかなり異なるため，両者の融合は見
合わせることにし，いち早く完成した京都大学の拡張版が1996年6月にJUMAN3.0beta
として公開されました．

奈良先端大で拡張を予定していた機能には下に示すような項目があり，茶筌
1.0を1997年2月に公開し，以後，茶筌1.5, 1.51, 2.0を経て，
茶筌2.2においてそのほとんどが実現されました．

\begin{enumerate}
\item (茶筌1.0) 辞書システムの独自開発(NDBMの棄却,パトリシア木の採用)
\item (茶筌1.0) 解析システムの見直しと高速化
\item (茶筌1.0) 未定義連接コスト，連接品詞，解析結果出力フォーマットの導入
\item (茶筌1.0) JIS文字列の解析
\item (茶筌1.0) 活用語尾の読みの定義
\item (WinCha1.0) Windows への対応
\item (茶筌1.5) ライブラリ化
\item (茶筌1.5) サーバ化
\item (茶筌2.0) 品詞定義の多階層化
\item (茶筌2.0) 接続規則の可変長化
\item (茶筌2.0) 半角文字を含む単語の辞書登録(SUFARYを利用した辞書)
\item (茶筌2.0) 出力フォーマットの拡充
\item 解析済みデータからの可変長接続コストの学習
\end{enumerate}
\end{document}
% Local Variables: 
% mode: latex
% TeX-master: t
% End: 
