テキストから句読点を削除する方法:消える記号と残る記号
単語の頻度を数える前や、タグを作るとき、句読点だけが違う 2 つの文章を比べるとき、記号を落とすと扱いやすくなります。ただし「句読点」は 1 つの集合ではなく、何を消すかで結果は大きく変わります。
先に記号を落としたい場面
頻度を数えるとき、dog と dog. が別の語として集計されると結果は使えません。記号を削れば同じ語が 1 行にまとまります。タグやキーワード、索引でも同じで、記号付きの表記が複数の項目に分裂し、取り込み後に統合するのが難しくなります。
もう一つは比較です。句読点だけが違うように見える 2 つの文章が、内容として同じか知りたい場合、記号を落として行ごとに比べるほうが、目で差分を探すより確実です。
- 単語の頻度やキーワードを数える前の整理
- タグ、索引、用語集の作成
- 句読点だけが違うかを確認する
- 記号付きの文を語の一覧に整える
何が消えて、何が残るか
削除の範囲は決まった一覧です。英語側は引用符、括弧、カンマ、ピリオド、コロン、疑問符、感嘆符、スラッシュ、下線など、中国語側は読点、句点、セミコロン、コロン、疑問符、感嘆符、省略記号、ダッシュ、湾曲引用符、丸括弧、隅付き括弧などです。英字、数字、スペースは残ります。
覚えておきたい例外が 3 つあります。ハイフンは一覧にないため well-known はそのまま残ります。全角の読点も一覧になく、中国語の文中の読点は残ります。日本語のかぎ括弧「」、二重かぎ括弧『』、書名号《》、全角のパーセントやドル記号も残ります。空白は補われないため、記号の両側に空白がないと語がつながります。
- 英語の記号(下線を含む)と一般的な中国語の記号は削除
- ハイフンは残る(well-known はそのまま)
- 全角読点、かぎ括弧、「」、《》は削除されない
- 空白は補わないため英語がつながることがある
限界と、より徹底した方法
一覧は固定で、自分で足し引きできません。絵文字や数学記号、全角英字は対象外で、中国語の句読点の網羅性も完全ではありません。整理の 1 回目としては使えますが、唯一の工程にはできません。
より徹底するなら Unicode のカテゴリで絞ります。Python では unicodedata.category が P で始まる文字が句読点で、全角半角や各国の記号も含めて処理できます。英数字以外をすべて置換する正規表現も使えますが、ハイフンやアポストロフィといった意味のある記号も失われます。
- 文字の一覧は変更できない
- 中国語の記号は網羅しきれないため手で補う
- 英語がつながった箇所は空白を補う
- 徹底するなら Unicode カテゴリ P で絞る
よくある質問
中国語の読点が削除されないのはなぜですか?
全角の読点が削除の一覧に入っていないためです。ツールが消すのは英語の記号と指定された中国語の記号で、全角読点やかぎ括弧、書名号は含まれません。一緒に消したい場合は、先に半角カンマへ置換してから処理してください。
英語の単語がつながってしまうのはなぜですか?
記号を削除するときに空白を補わないためです。Hello,world は Helloworld になります。削除前に記号を空白へ置換しておくか、削除後に単語の境界へ空白を入れる正規表現で調整してください。
句読点を削除すると意味は変わりますか?
変わります。疑問符や感嘆符、引用符は語気や範囲を伝えるため、削除すると文が曖昧になり、引用の範囲も分からなくなります。分析用には使えますが、公開する文章は原文を残し、結果は作業用の中間版として扱ってください。
関連ツール:句読点の削除