« 同じ文字列の扱いを変える | Main | 並列の意識 政策文書を例に »

2017.01.20

動詞活用の正規表現

動詞をその活用形まで含めて検索するにはどうするか。一番簡単なのは、それぞれを順番に検索することである。まずはそれが出発点。しかしもう少し頭を使ったやり方はないものか。そこで正規表現を使うことになる。

ではどのような正規表現を書けば良いのか。例えばlisten、listens、listened、listeningをすべて検索することを考える。

これを観察すると、原形、原形+s、原形+ed、原形+ingというパターンになっている。しかしこれらは並列の関係ではない。まずは言葉で表現してみると、これは「原形だけ、または原形+s もしく原形+edもしく原形+ing」という形である。それを論理式で書けば
  (原形だけ) or ((原形+s) or (原形+ed) or (原形+ing))
となっていて、入れ子構造であることがわかる。ここまで分解すれば正規表現を書きやすくなる。

活用を含めlistenをすべてを検索する正規表現は秀丸なら
   listen(s|ed|ing)?
となる。listenを検索するが、そのあとにs、ed、ingのいずれかが付いても付かなくてもいい、という意味である。

次にcombineという動詞はどうか。combine、combines、combined、combiningであるが、前のeatとは活用パターンが違う。活用するときは末尾のeを外してから活用形を付ける。

原形を出発点にするとeの処理のため正規表現が複雑になり、2段階処理をせざるを得なくなる。そこでcombinまでを仮の原形と考えて正規表現を作る。

論理式を書けば
  (仮の原形) and ((e) or (es) or (ed) or (ing))
であり、正規表現は
  combin(e|es|ed|ing)
となる。これは上記の例と違い正規表現の末尾に?が付かないことに注意。仮の原形のあとには括弧の中のいずれかの要素が必ず続かねばならないからである。

さて、このような考え方を何に使うのか。活用する動詞の一括検索の主たる用途は、英文の構造解析である。動詞の前後で区切り、その動作を明らかにすると共にあとに続く目的語との区別をするときに役立つ。

上記2つのパターンを構造解析辞書に組み込むだけで、かなりの比率で動詞を検索できる。残りは手作業でやっても十分である。構造解析についてはこちら(原文の構造解析1)。

今はさまざまな形態素解析エンジンがあるが、それを使うよりもまず自分に必要な部品だけ作ってみて、それを少しずつ改善していく方が、仕事がやりやすくなるように思える。

|

« 同じ文字列の扱いを変える | Main | 並列の意識 政策文書を例に »

Comments

Post a comment



(Not displayed with comment.)


Comments are moderated, and will not appear on this weblog until the author has approved them.



TrackBack

TrackBack URL for this entry:
http://app.cocolog-nifty.com/t/trackback/20048/64788514

Listed below are links to weblogs that reference 動詞活用の正規表現:

« 同じ文字列の扱いを変える | Main | 並列の意識 政策文書を例に »