制約付き解析 (部分解析)

$Id: partial.html 65 2007-01-30 00:52:53Z taku-ku $;

概要

入力文の一部の形態素情報が既知である、あるいは境界がわかっているときに、 それを満たすように解析する機能です。

たとえば、「にわにはにわにわとりがいる。」という文に対して、 「はにわ」の部分が名詞であるとか、「にわとり」の部分が一つの形態素 であるというように指定した上で解析することができます。このとき、 制約に反する4文字目の「は」が単独で形態素となったり、「にわとり」が「にわ」と「とり」 に分割されるような解析候補は排除されます。

入力フォーマット

MeCab のデフォルト出力と同じようなフォーマットで制約を記述します。 mecab は -p (--partial) オプション付きで起動する必要があります。

各行は以下のいずれかに該当します.

素性パターンの記述方法

CSV で記述します。* をワイルドカードとして使うことができます。

品詞の部分に * が指定されると、その単語で切り出し、品詞は適当に最適なものを付与します。

にわ    *
に      *
はにわ  *
にわとり        *
が      *
いる    *
EOS

品詞そのものを指定することができます。( "*" はワイルドカード)

にわ  *
に      助詞
はにわ  *
にわとり        *
が      接続詞
いる    *,非自立
EOS

品詞のカラムを指定しないと、そのトークンは文断片となり、制約がないときと同じように解析されます。ただし、文断片をまたぐような形態素は出力されません。

にわ
には
にわ
にわとり
がいる
EOS

制限

制約の限界

制約付きの解析は、いったんラティスを作って、制約を満たさないものを枝刈りするという方法で実装されています。 もし制約を満たすものが一つもない場合、ダミーの形態素を作成します。ただしダミーの形態素の品詞情報(素性)は 制約の情報がそのまま使われます。以下の例では「こんな長い入力を一形態素にしてみる」を 一形態素と指定していますが、ラティス上に存在しないので、制約の品詞をそのまま出力しています。

% mecab -p
こんな長い入力を一形態素にしてみる      名詞
EOS
こんな長い入力を一形態素にしてみる      名詞
EOS

文字列の長さ

制約解析を実装するために、制約の両端に半角スペースを挿入した入力文を内部で作成して解析しています。 そのため文字列の位置がずれます。


$Id: partial.html 65 2007-01-30 00:52:53Z taku-ku $;