首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何为R (topicmodels,lda,tm)中的主题建模做好数据准备?

如何为R (topicmodels,lda,tm)中的主题建模做好数据准备?
EN

Stack Overflow用户
提问于 2013-10-29 13:42:13
回答 2查看 5.1K关注 0票数 3

我有一个冗长的txt文件的语料库(622个文档),我试图在R中探索这些文件(每个文件大约20.000到30.000字),我已经使用tm包进行了一些基本的文本挖掘,现在我想深入探讨主题建模。然而,作为一个非常新的例子,我已经在数据准备的一些基础上苦苦挣扎了。我目前正在处理的文件的示例可以在这里获得:id=46554569218218543610

  1. 我认为,将这些冗长的文档输入主题建模工具是没有意义的。所以我想把它们分成几段(或者一组大概300-500字,因为我的数据中有很多多余的段落中断和OCR错误)。您是在VCorpus中这样做呢,还是应该实际划分我的源文件(例如,使用shell脚本)?有什么建议或经验吗?
  2. 文本来自OCR‘’ed杂志的文章,所以如果我把我的文档分开,我想我应该在这些段落中添加一个元数据标记,告诉我它最初发行的是哪个(基本上就是原始文件名),对吗?有什么容易做到的方法吗?
  3. 一般来说,有谁能推荐一个很好的关于R中主题建模的介绍吗?事实上,一份像三年级学生那样牵着我的手的教程会很棒。我正在使用“主题模型”和“lda”的文档,但对于新手来说,学习曲线相当陡峭。编辑:只是澄清一下,我已经阅读了很多关于主题建模的流行介绍(例如斯科特·温加特为历史学家提供的MALLET教程)。我在想一些与R.

希望这些问题不是完全多余的。谢谢你抽出时间阅读!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-10-29 18:23:24

在你的问题中没有代码,所以它并不适合这个网站。尽管如此,以下是一些可能有用的评论。如果您提供代码,您将得到更具体和有用的答案。

  1. 是。将文本分解成块是常见的,也是可取的。准确的尺寸是品味的问题。这通常是在R内完成的,我在制作语料库之前就已经做过了。您也可以只子集名词,如@holzben建议的。下面是一些将语料库分割成块的代码: corpus_chunk <-函数(x,语料库,n) {#转换语料库为字符向量消息列表(“将语料库转换为向量列表.”)列表词<-向量(“列表”,长度(语料库))用于(i in 1:length(语料库)){ listofwords[i] <- corpus[i] }消息(“完成”)#将每个向量划分为从http://stackoverflow.com/q/16232467/1036500 f <- function(x) {y <- unlist(str拆分(x,“”) ly <- length(y)拆分(y,gl(ly%/%n+1,n,ly)) }消息(“拆分文档为块.”)}消息(“拆分文档为块.”)listofnwords1 <- sapply(listofword,f) listofnwords2 <- unlist(listofnwords1,递归= FALSE)消息(“已完成”)#附加i来列出项目,这样我们就可以获得每个块长度<- sapply(1:length(列表词)、函数(I)长度(listofnwords1[i]))的书目数据(Listofnwords2) <- unlist(lapply(1:length(Length)、function(i) rep(x$书目数据$xi,lengthsi)名称(Listofnwords2) <- paste0(名称(Listofnwords2)、"_“、unlist(lapply(Lapply))函数(X)seq(1:X))返回(Listofnwords2)}
  2. 是的,您可以先从一些代码开始,然后再返回一个更具体的问题。所以你才能从这个网站中得到最大的好处。
  3. 有关文本挖掘和主题建模的基本介绍,请参阅Matthew的书用R语言对文学专业学生进行文本分析

如果您已经对MALLET有点熟悉,那么可以尝试使用rmallet进行主题建模。网络上有很多代码片段使用这个,这是我的一个

票数 3
EN

Stack Overflow用户

发布于 2013-10-29 17:54:17

我最近有一个类似的项目,通常,至少其中一些步骤已经完成:

  • 停止字移除:您可以通过tm包中的removeWords(your corpus, stopwords("english"))轻松地做到这一点。此外,您还可以构造自己的停止词列表,并通过相同的函数删除它。
  • 通常您也会删除数字和标点符号(请参阅tm包)。
  • 同样非常常见的是词干(请参阅维基百科中的解释)和删除稀疏的术语,这有助于减少术语文档矩阵的维度,而只损失很少的信息(包括tm和RWeka包)。
  • 有些人也喜欢只使用名词/专有名词或名词短语。有关概述和一些单词列表以及部分语音词典,请参见这里,您可以在凯文的单词列表页上找到。
  • 关于段落中的拆分:使用Rweka包中的NgramTokenizer (请参阅tm软件包常见问题 ),这应该是可能的。
  • 一篇关于预处理的好文章一般可以找到这里或更科学的这里
  • 关于元数据管理,请参阅tm封装小体
  • 关于R+主题模型的另一个例子可以找到Ponweiser 2012

我了解到文本挖掘有点不同。在一种情况下,改进的结果在另一种情况下就行不通了。这是很多测试,哪些参数和预处理步骤,改善您的results...So有乐趣!

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19659887

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档