文本統計

統計含空格與不含空格的字元數、單詞數、不重複詞數、句子、段落、行數,並給出預計閱讀時長與詞頻,全部在瀏覽器中即時計算。

一段文字所需的全部計數,邊輸入邊更新。 貼上或輸入文本,即可得到字元數、單詞數、不重複詞數、句子、段落、行數以及預計閱讀時長。詞頻列表展示真正支撐這篇文字的詞,還可以隱藏常見虛詞,只看有意義的部分。

字元數
0
字元數(不含空格)
0
單詞數
0
不重複詞數
0
句子數
0
段落數
0
行數
0
閱讀時長
0
高頻詞

統計文本遠沒有看上去那麼簡單

到底什麼算一個詞

同一段文字問三個軟體要字數,很容易得到三個答案。這不是 bug,而是定義問題。像 "state-of-the-art" 這樣的連字元複合詞,在排版者眼裡是一個詞,在樸素的切分器眼裡是四個。"don't" 裡的撇號不能拆詞,而作為引號使用的撇號卻應該拆。數字、網址和郵箱各自又需要不同的規則。

本工具把「詞」定義為一串字母或數字,後面可以跟撇號再接字母。由於匹配是 Unicode 感知的,帶重音的拉丁字母、希臘字母、西里爾字母和中日韓字元都被視為字母,而不會被悄悄丟棄。詞與詞之間的標點起分隔作用,因此 "well-known" 記作兩個,"it's" 記作一個。重要的不是選了哪條規則,而是你知道規則是什麼——這樣你可以預測結果,而不是與它爭論。

句子、段落和行

在沒有語言模型的情況下,句子切分天然是啟發式的。按句號、問號和感嘆號切分對普通散文有效,遇到縮寫則會以可預料的方式失敗:"Dr. Smith arrived at 9 a.m." 在樸素切分器看來像三句。做可讀性分析時,請把句子數當作良好的估計值,而不是精確數字。

段落和行更機械,但彼此不同。行是以換行符分隔的內容,所以一個硬換行的檔案行數很多、段落很少。段落是由一個或多個空行分隔的塊,這與 Markdown 和多數編輯器的理解一致。對比這兩個數字,可以迅速判斷文本是不是帶著硬換行過來的——貼上進會自動重排的系統時,這一點很關鍵。

閱讀時長與詞頻

閱讀時長按每分鐘 200 詞估算,這是普通散文默讀速度的常見均值。真實速度差異很大:帶程式碼示例的技術材料更慢,熟悉的營銷文案更快,手機上比桌面更慢。請把它用於相對比較,而不是對讀者的承諾。

詞頻才是這個工具在編輯環節真正的價值所在。按次數排序會暴露無意識的重複——八百字裡出現十一次的口頭禪,以及你想寫的主題是否真的是出現最多的名詞。「忽略常見詞」會移除冠詞、介詞、代詞等封閉類虛詞,否則它們會在任何語言的任何列表裡霸佔前排,卻什麼都說明不了。

開源說明:使用原生 JavaScript 實現,不依賴第三方庫。

常見問題

為什麼這裡的字數和我的文書處理軟體不同?
不同工具對「詞」的定義不同,尤其是在連字元、撇號和數字上。本工具按字母或數字串計數,因此 "well-known" 是兩個詞,"it's" 是一個。
兩個字元數有什麼區別?
第一個統計所有字元,包括空格、製表符和換行;第二個去掉全部空白字元,多數字數限制實際指的是後者。
閱讀時長是怎麼算的?
用詞數除以每分鐘 200 詞,這是普通散文默讀的典型均值。含程式碼的技術文本更慢,所以請當作比較用的參考值。
句子是如何識別的?
按句號、問號和感嘆號切分。像 "a.m." 這樣的縮寫會讓計數偏高,因此它是估計值而非精確數字。
「忽略常見詞」會去掉什麼?
the、and、of、to 以及常見代詞等虛詞。它們在任何詞頻表裡都排在最前,卻與主題無關,隱藏後才能看到真正有意義的詞。
我的文本會被上傳嗎?
不會。所有統計都由瀏覽器中的 JavaScript 完成,不會發送到伺服器,這也是數字能隨輸入即時更新的原因。