テキスト統計

空白ありとなしの文字数、単語数、異なり語数、文・段落・行の数を集計。推定読了時間と頻出語もブラウザー内でリアルタイムに計算します。

文章に必要な集計を、入力しながらリアルタイムで。 テキストを貼り付けるか入力すると、文字数・単語数・異なり語数・文・段落・行、そして推定読了時間が得られます。頻出語リストはその文章を実際に支えている語を示し、よくある機能語を隠して意味のある語だけを見ることもできます。

文字数
0
文字数(空白を除く)
0
単語数
0
異なり語数
0
文の数
0
段落数
0
行数
0
読了時間
0
頻出語

テキストの計数は見た目ほど自明ではない

「単語」とは何か

同じ文章の単語数を三つのソフトに尋ねると、三通りの答えが返ってくることは珍しくありません。これは不具合ではなく定義の問題です。"state-of-the-art" のようなハイフン複合語は、組版者にとって 1 語、素朴な分割器にとって 4 語です。"don't" のアポストロフィは語を割ってはいけませんが、引用符として使われたアポストロフィは割るべきです。数値・URL・メールアドレスもそれぞれ別の規則を要求します。

本ツールは「単語」を、英数字の連なりに、必要に応じてアポストロフィと追加の文字が続いたものと定義します。マッチングは Unicode を考慮するため、アクセント付きラテン文字・ギリシャ文字・キリル文字・CJK 文字はいずれも文字として数えられ、黙って捨てられることはありません。連なりの間の約物は区切りとして働くので、"well-known" は 2 語、"it's" は 1 語です。どの規則を選んだかより、規則を知っていることのほうが重要です。結果を予測できるようになるからです。

文・段落・行

言語モデルを使わない文の分割は、本質的にヒューリスティックです。ピリオド・疑問符・感嘆符で切る方法は通常の散文には有効ですが、略語では予測どおりに失敗します。"Dr. Smith arrived at 9 a.m." は素朴な分割器には 3 文に見えます。可読性の検討では、文の数を厳密な値ではなく良い推定値として扱ってください。

段落と行はより機械的ですが、互いに異なります。行は改行で区切られたもので、ハードラップされたファイルは行数が多く段落が少なくなります。段落は 1 行以上の空行で区切られたブロックで、これは Markdown や多くのエディターの考え方と一致します。両者を見比べると、その文章がハードラップ付きで届いたかどうかがすぐ分かります。再流し込みを行うシステムに貼り付けるときに効いてきます。

読了時間と語の頻度

読了時間は毎分 200 語で見積もっています。通常の散文を黙読する際の一般的な平均値です。実際の速度の幅は大きく、コード例を含む技術文書は遅く、見慣れた広告文は速く、スマートフォンでの閲覧はデスクトップより遅くなります。読者への約束ではなく、相対比較の目安として使ってください。

編集作業でこのツールが真価を発揮するのは語の頻度です。出現回数で並べ替えると、無意識の繰り返し——八百語のうち十一回現れる口癖——が可視化され、書いたつもりの主題が本当に最頻出の名詞かどうかも分かります。「一般的な語を除く」は冠詞・前置詞・代名詞などの機能語を取り除きます。これらはどの言語のどのリストでも上位を占めますが、何も教えてくれません。

オープンソースに関する注記:バニラ JavaScript で実装。サードパーティライブラリは使用していません。

よくある質問

ワープロソフトと単語数が違うのはなぜですか?
ツールごとに「単語」の定義が異なり、特にハイフン・アポストロフィ・数値で差が出ます。本ツールは英数字の連なりで数えるため "well-known" は 2 語、"it's" は 1 語です。
2 つの文字数の違いは何ですか?
1 つ目は空白・タブ・改行を含むすべての文字を数えます。2 つ目は空白類をすべて除いた値で、文字数制限が実際に指しているのは多くの場合こちらです。
読了時間はどう計算していますか?
単語数を毎分 200 語で割っています。通常の散文の黙読における一般的な平均値です。コードを含む技術文書は遅くなるため、比較用の目安としてください。
文はどのように判定していますか?
ピリオド・疑問符・感嘆符で分割しています。"a.m." のような略語があると多めに数えられるため、厳密な値ではなく推定値です。
「一般的な語を除く」は何を取り除きますか?
the、and、of、to や一般的な代名詞などの機能語です。どの頻度表でも上位に来ますが主題を示さないため、隠すことで意味のある語が浮かび上がります。
入力したテキストはどこかへ送信されますか?
いいえ。集計はすべてブラウザー内の JavaScript で行われ、サーバーには何も送信されません。だからこそ入力と同時に数値が更新されます。