すべての記事

文字数と単語数のカウント:Unicodeがなぜこれを複雑にするか

文字数や単語数を数えるのは単純な作業に見えるが、日本語には単語の境目を示す空白がそもそも存在しないため、「単語数」という発想自体が英語などとは根本的に違う意味を持つ。

分かち書きをしない言語という前提

日本語の文章はひらがな・カタカナ・漢字が空白なしで連続して書かれる。「今日は天気がいいです」のように、どこからどこまでが一つの単語かは文法と文脈から判断するしかなく、英語のようにスペースで区切る習慣がない。そのため「単語数を数える」ツールを日本語にそのまま適用しても、意味のある結果にはならない。

だから「文字数」が実務上の基準になる

Twitter(現X)や小論文の字数制限、名刺の肩書き欄など、日本語圏の実務では単語数ではなく文字数が基準として使われることが圧倒的に多い。これは日本語に単語の自然な境界がないことの裏返しでもあり、「◯文字以内で」という指示が「◯語以内で」より圧倒的に一般的なのはこのためだ。

ひらがな・カタカナ・漢字が混在することの影響

同じ内容でも、漢字で書くか、ひらがなで書くか、カタカナで書くかによって文字数は変わる。「有り難う御座います」と「ありがとうございます」は意味も発音もほぼ同じだが、文字数を数えると前者の方が少なくなる。文字数だけを見て文章の長さや複雑さを判断する際は、この表記ゆれの影響を考慮する必要がある。

この機能が必要な理由

  • 文字数制限(SNSの投稿、応募フォーム、名刺の肩書き)に対してテキストをチェックする。
  • 同じ内容を漢字表記とひらがな表記で書いたときの文字数の違いを確認する。
  • テキストの「見た目上の」長さとコード内の文字カウンターが報告する長さの違いを診断する。

スペースのない言語での単語カウント

中国語、日本語、タイ語では、単語は伝統的にスペースで区切られません — 単語の境界を決めるのは区切り文字ではなく、文法と文脈です。そのため、こうした言語における「単語数カウント」は本来、専用のテキスト分かち書きアルゴリズム(形態素解析)を必要とし、単純にスペースで区切って数える方法では、テキスト全体が1つの「単語」になるか、まったく意味をなさない結果になってしまいます。

ツールを試す