トップ 差分 一覧 ソース 検索 ヘルプ PDF RSS ログイン

myIndices4.R

*disclaimer
64663

R
サンプルデータとスクリプト

myIndices4.R

R
myIndices4.R(14)

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)

	}
}