こにしき(言葉・日本社会・教育)

関西学院大学(2016.04~)の寺沢拓敬のブログです(専門:言語社会学)。

日本語文の名詞をランダムに「ヒャッハァー!」に置換するRスクリプト

RMeCabのインストールが必要 → library(RMeCab)

追記

r-de-rさんに助言いただきました。ありがとうございます。もっと洗練されたコードを提案されたので謹んでコピペ(すみません)します。

hyahhaaa2 <- function(x, y) {

b <- unlist(RMeCabC(x))
b[names(b) == "名詞" & runif(length(b)) <= y] <- "ヒャッハァー!"
paste(b, collapse = "")
}


ーーーーーーーーーーーーーー

関数本体

hyahhaaa <- function(x,y){

a <- RMeCabC(x)

for(i in 1:length(a)){
 if(names(a[[i]]) !="名詞"){       # 名詞/非・名詞で分岐
     b[i] <- a[[i]]              # 名詞でなければ、そのまま

 }else{                            # 名詞であれば、
     if(rbinom(1,1, y) != 1){      # 指定した生起確率にしたがって、ランダムに
      b[i] <- a[[i]]        # 「ヒャッハァー!」に置換する
      }else{
      b[i] <- c("ヒャッハァー!")
}
}
}
 paste(b, collapse="")
}

USAGE

hyahhaaa(x,y)

x: 日本語テキスト
y: 「ヒャッハー!」の生起確率 0 < p < 1


使用例

x <- c("英語に関する各科目については,その特質にかんがみ,生徒が英語に触れる機会を充実すると
        ともに,授業を実際のコミュニケーションの場面とするため,授業は英語で行うことを基本とす
        る。その際,生徒の理解の程度に応じた英語を用いるよう十分配慮するものとする。")

hyahhaaa (x, 0.2)   # 生起確率を20%にした場合

結果

英語に関する各ヒャッハァー!については,そのヒャッハァー!にかんがみ,生徒がヒャッハァー!に触れるヒャッハァー!を充実するとともに,授業を実際のコミュニケーションの場面とするため,授業は英語で行うことをヒャッハァー!とする。その際,生徒の理解の程度に応じた英語を用いるよう十分配慮するものとする。