隣り合う情報を使った手法 複数のスタイルに対応できないか 前回述べた方法は段落はすべて共通のスタイルであることを仮定している。しかしながら複数のスタイルが混在する場合が存在しないわけではないのでどうにか対応出来ないか…。 前回確認したデータからは以下のことがわかる。 段落境界で値の変動がある 同一段落内で"行送り"はほぼ変わらない 同一段落内で値がほぼ変わらないのは同一スタイルであるためである。したがって、複数スタイルが存在する場合にあっても同一段落内で値が変わらなければ、その変動から段落境界は見つけ出せそうという感触はある。 必須行数のはなし はい、OK。じゃあ、上から順に走査していって変動があったところを段落境界とすればいいね。 となれば良いがやってみると意外な形で失敗する。 段落境界の前後で行送りがほぼ等しいなど、段落境界をまたぐところで誤判定が生じることがある。 それというのも段落境界を行の空間的距離から推測するにあたって少なくとも3行は必要となる。1個だけだとそれが大きめの行送りかあるいは段落境界なのか比較できる対象がなく判定ができないためである。 順に捜査していく場合、基準となる行はもっともらしいものである必要があるのだが、段落境界毎にそれはリセットされる必要があり、どうにかしてもっともらしい基準を見つける方法が必要になる。 どうやって基準を見つけるか 対象をデータテキストに限った方法ではあるが、隣接行の行送りの値が近い場合にそれを基準とするというアイデアがある。要するに段落境界付近の値は使用せずに段落の中心から先頭・末尾に向かって走査していくような方法である。 ただし、依然として段落境界でもっともらしい基準として誤って採用されることがあるという問題は残っている。 どう実現するか 色々やってみてそれらしく動いたのは以下のような手順である。 もっともらしい基準値を見つける もっともらしい基準から段落境界に出くわすまで下に走査する もっともらしい基準から段落境界に出くわすまで上に走査する 統計量を基準値として段落検出する そう、最終的に統計量を使ってしまっているのである。全くもって遺憾。 それというのももっともらしい基準値を見つけられない場合などもあるため、最終的には何か理由をつけて判定する必要があるのである。 また、2と3の走査ではそれ...