我正在尝试创建一个给定文本集的二元组和三元组,这恰好是中文。乍一看,tau程序包似乎非常适合此应用。根据以下设置,我已经接近所需:
library(tau)
q <- c("天","平","天","平","天","平","天","平","天空","昊天","今天的天气很好")
textcnt(q,method="ngram",n=3L,decreasing=TRUE)
唯一的问题是输出是Unicode字符字符串,而不是字符本身。所以我得到了类似这样的东西:
_ + < <U <U+ > U U+ 9 +5 5 U+5 >_ _< _<U +59 59 2 29 29> 592 7 92
22 19 19 19 19 19 19 19 17 14 14 14 11 11 11 9 9 8 8 8 8 8 8
929 9> >< ><U 9>_ E +5E 3 3> 3>_ 5E 5E7 6 73 73> A E7 E73 4 8 9>< A> +6
8 8 8 8 5 5 4 4 4 4 4 4 4 4 4 4 4 4 3 3 3 3 2
+7 4> 4>< 7A A>< C U+6 U+7 +4 +4E +5F +66 +6C +76 +7A 0 0A 0A> 1 14 14> 4E 4EC
2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
597 5F 5F8 60 60A 66 660 68 684 6C 6C1 76 768 7A7 7A> 7D 7D> 84 84> 88 88> 8> 8><
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
97 97D A7 A7A A>_ C1 C14 CA CA> D D> D>_ EC ECA F F8 F88 U+4
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
我试图编写一个类似的功能,但是除了单字母缩写外,我无法理解任何更复杂的代码(如果代码不够高效或难看,请见谅,我尽力了)。这种方法的优点也在于,我可以通过简单地检查DTM来获取每个“文档”内的单词计数,这还是挺好的。
data <- c(NA, NA, NA)
names(data) <- c("doc", "term", "freq")
terms <- NA
for(i in 1:length(q)){
temp <- data.frame(i,table(strsplit(q[i],"")))
names(temp) <- c("doc", "term", "freq")
data <- rbind(data, temp)
}
data <- data[-1,]
DTM <- xtabs(freq ~ doc + term, data)
colSums(DTM)
这实际上提供了一个不错的输出:
天 平 空 昊 今 好 很 气 的
8 4 1 1 1 1 1 1 1
有没有人有关于使用tau或修改自己的代码来实现中文字符的二元组和三元组的建议?
编辑:
根据评论的要求,这是我的sessionInfo()
输出:
R version 3.0.0 (2013-04-03)
Platform: x86_64-w64-mingw32/x64 (64-bit)
locale:
[1] LC_COLLATE=English_United States.1252 LC_CTYPE=English_United States.1252
[3] LC_MONETARY=English_United States.1252 LC_NUMERIC=C
[5] LC_TIME=English_United States.1252
attached base packages:
[1] stats graphics grDevices utils datasets methods base
other attached packages:
[1] tau_0.0-15
loaded via a namespace (and not attached):
[1] tools_3.0.0
textcnt
在哪个软件包中? - Tyler Rinkertextcnt
的调用确实保留了字符:你可能只是有一个编码问题。你的sessionInfo()
是什么? - Vincent Zoonekyndtau
包中的textcnt
命令。 @VincentZoonekynd 我已经更新了原始帖子,并附上了sessionInfo()
输出,但我不太确定如何解释它。 - user23404941252
(Windows特定的拉丁编码)更改为能够处理中文字符的编码,例如UTF-8
。 - Vincent ZoonekyndSys.setlocale("LC_CTYPE", "English_United States.utf8")
编辑到了我的Rprofile.site文件中。但是我仍然收到一个错误:OS报告无法满足设置区域设置为“English_United States.utf8”的请求
。我走对了吗? - user2340494