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

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

corpus r

 前回の記事に引き続き、koRpusパッケージの紹介をします。このパッケージには、語彙の豊富さや文章の難しさを測るための関数が非常に多く実装されています。そして、複数の指標をまとめて計算する関数も用意されています。
 今回の分析データは、WikipediaCorpus linguisticsのエントリ(冒頭部分のみ)とします。

Corpus linguistics is the study of language as expressed in samples (corpora) of "real world" text. This method represents a digestive approach to deriving a set of abstract rules by which a natural language is governed or else relates to another language. Originally done by hand, corpora are now largely derived by an automated process.

Corpus linguistics adherents believe that reliable language analysis best occurs on field-collected samples, in natural contexts and with minimal experimental interference. Within corpus linguistics there are divergent views as to the value of corpus annotation, from John Sinclair[1] advocating minimal annotation and allowing texts to 'speak for themselves', to others, such as the Survey of English Usage team (based in University College, London)[2] advocating annotation as a path to greater linguistic understanding and rigour.

 この文章を"sample.txt"という名前で、Rのワーキング・ディレクトリに保存しましょう。そして、その文章をtokenize関数で読み込みます。

# パッケージの読み込み
library(koRpus)
# 分析データの読み込み
tok <- tokenize("sample.txt", lang = "en")

 読み込んだデータに対して、textFeatures関数を使うと、文章の書き手の推定(著者推定)に用いられる9つの指標が同時に計算されます。

# 著者推定に用いる指標の計算
textFeatures(tok)

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

  uniqWd    complx sntCt sntLen   syllCt charCt lttrCt      FOG   flesch
1     92 0.6946565     5   26.2 1.862595    874    720 19.64031 22.66643

 また、lex.div関数を使うと、語彙の豊富さに関する複数の指標が同時に計算されます。

# 語彙の豊富さに関する複数の指標を計算
ld <- lex.div(tok, measure = c("TTR", "MSTTR", "MATTR", "C", "R", "CTTR", "U", "S", "K", "Maas", "HD-D", "MTLD"))
summary(ld)

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

           index  value
1            TTR   0.69
2          MSTTR   0.72
3          MATTR   0.76
4     Herdan's C   0.93
5       Root TTR   7.95
6           CTTR   5.62
7     Uber index  28.33
8         Summer    0.9
9       Yule's K  86.24
10        Maas a   0.19
11     Maas lgV0   5.16
12 HD-D (vocd-D)  35.94
13          MTLD 100.95

 さらに、readability関数を使うと、文章の難しさに関する複数の指標が同時に計算されます。

# 文章の難しさに関する複数の指標を計算
rd <- readability(tok, hyphen = NULL, index = c("ARI", "Coleman.Liau", "Danielson.Bryan", "Dickes.Steiwer", "ELF", "Farr.Jenkins.Paterson", "Flesch", "Flesch.Kincaid", "FOG", "FORCAST", "Fucks", "Linsear.Write", "LIX", "nWS", "RIX", "SMOG", "Strain", "TRI", "Wheeler.Smith"))
summary(rd)

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

Text language: en 
                   index     flavour    raw                    grade  age
1                    ARI                                       17.56     
2           Coleman-Liau                 28                    15.39     
3    Danielson-Bryan DB1               9.75                              
4    Danielson-Bryan DB2              27.47          >= 13 (college)     
5         Dickes-Steiwer              23.06                              
6                    ELF               13.4                              
7  Farr-Jenkins-Paterson              20.01 >= 16 (college graduate)     
8                 Flesch en (Flesch)  22.67 >= 16 (college graduate)     
9         Flesch-Kincaid                                       16.61 21.6
10                   FOG                                       19.64     
11               FORCAST                                       12.67 17.7
12                 Fucks                144                       12     
13         Linsear-Write                                        19.1     
14                   LIX              65.89                     > 11     
15                  nWS1                                       11.49     
16                  nWS2                                       11.67     
17                  nWS3                                       10.66     
18                  nWS4                                       11.55     
19                   RIX               10.4           > 12 (college)     
20                  SMOG                                       17.12 22.1
21                Strain              14.64                              
22                   TRI             -44.89                              
23         Wheeler-Smith                134                      > 4 

 個々の指標については、パッケージのマニュアルを参照してください。また、データの形式によっては、正確に計算できない指標もあります。