myIndices4 <- function(){ #copyleft 2019-01-17 sugiura@nagoya-u.jp output.file = choose.files() #結果を保存するファイル名を指定する。保存場所に注意 #(ファイル名を聞かれたら適当に名前を付ける。例えば jpn.txt) files <- list.files() for (i in files) { Tokens <- 0 Types <- 0 NoS <- 0 TTR <- 0 GI <- 0 AWL <- 0 ASL <- 0 wttr <- 0 ttrsum <- 0 MATTR <- 0 Score <- "" lines.tmp <- scan(i, what="char", sep="\n") #ファイルを選択。 Criterion <- grep("@Criterion:\t", lines.tmp, value=T) Score <- gsub("@Criterion:\t", "", Criterion) Score <- as.integer(Score) data.tmp <- grep("\\*(JPN|NS)...:\t", lines.tmp, value=T) #*で始まり # JPNかNS があって、 # その後ろに、3文字あって、 # その後ろに、コロンの記号とタブ記号がある行のみ。 body.tmp <- gsub("\\*(JPN|NS)...:\t", "", data.tmp) #行頭の記号とタブ記号を削除。 body.tmp <- body.tmp[body.tmp != ""] # 空の要素を削除(空でない要素のみを残す)する「イディオム」 body.lower <- tolower(body.tmp) # 小文字にして body.nopunc <- gsub("\\W", " ", body.lower) # 記号をスペースに body.single <- gsub(" +", " ", body.nopunc) # 重複スペースを一つに body.clear <- gsub(" $", "", body.single) # 文末スペースの削除 body.token <- unlist(strsplit(body.clear, " ")) # body.token <- body.token[body.token != ""] # 空の要素を削除する「イディオム」 body.type <- unique(body.token) Tokens <- length(body.token) Types <- length(body.type) NoS <- length(body.tmp) TTR <- Types/Tokens GI <- Types/sqrt(Tokens) AWL <- nchar(paste(body.token, collapse=""))/Tokens ASL <- Tokens/NoS body.token2 <- c(body.token, body.token) for(j in 1:Tokens){ mado <- body.token2[j:(99+j)] wttr <- length(unique(sort(mado)))/100 ttrsum <- ttrsum + wttr } MATTR <- ttrsum/Tokens cat(i, Score, Tokens, Types, NoS, TTR, GI, MATTR, AWL, ASL, "\n", file=output.file, append=T) } }