N個の形態素mからなる辞書(ipadicなど)Dから表記揺れ辞書Γ
Dを出力するプログラム。
\[ D=\left \{ m_1,m_2,...,m_N \right \} \]
\[ \Gamma_D=\left \{ S_1,S_2,...,S_L \right \} \]
形態素mは表層形σ,読みρ,その他の素性θから構成される。
\[ m=<\sigma ,\rho ,\theta_1, \theta_2, ...,\theta_k > \hspace{3em} k \geq 1 \]
表記揺れ辞書Γ
Dの要素である表記揺れグループSは次の条件を満たす表層形σの集合である。
\[ S=\left \{ \sigma | \forall x \exists y.f\left ( m_x,m_y \right ), x\neq y \wedge \sigma \in L\left ( M \right )\right \} \]
\begin{align*}
f\left ( m_x,m_y \right )=\left\{\begin{matrix} \rho_x=\rho_y & \\ \theta_{x_i} = \theta_{y_i} & 1 \leq i\leq k \end{matrix}\right.
\end{align*}
σはオートマトンMによって受理される。Mは状態の有限集合Q,入力記号の有限集合Σ,動作関数δ,初期状態q,受理状態Fの5字組で表される。
\[ M=<Q,\Sigma,\delta,q,F> \]
前述のSの条件の前半部分である条件Cが成り立つσのうち、字種が漢字である文字の数がもっとも大きく、漢字文字の数が同じものが複数ある場合は文字列長がもっとも大きいσを選びオートマトンMを構成する。
\[ C=\left \{ \sigma | \forall x \exists y.f\left ( m_x,m_y \right ), x\neq y \right \} \]
そして条件Cが成り立つ他のσがL(M)に含まれていればSの要素とする。Mの構成要件のうち、状態の有限集合Q,入力記号の有限集合Σ,受理状態Fは文字aを漢字、文字bを非漢字としてそれぞれ次のようである。
\[ Q=\left \{ q,r_1,...,r_h \right \} \]
\[ \Sigma =\left \{ a_1,...,a_h,b_1,...,b_l \right \} \]
\[ F=\left \{ r_h \right \} \]
動作関数δは初期状態q=r
0から開始して漢字文字a
jを受け取るたびに対応する状態r
jに遷移する関数となる。
\[ \delta\left ( r_{j-1}, a_j\right )=r_j, \hspace{3em} 1\leq j\leq h, \hspace{1.5em} r_0=q \]
非漢字bを受け取った場合は状態遷移をしない。
\[ \delta\left ( r_j, b\right )=r_j \]
ただし、オートマトンMを構成する際に選択したσに含まれる非漢字の集合{b
1, b
2, ...,b
l}以外の文字は受理できず、その出現順も逆転してはならない。
プロパティの一覧
プロパティ名 | 説明 | デフォルト値/必須 |
morpho.in.dir | テキストのMeCab辞書ファイル(*.csv)が置かれているディレクトリ名 | 必須 |
morpho.in.encoding | テキストのMeCab辞書ファイル(*.csv)の文字コード | 必須 |
morpho.in.pattern.accept | 処理対象のMeCab辞書ファイル名パターン | 必須。csv$など |
morpho.in.pattern.deny | 処理対象からはずすMeCab辞書ファイル名パターン | (なし) |
morpho.reading.col | 読みが記載されているカラム番号(0始まり;表層形のカラム番号は0) | 必須 |
morpho.f.cols | 比較対象となるその他の素性のカラム番号(0始まり)。複数ある場合はカンマ区切り | (なし) |
morpho.f.whitelist | ${morpho.f.cols}で指定されたカラム番号のカラム値のうち有効にしたいカラム値を列挙したファイル名を指定する。
このファイルはUTF-8で保存されているものとする。指定されない場合はすべてのカラム値が対象となる | (なし) |
morpho.out.dir | 出力ディレクトリ名 | 指定されていないときは標準出力に出力。指定されている場合は、
Dictionary.getSynonymsFileName(String) の引数に${morpho.out.dir}を渡して得られるファイルに出力 |
morpho.expand.reading | 読み仮名展開をする(true)しない(false)。読み仮名展開はひらがなおよびカタカナ両方が行われる | false |