« 段取り | Main | 語釈を作る »

2016.05.09

切ってつなぐ

テキスト処理で行う構造解析とは、文章を意味の切れ目で区切ることである。しかし色々な事例があるので、どのような箇所を抜き出し(検索)、どのように区切るか(置換)を正確に指示しないと、思わぬところで区切られたり区切りたいものが連続したまま残るという事態が生ずる。

(1)正確な区切りをするときは、次のように予め区切ってはいけないテキスト(文字列)を個別に指定しておいて、そのあとで一括区切り処理を実行するのが普通のやり方である。このやり方には「区切る」ために「区切らない」ものも考えるという、地と図の関係というか裏表の思考法(転記か削除か)が含まれている。

   区切らないものを個別指定
   一括で区切る

(2)さらに一括区切り処理については、検索条件を工夫することで区切る対象を限定することができる。前方一致、前方不一致、後方一致、後方不一致の正規表現を使うのである。これが今までのやり方であった。

   区切らないものを個別指定
   区切る対象を限ってから一括で区切る

(3)しかし、それでもうまくいかないものが出てくる。区切って欲しくないのに区切られるという事例が出るのである。

どうしたら良いのか考えているうちにもう一段、別の次元で裏から考えるということを思いついた。つまりこれまでのやり方は「連続したものを区切る」という発想に基づいている。これによるときには、いかに切るか、いかに切らないかを考えるだけになってしまう。

しかし実は目的を達成する手段はそれだけではない。欲しいテキストとは、「あるところは連続し、あるところは区切られているテキスト」である。連続するテキストを得るためには「連続を残す」だけではなく「連続を作る」という方法もあると気が付いたのである。出発点が連続する文字列であったため、それに囚われて裏(切れている状態を出発点にする)を考えていなかったということになる。

要するに区切ったものをつなげばいいということ。区切りは改行記号を挿入して行っているが、すでに改行したものの中で改行してはいけなかった部分を検索して、そこにある改行記号を削除する工程を加えた。処理の流れは次のようになる。

   連続するものを区切る
    区切らないものを個別指定する (i)
    区切る対象を限定してから一括で区切る (ii)

   区切られているものをつなぐ
    つなぐものを個別指定する (iii)
    つなぐ対象を限定してから一括でつなぐ (iv)

最後の (iv) は (ii) の逆操作なので条件を相当厳密に指定する必要があり、まだ手をつけていない。取り敢えず (iii) の論理を加えた構造解析辞書を運用するようにしたが、前よりも区切りの精度が向上し、今のところはこれで十分である。

学んだのは、連続したものを切るばかりではない、切れているものをつなぐという発想も持ち合わせていないといけないということ。頭の柔らかさを試される経験であった。


|

« 段取り | 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/63602184

Listed below are links to weblogs that reference 切ってつなぐ:

« 段取り | Main | 語釈を作る »