テキストの頻度分析は、テキスト内で各単語または文字が何回出現するかを数えます。日本語では「文字の頻度」という発想自体が英語とはかなり違う意味を持ちます — アルファベットのような数十種類の文字ではなく、数千種類の漢字を相手にすることになるからです。
「文字頻度」が漢字ではまったく別物になる理由
英語の文字頻度分析は26種類のアルファベットの出現率を比べるだけで済みますが、日本語の文章はひらがな・カタカナに加えて数千種類の漢字を含みます。同じ内容でも漢字で書くかひらがなで書くかで頻度分布はまったく変わるため、「日本語で一番多い文字は何か」という問いには、ひらがな・カタカナ・漢字のどれを対象にするかを決めない限り答えられません。
単語頻度には形態素解析が必要
日本語には単語間のスペースがないため、単純にスペースで区切って単語頻度を数える方法は使えません。実務では形態素解析器(MeCabなど)でテキストを単語単位に分割してから頻度を集計するのが一般的で、これは英語の「スペースで区切るだけ」の単語頻度分析とは根本的に異なるステップです。
文字頻度と古典的な暗号解読
単純な換字式暗号は文字の頻度分布そのものを変えず、どの文字がどの文字に対応するかを並べ替えるだけです。暗号化されたテキストの頻度分布を既知の元の言語の分布と比較することで、可能なすべての鍵を試すことなく文字のマッピングを復元し、暗号を解読できます——ただし日本語のように文字集合が非常に大きい言語では、この古典的な手法をそのまま適用するのは現実的ではありません。
この機能が必要な理由
- 最も頻繁に出現する単語から長い文書の主なトピックを素早く理解する。
- 同じ文章を漢字表記とひらがな表記にしたときの文字頻度の違いを確認する。
- ページテキストのSEO最適化のために単語の繰り返しを分析する。
ジップの法則
自然言語では、単語の出現頻度は頻度降順での順位に反比例します — 最も頻繁に出現する単語は、2番目に頻繁な単語のおよそ2倍、3番目の単語のおよそ3倍出現します。この規則性(ジップの法則)は通常のテキストで非常に安定しているため、そこから大きく逸脱することは1つのシグナルになります — そのテキストは人工的に生成されたものだったり、キーワードが過剰に詰め込まれたスパムだったり、想定と違う言語で書かれていたりする可能性があります。