2017-07-24 34 views
0

我是数据科学领域的文学学生。我试图分析一个包含70个.txt文件的语料库,这些文件都在一个目录中。使用R和koRpus编译和分析语料库

我的最终目标是获得一个包含文件名(或类似内容),句子和单词计数,Flesch-Kincaid可读性评分和MTLD词汇多样性分数的表格。

我发现了包koRpus和tm(和tm.plugin.koRpus),并试图理解他们的文档,但还没有走到很远。在RKward IDE和koRpus-Plugin的帮助下,我可以一次获得一个文件的所有这些度量,并且可以手动将这些数据复制到一个表中,但这非常麻烦,而且还有很多工作要做。

我到目前为止已经试过这是命令创建的我的文件语料库:

simpleCorpus(dir = "/home/user/files/", lang = "en", tagger = "tokenize", 
encoding = "UTF-8", pattern = NULL, recursive = FALSE, ignore.case = FALSE, mode = "text", source = "Wikipedia", format = "file", 
mc.cores = getOption("mc.cores", 1L)) 

但我总是得到错误:

Error in data.table(token = tokens, tag = unk.kRp):column or argument 1 is NULL). 

如果有人可以帮助一个绝对的新手到R我会非常感激!

+2

欢迎来到堆栈溢出,请抽出时间通过[欢迎游览](https://stackoverflow.com/tour)了解你在这里的方式(并获得你的第一个徽章),阅读如何[创建一个最小,完整和可验证的示例](https://stackoverflow.com/help/mcve),并检查[如何提出好问题](https://stackoverflow.com/help/how-to-ask ),所以你增加了获得反馈和有用答案的机会。 –

+0

看起来你的问题更像是一系列的问题,我想大多数问题已经有了答案。第一个,f.ex .: [如何读取多个文本文件](https://stackoverflow.com/questions/3397885/how-do-you-read-in-multiple-txt-files-into-r )。从头开始,一次解决一个问题。如果你碰到一个真正的障碍,那就问一个问题。 “教我如何编码”类型的问题在StackOverflow上没有地位。 – AkselA

+0

对此我很抱歉,我会尝试编辑我的帖子,让我的问题更清晰一些(问题不在于读取文本本身,而是让它们进入koRpus。 – SamVimes

回答

0

我已经发现了与unDocUMeantIt,包的作者的帮助下解决(谢谢!)。目录中的空文件导致错误,删除后我设法让所有内容都运行。

0

这是一个非常全面的演练......如果我是你,我会一步步走过这一步。

http://tidytextmining.com/tidytext.html

+0

谢谢!我已经看了一下,但我对分析句子/文本级别而不是单词级别感兴趣,所以我认为这不适合我的用例。尽管如此,我仍然保存了这个链接,因为它将来可能会很有趣。 – SamVimes

0

我建议你看看我们的小插曲quanteda,Digital Humanities Use Case: Replication of analyses from Text Analysis with R for Students of Literature,它复制了Matt Jocker的同名书。

对于你在找什么上面,下面将工作:

require(readtext) 
require(quanteda) 

# reads in all of your texts and puts them into a corpus 
mycorpus <- corpus(readtext("/home/user/files/*")) 

# sentence and word counts 
(output_df <- summary(mycorpus)) 

# to compute Flesch-Kincaid readability on the texts 
textstat_readability(mycorpus, "Flesch.Kincaid") 

# to compute lexical diversity on the texts 
textstat_lexdiv(dfm(mycorpus)) 

textstat_lexdiv()功能目前不支持MLTD,但我们正在努力就可以了,它确实有半打他人。