Unicode の方向制御文字は思いのほかに厄介かも
ウェブコーパスからテキストを切り出して,分かち書きをして,頻度を求めて,…というような処理を試していたところ,テキストに含まれる表示方向を制御する文字(例えばアラビア語で用いる)のおかげで,出力結果の表示があっち向いたりこっち向いたりする(一部,左右逆になる)ことに気づきました.
- 表示方向の制御文字
- Unicode Character 'LEFT-TO-RIGHT MARK' (U+200E)
- Unicode Character 'RIGHT-TO-LEFT MARK' (U+200F)
- Unicode Character 'LEFT-TO-RIGHT EMBEDDING' (U+202A)
- Unicode Character 'RIGHT-TO-LEFT EMBEDDING' (U+202B)
- Unicode Character 'POP DIRECTIONAL FORMATTING' (U+202C)
- Unicode Character 'LEFT-TO-RIGHT OVERRIDE' (U+202D)
- Unicode Character 'RIGHT-TO-LEFT OVERRIDE' (U+202E)
とりあえず,Unicode 正規化の段階で削除しようと思います.
他にも気づいていない落とし穴がたくさんありそうで怖い….
追記(2010-08-08):LEFT-TO-RIGHT MARK と RIGHT-TO-LEFT MARK を追加しました.