隨著我們長大,能讀懂的文本也越來越複雜。但我們要怎麼評估一段文本的複雜程度?又該怎麼寫出能完成這件事的程式呢?在這個練習中,你要寫一個程式,判斷一段文字有多難讀,以及它最適合哪個年齡層閱讀。
我們會用 自動可讀性指標(ARI) 公式來計算文本的複雜度。ARI 是 1967 年發展出來的,用來評估讀懂一段文本需要達到美國哪個年級的程度。它的做法是衡量單字和句子的複雜度:複雜度以每個單字的字元數,以及每個句子的單字數來計算,數值越高就代表越複雜。
你的程式應該顯示文本的前三個句子,但每個句子最多只顯示 50 個字元。如果某個句子超過 50 個字元,就只印出前 50 個字元,並在後面加上省略符號(...)。如果文本超過三個句子,第四行只輸出省略符號。
假設有一個名為「ari.txt」的檔案,內容如下(這段文字會用在下面所有的範例中):
ARI was designed for military use in 1967. It was for real-time monitoring of readability on typewriters. It offered an automated counting method. It has similar results to other frameworks. This validates its accuracy.
那麼程式應該印出:
The text is:
ARI was designed for military use in 1967.
It was for real-time monitoring of readability on ...
It offered an automated counting method.
...
程式應該計算並印出文本中的字元數、單字數和句子數。句子可以句號、驚嘆號或問號結尾。句子中的單字以空白分隔。計算每個單字的字元數時,要算進所有非空白字元,包括標點符號。統計資料要印在文字預覽之後,並以一個空行分隔。
以下是只有文字統計部分的範例輸出:
Words: 34
Sentences: 5
Characters: 186
有了這些關於文本的資訊,我們就能用下面的公式算出它的複雜程度:
score = 4.71 * chars / words + 0.5 * words / sentences - 21.43
程式應該計算並印出分數,以及理解這段文字所需的大約年齡。
| 分數 | 年齡 | 年級 |
|---|---|---|
| 1 | 5-6 | 幼兒園 |
| 2 | 6-7 | 一年級 |
| 3 | 7-8 | 二年級 |
| 4 | 8-9 | 三年級 |
| 5 | 9-10 | 四年級 |
| 6 | 10-11 | 五年級 |
| 7 | 11-12 | 六年級 |
| 8 | 12-13 | 七年級 |
| 9 | 13-14 | 八年級 |
| 10 | 14-15 | 九年級 |
| 11 | 15-16 | 十年級 |
| 12 | 16-17 | 十一年級 |
| 13 | 17-18 | 十二年級 |
| 14 | 18-22 | 大學生 |
分數要印到小數點後兩位。用來查年齡或年級時,分數要四捨五入到最接近的整數,而且上限是 14。以下是程式的範例輸出:
The text is:
ARI was designed for military use in 1967.
It was for real-time monitoring of readability on ...
It offered an automated counting method.
...
Words: 34
Sentences: 5
Characters: 186
Score: 7.74
This text should be understood by 12-13 year-olds.