R在句子中计算JP字符

时间:2013-10-23 16:19:57

标签: r

我需要计算R中每个句子的日文字符百分比。我将文本分成句子,如下所示:

> text  
[1]  "若い人が仕事がつまらない会社が面白くないというのはなぜか"
[2]  "それは要するに自分のやることを人が与えてくれると思っているからです"
[3]  "でも会社が自分にあった仕事をくれるわけではありません"

我想在每个句子中获得平假名字符的数量。我有一个txt文件来搜索平假名字符。我可以用一句话来做但不能适用于所有句子。对于一句话,我这样做:

> hiragana<-scan("hiragana.txt",what="char")
> hiragana<-unlist(strsplit(hiragana,"")) #hiragana list to search in sentences
> b<-text[3]
> b<-unlist(strsplit(b,"")) # so that I can search characters in the sentence
> b
[1] "若" "い" "人" "が" "仕" "事" "が" "つ" "ま" "ら" "な" "い" "会" "社"
[15] "が" "面" "白" "く" "な" "い" "と" "い" "う" "の" "は" "な" "ぜ" "か"
> b[(b %in% hiragana)]
[1] "い" "が" "が" "つ" "ま" "ら" "な" "い" "が" "く" "な" "い" "と" "い"
[15] "う" "の" "は" "な" "ぜ" "か"
> length(b[(b %in% hiragana)])
[1] 20

我的问题是我怎样才能使它适用于多个句子。我需要这样的输出:

>output
[1]  20
[2]  28
[3]  20

我的问题与this类似,但我想将其应用于每个句子,而不是特定句子。

有什么意见吗?

2 个答案:

答案 0 :(得分:0)

使用readLines,您只需将代码包装在for循环中,逐行读取平假名文件:

conn <- file("hiragana.txt", "rt")
nLines <- system("wc -l hiragana.txt")
output <- rep(0, nLines)
for (i in 1:nLines) {
  line <- readLines(conn, n=1, warn=FALSE)
  chars <- strsplit(line, "")[[1]]
  nHiragana <- sum(chars %in% hiragana, na.rm=TRUE)
  output[i] <- nHiragana   
}
close(conn)
output

答案 1 :(得分:0)

感谢大家的回答。我发现了如何解决我的问题。这比我想象的容易。这是解决方案:

text<-readLines(filename)
text<-unlist(strsplit(text, "。")) #splits text into sentences
nchar(gsub("[ぁ-ん]","",text) #shows hiragana count (also shows katakana characters if you fix ぁ-ん part with katakana ones)