来自剪贴板的语料库:许多行作为一个文档?

时间:2014-10-14 22:51:42

标签: r

我有大约30k行文本,平均长度约为50-60个字符。当试图绘制一个术语 - 文档矩阵时,似乎绘图效果更好(从相关角度来看),当很多文本行很少而不是很多文本行时。

例如,如果我要在Pride and Prejudice上绘制TDM,那么当文本全部在一行上时,图表中的节点似乎具有更好的相关性,而不是每行是单独的语料库

使用以下代码:

library("tm")

dd <- read.table("clipboard", sep="\r", quote="")
feedback <- Corpus(VectorSource(dd$V1))

tdm2 <- TermDocumentMatrix(feedback, control = list(removePunctuation = TRUE,
                                                    removeNumbers = TRUE,
                                                    stopwords = TRUE))



##################################################################
corT = 0.1
freq = 75

freqterms <- findFreqTerms(tdm2, lowfreq = freq)#[1:29]

vtxcnt <- rowSums(cor(as.matrix(t(tdm2[freqterms,])))>corT)-1

mycols<-c("#f7fbff","#deebf7","#c6dbef",
          "#9ecae1","#6baed6","#4292c6",
          "#2171b5", "#084594")

vc <- mycols[vtxcnt+1]
names(vc) <- names(vtxcnt)
##################################################################

plot(tdm2, 
     terms = freqterms, 
     #weighting = TRUE,
     corThreshold = corT,
     nodeAttrs=list(fillcolor=vc))

如果文本是从Gutenberg.org按原样拍摄,我会制作以下图:

enter image description here

这是0.1相关阈值并使用75个最常用的术语。不是很有趣。如果我将整本书作为单行并重新运行corT = 0.9和freq = 175的代码,那么我们得到:

enter image description here

这似乎提供了更多信息。有没有办法通过剪贴板或其他语料库中提取文本,而这些语料库中没有每一行作为其自己的“书”? Corpus()函数是否仅适用于矢量源,或者我可以执行类似readlines()的操作以使数据作为单个语料库从剪贴板中获取吗?我一直在做的只是拿一个文本文档并手动合并几千行到几十行,但我觉得这里必须有更好的解决方案。

1 个答案:

答案 0 :(得分:0)

我不能说出这个解决方案的效率,但它对我有用:

feedback <- Corpus(VectorSource(concat(dd$V1,collapse=" ")))

更新:我忘了提到concat()来自ngram包