読者です 読者をやめる 読者になる 読者になる

語彙の豊富さや文章の難しさを測る (1)

 RのkoRpusパッケージを使うと、語彙の豊富さや文章の難しさを測ることができます。このパッケージには非常に多くの機能が実装されていますが、今回はその一部を紹介したいと思います。*1
 分析データとしては、Project Gutenbergで公開されているCharles DickensA Christmas Carolを使います。まず、こちらからtxtデータをダウンロードして、Rのワーキング・ディレクトリに保存してください。*2 そして、保存したデータをtokenize関数で読み込みます。

# パッケージの読み込み
library(koRpus)
# データの読み込み
tok <- tokenize("pg19337.txt", lang = "en")
# 読み込んだデータの概要を確認
summary(tok)

 上記のスクリプトを実行すると、以下のように、データの概要が表示されます。

  Sentences: 2701
  Words:     32855 (12.16 per sentence)
  Letters:   140737 (4.28 per word)

  Word class distribution:

               num         pct
word         32358 98.48729265
unknown        374  1.13833511
number         115  0.35002283
abbreviation     8  0.02434941
comma         2989          NA
fullstop      2701          NA
punctuation   2174          NA

 では、読み込んだデータを対象に、語彙の豊富さを測ってみましょう。語彙の豊富さを測る指標には様々なものがあります。以下では、TTR (Type-Token Ratio) とCTTR (Carroll’s corrected TTR) の2種類を算出しています。

# 語彙の豊富さ
# TTR
(ttr <- TTR(tok))
# CTTR
(cttr <- CTTR(tok))

 上記のスクリプトを実行すると、以下のような結果が表示されます。

Language: "en"

Total number of tokens: 32855
Total number of types:  4930

Type-Token Ratio
   TTR: 0.15 

Note: Analysis was conducted case insensitive.
Language: "en"

Total number of tokens: 32855
Total number of types:  4930

Carroll's CTTR
   CTTR: 19.23 

Note: Analysis was conducted case insensitive.

 また、文章の難しさを測る指標(リーダビリティ)にも様々なものがあります。以下では、ARI (Automated Readability Index) とFlesch-Kincaid Grade Levelの2種類を算出しています。

# 文章の難しさ
# ARI
ARI(tok)
# Flesch-Kincaid Grade Level
flesch.kincaid(tok)

 上記のスクリプトを実行すると、以下のような結果が表示されます。

Automated Readability Index (ARI)
  Parameters: default 
       Grade: 4.83 
Hyphenation (language: en)
  |===================================================================| 100%

Flesch-Kincaid Grade Level
  Parameters: default 
       Grade: 5.39 
         Age: 10.39 

Text language: en 

*1:このパッケージに関する詳細は、公式のマニュアルを参照してください。

*2:本来であれば、分析を始める前にテキストの本文以外の部分を削除する必要がありますが、ここでは省略します。