Closed. This question does not meet Stack Overflow guidelines。它当前不接受答案。
想改善这个问题吗?更新问题,以便将其作为on-topic用于堆栈溢出。
6年前关闭。
Improve this question
我正在尝试在R中探索冗长的txt文件(每个文件大约20.000-30.000字)的语料库(622个文档)。我已经使用tm包进行了一些基本的文本挖掘,并希望深入研究主题现在建模。但是,由于对此很陌生,我已经在数据准备的一些基础方面苦苦挣扎。我当前正在使用的文件的示例可在此处找到:http://s000.tinyupload.com/?file_id=46554569218218543610
我假设仅将这些冗长的文档输入主题建模工具是没有意义的。因此,我想将它们分解为多个段落(或者,考虑到我的数据中有很多多余的段落中断和OCR错误,可以将其分解为300到500个单词的集合)。您是在VCorpus中执行此操作,还是应该实际划分源文件(例如使用Shell脚本)?有什么建议或经验吗? 文字来自OCR的杂志文章,因此,如果我拆分文档,我想我应该在这些段落中添加一个元数据标签,以告诉我它是来自哪个问题的(基本上只是原始文件名),正确?有没有一种方法可以轻松做到这一点? 一般来说,任何人都可以推荐R主题建模的良好动手入门吗?实际上,像我的三年级学生一样动手学习的教程会很棒。我正在使用“topicmodels”和“lda”的文档,但是对于新手来说,学习曲线相当陡峭。
编辑:请注意,我已经阅读了很多关于主题建模的热门介绍(例如Scott Weingart
和MALLET tutorials for Historians)。我在想
R. 中特定于进程的内容
希望这些问题不是完全多余的。感谢您抽出宝贵的时间阅读! 是的。将文本分成大块是常见且可取的。确切的尺寸取决于口味。它通常是在R中完成的,我在制作主体之前就已经完成了。您也可以只对名词进行子集化,例如@holzben建议。这里有一些将语料库切成块的代码:
是的,您可以先编写一些代码,然后再提出更具体的问题。这样您才能充分利用本网站的资源。 有关文本挖掘和主题建模的基本介绍,请参见Matthew Jockers的书Text Analysis with R for Students of Literature
如果您已经对MALLET有所了解,请尝试使用
想改善这个问题吗?更新问题,以便将其作为on-topic用于堆栈溢出。
6年前关闭。
Improve this question
我正在尝试在R中探索冗长的txt文件(每个文件大约20.000-30.000字)的语料库(622个文档)。我已经使用tm包进行了一些基本的文本挖掘,并希望深入研究主题现在建模。但是,由于对此很陌生,我已经在数据准备的一些基础方面苦苦挣扎。我当前正在使用的文件的示例可在此处找到:http://s000.tinyupload.com/?file_id=46554569218218543610
编辑:请注意,我已经阅读了很多关于主题建模的热门介绍(例如Scott Weingart
和MALLET tutorials for Historians)。我在想
R.
希望这些问题不是完全多余的。感谢您抽出宝贵的时间阅读!
最佳答案
您的问题中没有代码,因此它实际上不适合该网站。就是说,这里有一些可能有用的评论。如果提供代码,您将获得更具体和有用的答案。
corpus_chunk <- function(x, corpus, n) {
# convert corpus to list of character vectors
message("converting corpus to list of vectors...")
listofwords <- vector("list", length(corpus))
for(i in 1:length(corpus))
{
listofwords[[i]] <- corpus[[i]]
}
message("done")
# divide each vector into chunks of n words
# from http://stackoverflow.com/q/16232467/1036500
f <- function(x)
{
y <- unlist(strsplit(x, " "))
ly <- length(y)
split(y, gl(ly%/%n+1, n, ly))
}
message("splitting documents into chunks...")
listofnwords1 <- sapply(listofwords, f)
listofnwords2 <- unlist(listofnwords1, recursive = FALSE)
message("done")
# append IDs to list items so we can get bibliographic data for each chunk
lengths <- sapply(1:length(listofwords), function(i) length(listofnwords1[[i]]))
names(listofnwords2) <- unlist(lapply(1:length(lengths), function(i) rep(x$bibliodata$x[i], lengths[i])))
names(listofnwords2) <- paste0(names(listofnwords2), "_", unlist(lapply(lengths, function(x) seq(1:x))))
return(listofnwords2)
}
如果您已经对MALLET有所了解,请尝试使用
rmallet
进行主题建模。网络上有很多使用此代码段的here's one of mine。