テキストおよび日常ツール · テキスト ツールキット
全角句読点: 文の大文字と小文字のカウントに。と ! が重要である理由
· 背景
テキストツール ユニコード cjk-句読点
全角句読点と表意文字句読点とは何か、CJK テキストでそれらが使用される理由、および ASCII ピリオドのみを認識する文大文字変換器または文カウンタがバイリンガル テキストを誤る理由について説明します。
日本語の段落は 1 つの文としてカウントされます — ASCII 専用ツールが「。」と「!」を完全に見逃す仕組み
`Release ready. 次の版です。確認してください!` を ASCII ピリオドのみを認識するカウンターに貼り付けると、日本語部分が 1 つの長い剰余に吸収される可能性があります。目に見えるマークは装飾的な変形ではなく、読者が使用する境界線であるため、無視すると誤解を招く文章の合計が生成されます。
ToolAcre には、センテンス マッチング セットに `.`、`!`、`?`、`。`、`!`、および `?` が含まれています。これにより、特定の ASCII のみの障害は修正されますが、カウンターが日本語パーサーになるわけではありません。結果は依然として、認識された句読点で分割された一連のテキストから得られ、思考がどこで終わるかを決定する文法モデルはありません。
半角と全角 — 固定ピッチ CJK 組版の遺産とそれを運ぶ Unicode ブロック
「全幅」は、固定幅東アジアレイアウトの表意文字セルに関連付けられた幅を占めるように設計された文字を表します。 Unicode は `!` や `?` などの互換形式を維持しますが、日本語では `。` や `、` などの表意文字句読点も使用します。外観が似ていても、コード ポイントや交換可能なセマンティクスが同一であることを意味するわけではありません。
Unicode 標準では、全角 ASCII バリアントを半角および全角フォーム ブロックに配置しますが、U+3002 IDEOGRAPHIC FULL STOP および U+3001 IDEOGRAPHIC COMMA は CJK 記号と句読点に属します。この区別はソフトウェアにとって重要です。正規表現は、認識する実際の文字に名前を付けるか、分類する必要があります。
表意文字の終点とその関連物 — 。、!? および ASCII 句読点の全角形式
`。` は通常日本語の文を閉じ、 `、` は文内の内容を分離し、 `!?` は現代のコピーでおなじみの疑問文と感嘆文を提供します。全幅 `!` および `?` は、ASCII マークのワイド バージョンに視覚的に対応します。エディターが同じサイズで表示するというだけの理由で、自動的に変換されるわけではありません。
ToolAcre は、`。!?` を文末記号として扱いますが、`、` は扱いません。これは、狭いカウント ルールに適しています。繰り返されるターミネータは、一致した 1 つの実行として前のテキストとともに消費されるため、`本当!?` は 2 つの文ではなく 1 つの文に寄与します。引用、括弧、および編集規約は、個別の言語解釈を受けません。
文を意識した変換に必要なこと — 大文字にしたり数えたりする前にスクリプト全体で文の終わりを認識すること
文の大文字小文字変換では、まず入力全体が小文字に変換されます。次に、ターミネータの後に空白が続く場合にのみ、認識された 6 つのターミネータの先頭、または 6 つのターミネータの 1 つの後の小文字を大文字にします。したがって、`hello。 world` は `Hello。 World` になりますが、`hello。world` は 2 番目の英単語を小文字のままにします。
この空白の条件は、終わりを認識すれば十分であるというアウトラインの広範な主張を修正します。日本語では通常、`。` の直後にスペースを入れずに次の文が始まります。また、日本語の文字には通常、大文字の形式がありません。混合コピーでは、編集スタイルで必要な場合にのみ空白を追加します。変換を促進するためだけに挿入しないでください。
この文-格変換が実際に認識するもの: ターミネータとそれに続く空白
単語 Figure は空白で区切られたランを使用します。したがって、読者が多くの語彙単位を識別した場合でも、スペースのない日本語の文章は 1 つの「単語」としてカウントされます。逆に、周囲に空白文字がない句読点はランを分割しません。`end,start` は、この定義では 1 つの単語です。この数は機械的なものであり、言語を意識したトークン数ではありません。
文のカウントも句読点に基づいています。 `Dr. Smith` でのピリオドは余分な文を作成する可能性がありますが、句読点のない改行は新しい文の境界を作成しません。このカウンターは CJK ターミネータと反復記号を認識しますが、引用符、略語、省略記号、および不正な句読点により、その出力が編集上の判断と異なる可能性があります。
スペース、単語、句読点ベースのカウント: 明示的な制限付きの有用な数値
テキスト ツールキットの `LAUNCH READY. 次の版です。 check names! FINAL PASS?` を試してください。文の大文字と小文字は `Launch ready. 次の版です。 Check names! Final pass?` を生成します。大文字と小文字が区別されたすべてのテキストが最初に下げられ、次にターミネータとスペースの境界の後の開始文字が上げられます。日本語のテキストには大文字と小文字の区別がないため、見た目は変わりません。
結果の横にある統計は、判定ではなく定義として読んでください。このサンプルには句読点で区切られた 4 つの文が含まれていますが、単語の合計は日本語の形態ではなく、空白で区切られた 5 つのチャンクに従います。文字の合計では、`Intl.Segmenter` が利用可能な書記素クラスターが使用され、スペースなしの合計では、再カウントする前に Unicode の空白が削除されます。
実用的な例: 言語分析を前提とする代わりに、変換とすべてのカウントを検査します。
この動作では、日本語の改行ルール、縦組み、ルビ注釈、または句読点が表示される場所に関する禁則処理の制限は実装されていません。また、半角文字と全角文字も正規化されません。出版物でタイポグラフィーのチェックが必要な場合は、テキスト変換後に明示的に日本語をサポートするエディターまたはレイアウト システムを使用してください。
ロケール固有の大文字と小文字も約束の範囲外です。コンバーターは、デフォルトの JavaScript Unicode マッピング、小文字の固有名詞および頭字語を使用するため、空白文字が後に続く場合、略語の境界を文の境界と誤認する可能性があります。元に戻すこともできますが、名前、ブランドの大文字の使用、およびバイリンガル スタイルの決定については、編集上のレビューが必要なままです。
要点 — Text Toolkit の Sentence ケースは全幅の CJK 文末を認識するため、半角処理ではなく、バイリンガル コピーが処理されます。
コードでは視覚的な意図ではなく文字が認識されるため、全角の句読点が重要になります。 ToolAcre には句読点ベースの文マッチャーに `。!?` が明示的に含まれているため、英語と日本語の混合コピーは ASCII 語尾に限定されません。その文の大文字小文字のルールはより狭く、大文字化は先頭または認識されたターミネータとそれに続く空白の後にのみ発生します。
テキスト ツールキットを使用してこれらのルールをすばやく公開し、コンテキスト内の各図を解釈します。文の合計は区切り文字の推定値、単語は空白で区切られたラン、文字はブラウザのサポートが許可する場合、読者が認識する書記素です。これらの透過的な制限により、コンパクトなブラウザ機能が完全な言語分析を実行しているかのように装うことなく、出力が有用になります。