Warmup Practice

作業ディレクトリの確認

getwd()
[1] "/cloud/project"

リストの作成

c(1, 2, 3, 4, 5)

操作:2倍する

c(1, 2, 3, 4, 5)*2

変数に代入

代入演算子

Y <- c(1, 2, 3, 4, 5)

基本操作:2倍する

Y*2 

基本操作:2乗する

Y^2
[1]  1  4  9 16 25

要素の抽出

Y[4]
[1] 4

length関数: リストの長さ(要素数)

length(str)
[1] 3

nchar関数: 文字の長さ

nchar(str)
[1] 1 2 3

sqrt関数: 平方根(squre root)を計算する

sqrt(numLst)
[1]  4  5 16

テキストの頻度表作成

サンプルテキスト

テキストファイルの読み込み

一行ずつ読み込んで、リストに格納

txt<-readLines("sample_texts/sample_en.txt")
Warning in readLines("sample_texts/sample_en.txt") :
  incomplete final line found on 'sample_texts/sample_en.txt'

結果出力

txt

3行目の内容

txt[3] 
[1] "In general, it is spread through droplet and contact transmission. "

練習ファイルの読み込んだ行数を表示

スペース&記号による分割

Punctuation characters:
! " # $ % & ' ( ) * + , - . / : ; < = > ? @ [ \ ] ^ _ ` { | } ~.
wordLst<-strsplit(txt,"[[:space:]]|[[:punct:]]")

結果出力

wordLst
[[1]]
 [1] "COVID"       "19"          "is"          "an"          "infectious"  "disease"    
 [7] "caused"      "by"          "a"           "coronavirus" "called"      "SARS"       
[13] "CoV"         "2"           ""           

[[2]]
 [1] "It"       "mainly"   "causes"   "symptoms" "such"     "as"       "fever"    "and"     
 [9] "or"       "cough"    ""        

[[3]]
 [1] "In"           "general"      ""             "it"           "is"          
 [6] "spread"       "through"      "droplet"      "and"          "contact"     
[11] "transmission" ""            

[[4]]
 [1] "It"       "has"      "been"     "pointed"  "out"      "that"     "it"       "may"     
 [9] "spread"   "before"   "symptoms" "appear"   ""        

[[5]]
 [1] "It"         "is"         "therefore"  "important"  "to"         "habitually"
 [7] "follow"     "the"        "general"    "strategies" "for"        "preventing"
[13] "infectious" "diseases"   ""           "such"       "as"         "social"    
[19] "distancing" "and"        "wearing"    "a"          "mask"       "when"      
[25] "in"         "public"    

各行のデータを一括化

wordLst<-unlist(wordLst)

小文字に変換

wordLst<-tolower(wordLst)

結果出力

wordLst
 [1] "COVID"        "19"           "is"           "an"           "infectious"  
 [6] "disease"      "caused"       "by"           "a"            "coronavirus" 
[11] "called"       "SARS"         "CoV"          "2"            ""            
[16] "It"           "mainly"       "causes"       "symptoms"     "such"        
[21] "as"           "fever"        "and"          "or"           "cough"       
[26] ""             "In"           "general"      ""             "it"          
[31] "is"           "spread"       "through"      "droplet"      "and"         
[36] "contact"      "transmission" ""             "It"           "has"         
[41] "been"         "pointed"      "out"          "that"         "it"          
[46] "may"          "spread"       "before"       "symptoms"     "appear"      
[51] ""             "It"           "is"           "therefore"    "important"   
[56] "to"           "habitually"   "follow"       "the"          "general"     
[61] "strategies"   "for"          "preventing"   "infectious"   "diseases"    
[66] ""             "such"         "as"           "social"       "distancing"  
[71] "and"          "wearing"      "a"            "mask"         "when"        
[76] "in"           "public"      

空白”“の削除

#wordLst<-wordLst[nchar(wordLst)>0]
wordLst<- wordLst[wordLst != ""]

結果出力

wordLst
 [1] "COVID"        "19"           "is"           "an"           "infectious"  
 [6] "disease"      "caused"       "by"           "a"            "coronavirus" 
[11] "called"       "SARS"         "CoV"          "2"            "It"          
[16] "mainly"       "causes"       "symptoms"     "such"         "as"          
[21] "fever"        "and"          "or"           "cough"        "In"          
[26] "general"      "it"           "is"           "spread"       "through"     
[31] "droplet"      "and"          "contact"      "transmission" "It"          
[36] "has"          "been"         "pointed"      "out"          "that"        
[41] "it"           "may"          "spread"       "before"       "symptoms"    
[46] "appear"       "It"           "is"           "therefore"    "important"   
[51] "to"           "habitually"   "follow"       "the"          "general"     
[56] "strategies"   "for"          "preventing"   "infectious"   "diseases"    
[61] "such"         "as"           "social"       "distancing"   "and"         
[66] "wearing"      "a"            "mask"         "when"         "in"          
[71] "public"      

単語のToken数

tokens <- length(wordLst)

単語のTypes数

  • unique()関数は,リストの重複しない要素を返す
types <- length(unique(wordLst))

結果出力

print(paste("Token =", tokens))
[1] "Token = 71"
print(paste("Types =", types))
[1] "Types = 57"

TTR: Type-Token Ratioの計算

\[TTR=\frac{types}{tokens} \times 100 \]

types/tokens*100
[1] 80.28169
小数点2桁で結果を出力
round(types/tokens*100,2)
[1] 80.28

練習: RTTR(Root Type-Token Ratio) Guiraudの値を求める

\[RTTR=\frac{types}{\sqrt{tokens}} \]

小数点2桁で結果を出力

[1] 6.53

Word Frequencies

(freq <- table(wordLst))

Sort

(freq_data<-sort(freq, decreasing=TRUE))

ファイルに出力

write.csv(freq_data, "freq_en.csv")

単語頻度数分布(色付き)

練習:  日本語のテキスト (sample_ja.txt)で単語の頻度データを作成する

結果出力

wordLst
      に       を       が       で       と       の       は ください       て 
      12        8        6        6        6        6        6        5        5 
    とき     ない        1        9    COVID ウイルス   コロナ     ます       話 
       5        5        4        4        4        4        4        4        4 
      か       し       や       中       人       体        2      CoV     SARS 
       3        3        3        3        3        3        2        2        2 
    つけ     など     なり   マスク   まわり     よう       出     出る       咳 
       2        2        2        2        2        2        2        2        2 
      外     感染       熱       誰     あけ     あと     あり     ある   うつさ 
       2        2        2        2        1        1        1        1        1 
  うつし     から     こと   しかし   しまう     しれ   そして       た       だ 
       1        1        1        1        1        1        1        1        1 
  つける     なら     なる     ひと     ませ       も       ん     入っ     入る 
       1        1        1        1        1        1        1        1        1 
    接触       気       空     話す       近     近く       間     飛沫 
       1        1        1        1        1        1        1        1 

LS0tCnRpdGxlOiAiTGVjMDI6IOWfuuacrOaTjeS9nCIKb3V0cHV0OiBodG1sX25vdGVib29rCi0tLQoKIyBXYXJtdXAgUHJhY3RpY2UKIyMg5L2c5qWt44OH44Kj44Os44Kv44OI44Oq44Gu56K66KqNIApgYGB7cn0KZ2V0d2QoKQpgYGAKIyMg44Oq44K544OI44Gu5L2c5oiQCmBgYHtyfQpjKDEsIDIsIDMsIDQsIDUpCmBgYAoKIyMg5pON5L2c77yaMuWAjeOBmeOCiwpgYGB7cn0KYygxLCAyLCAzLCA0LCA1KSoyCmBgYAoKIyMg5aSJ5pWw44Gr5Luj5YWlCiMjIyBb5Luj5YWl5ryU566X5a2QXShodHRwOi8vY3NlLm5hcm8uYWZmcmMuZ28uanAvdGFrZXphd2Evci10aXBzL3IvMDUuaHRtbCkKYGBge3J9ClkgPC0gYygxLCAyLCAzLCA0LCA1KQpgYGAKCiMjIOWfuuacrOaTjeS9nO+8mjLlgI3jgZnjgosKYGBge3J9ClkqMiAKYGBgCgojIyDln7rmnKzmk43kvZzvvJoy5LmX44GZ44KLCmBgYHtyfQpZXjIKYGBgCgojIyDopoHntKDjga7mir3lh7oKYGBge3J9CllbNF0KYGBgCgojIyMgbGVuZ3Ro6Zai5pWwOiDjg6rjgrnjg4jjga7plbfjgZXvvIjopoHntKDmlbDvvIkKYGBge3J9CnN0ciA8LSBjICgiYSIsICJhYiIsICJhYmMiKQpsZW5ndGgoc3RyKQpgYGAKIyMjIG5jaGFy6Zai5pWwOiDmloflrZfjga7plbfjgZUKYGBge3J9Cm5jaGFyKHN0cikKYGBgCiMjIyBzcXJ06Zai5pWw77yaIOW5s+aWueaguShzcXVyZSByb290KeOCkuioiOeul+OBmeOCiwpgYGB7cn0KbnVtTHN0IDwtIGMgKDE2LDI1LDI1NikKc3FydChudW1Mc3QpCmBgYAoKIyDjg4bjgq3jgrnjg4jjga7poLvluqbooajkvZzmiJAKIyMg44K144Oz44OX44Or44OG44Kt44K544OICi0gW+WOmueUn+WKtOWDjeecgUhQ77yaQ09WSUQtMTnjgavjgaTjgYTjgaZdKGh0dHBzOi8vd3d3LmMxOS5taGx3LmdvLmpwLykKLSDljZjoqp7jga7liIbjgYvjgaHmm7jjgY0KICAtIOaXpeacrOiqnu+8mm1lY2FiCiAgLSDkuK3mlofvvJpbQ29yZU5MUF0oaHR0cHM6Ly9jb3JlbmxwLnJ1bi8pCgojIyDjg4bjgq3jgrnjg4jjg5XjgqHjgqTjg6vjga7oqq3jgb/ovrzjgb8K5LiA6KGM44Ga44Gk6Kqt44G/6L6844KT44Gn44CB44Oq44K544OI44Gr5qC857SNCmBgYHtyfQp0eHQ8LXJlYWRMaW5lcygic2FtcGxlX3RleHRzL3NhbXBsZV9lbi50eHQiKQpgYGAKCiMjIyDntZDmnpzlh7rlipsKYGBge3J9CnR4dApgYGAKCiMjIyMgM+ihjOebruOBruWGheWuuQpgYGB7cn0KdHh0WzNdIApgYGAKCiMjIyMgPHNwYW4gc3R5bGU9ImNvbG9yOiBibHVlOyAiPue3tOe/kjwvc3Bhbj7jg5XjgqHjgqTjg6vjga7oqq3jgb/ovrzjgpPjgaDooYzmlbDjgpLooajnpLoKYGBge3IsIGVjaG89RkFMU0V9Cmxlbmd0aCh0eHQpCmBgYAoKIyMjIyDjgrnjg5rjg7zjgrkm6KiY5Y+344Gr44KI44KL5YiG5YmyCmBgYApQdW5jdHVhdGlvbiBjaGFyYWN0ZXJzOgohICIgIyAkICUgJiAnICggKSAqICsgLCAtIC4gLyA6IDsgPCA9ID4gPyBAIFsgXCBdIF4gXyBgIHsgfCB9IH4uCmBgYApgYGB7cn0Kd29yZExzdDwtc3Ryc3BsaXQodHh0LCJbWzpzcGFjZTpdXXxbWzpwdW5jdDpdXSIpCmBgYAoKIyMjIOe1kOaenOWHuuWKmwpgYGB7cn0Kd29yZExzdApgYGAKCiMjIyMg5ZCE6KGM44Gu44OH44O844K/44KS5LiA5ous5YyWCmBgYHtyfQp3b3JkTHN0PC11bmxpc3Qod29yZExzdCkKYGBgCgojIyMjIOWwj+aWh+Wtl+OBq+WkieaPmwpgYGB7cn0Kd29yZExzdDwtdG9sb3dlcih3b3JkTHN0KQpgYGAKCiMjIyDntZDmnpzlh7rlipsKYGBge3J9CndvcmRMc3QKYGBgCgojIyMjIOepuueZvSIi44Gu5YmK6ZmkCmBgYHtyfQojd29yZExzdDwtd29yZExzdFtuY2hhcih3b3JkTHN0KT4wXQp3b3JkTHN0PC0gd29yZExzdFt3b3JkTHN0ICE9ICIiXQpgYGAKCiMjIyDntZDmnpzlh7rlipsKYGBge3J9CndvcmRMc3QKYGBgCgojIyMg5Y2Y6Kqe44GuVG9rZW7mlbAKYGBge3J9CnRva2VucyA8LSBsZW5ndGgod29yZExzdCkKYGBgCgojIyMg5Y2Y6Kqe44GuVHlwZXPmlbAKKiB1bmlxdWUoKemWouaVsOOBr++8jOODquOCueODiOOBrumHjeikh+OBl+OBquOBhOimgee0oOOCkui/lOOBmQpgYGB7cn0KdHlwZXMgPC0gbGVuZ3RoKHVuaXF1ZSh3b3JkTHN0KSkKYGBgCgojIyMg57WQ5p6c5Ye65YqbCmBgYHtyfQpwcmludChwYXN0ZSgiVG9rZW4gPSIsIHRva2VucykpCnByaW50KHBhc3RlKCJUeXBlcyA9IiwgdHlwZXMpKQpgYGAKCiMjIyBUVFI6IFR5cGUtVG9rZW4gUmF0aW/jga7oqIjnrpcKJCRUVFI9XGZyYWN7dHlwZXN9e3Rva2Vuc30gXHRpbWVzIDEwMCAkJAoKYGBge3J9CnR5cGVzL3Rva2VucyoxMDAKYGBgCgojIyMjIyDlsI/mlbDngrky5qGB44Gn57WQ5p6c44KS5Ye65YqbCmBgYHtyfQpyb3VuZCh0eXBlcy90b2tlbnMqMTAwLDIpCmBgYAoKIyMgPHNwYW4gc3R5bGU9ImNvbG9yOiBibHVlOyAiPue3tOe/kjwvc3Bhbj46IFJUVFIoUm9vdCBUeXBlLVRva2VuIFJhdGlvKSBHPHNwYW4gc3R5bGU9ImNvbG9yOiByZWQ7ICI+dTwvc3Bhbj5pcmF1ZOOBruWApOOCkuaxguOCgeOCiwokJFJUVFI9XGZyYWN7dHlwZXN9e1xzcXJ0e3Rva2Vuc319ICQkCgojIyMjIOWwj+aVsOeCuTLmoYHjgafntZDmnpzjgpLlh7rlipsKYGBge3IsIGVjaG89RkFMU0V9CnJvdW5kKHR5cGVzL3NxcnQodG9rZW5zKSwyKQpgYGAKCiMjIFdvcmQgRnJlcXVlbmNpZXMKYGBge3J9CihmcmVxIDwtIHRhYmxlKHdvcmRMc3QpKQpgYGAKCiMjIFNvcnQKYGBge3J9CihmcmVxX2RhdGE8LXNvcnQoZnJlcSwgZGVjcmVhc2luZz1UUlVFKSkKYGBgCgojIyDjg5XjgqHjgqTjg6vjgavlh7rlipsKYGBge3J9CndyaXRlLmNzdihmcmVxX2RhdGEsICJmcmVxX2VuLmNzdiIpCmBgYAoKCiMjIyDljZjoqp7poLvluqbmlbDliIbluIMo6Imy5LuY44GNKQojIyMjIFtsYXM6IGxhYmVsIHN0eWxlXShodHRwOi8vY3NlLm5hcm8uYWZmcmMuZ28uanAvdGFrZXphd2Evci10aXBzL3IvNTMuaHRtbCkKYGBge3J9CmNvbG9ycyA9IGMoIm9yYW5nZSIsICJsaWdodGJsdWUiLCAiZ3JlZW4iKSAKYmFycGxvdChmcmVxX2RhdGEsIGxhcz0zLGNvbD1jb2xvcnMpCmBgYAoKIyMgPHNwYW4gc3R5bGU9ImNvbG9yOiBibHVlOyAiPue3tOe/kjwvc3Bhbj46IOOAgOaXpeacrOiqnuOBruODhuOCreOCueODiCAoc2FtcGxlX2phLnR4dCnjgafljZjoqp7jga7poLvluqbjg4fjg7zjgr/jgpLkvZzmiJDjgZnjgosKIyMjIOe1kOaenOWHuuWKmwpgYGB7ciwgZWNobz1GQUxTRX0KdHh0PC1yZWFkTGluZXMoInNhbXBsZV90ZXh0cy9zYW1wbGVfamEudHh0IikKd29yZExzdDwtc3Ryc3BsaXQodHh0LCJbWzpzcGFjZTpdXXxbWzpwdW5jdDpdXSIpCndvcmRMc3Q8LXVubGlzdCh3b3JkTHN0KQp3b3JkTHN0PC0gd29yZExzdFt3b3JkTHN0ICE9ICIiXQpmcmVxIDwtIHRhYmxlKHdvcmRMc3QpCihmcmVxX2RhdGE8LXNvcnQoZnJlcSwgZGVjcmVhc2luZz1UUlVFKSkKCmJhcnBsb3QoZnJlcV9kYXRhLCBsYXM9Myxjb2w9cmFpbmJvdygxMCkpCmBgYAoKYGBge3IsIGVjaG89RkFMU0V9CmJhcnBsb3QoZnJlcV9kYXRhLCBsYXM9Myxjb2w9cmFpbmJvdygxMCksIGNleC5uYW1lcz0wLjUpCmBgYA==