我有一个MS Word文档的混合文件类型集合.有些文件是*.doc,有些是*.docx.我正在学习使用tm并且我(或多或少*)使用以下方法成功创建了由*.doc文件组成的语料库:
ex_eng <- Corpus(DirSource('~/R/expertise/corpus/english'),
readerControl=list(reader=readDOC,
language='en_CA',
load=TRUE));
Run Code Online (Sandbox Code Playgroud)
此命令不处理*.docx文件.我认为我需要一个不同的读者.从这篇文章中,我了解到我可以编写自己的文章(很好地理解我目前没有的.docx格式).
readDOC阅读器使用antiword来解析*.doc文件.是否有类似的应用程序将解析*.docx文件?
或者更好的是,是否已经有一种使用tm创建*.docx文件语料库的标准方法?
*或多或少,因为虽然文件进入并且可读,但我对每个文档都会收到此警告: In readLines(y, encoding = x$Encoding) : incomplete final line found on 'path/to/a/file.doc'
.docx文件是压缩的XML文件.如果你执行这个:
> uzfil <- unzip(file.choose())
Run Code Online (Sandbox Code Playgroud)
然后.docx在您的目录中选择一个文件,您将获得:
> str(uzfil)
chr [1:13] "./[Content_Types].xml" "./_rels/.rels" "./word/_rels/document.xml.rels" ...
> uzfil
[1] "./[Content_Types].xml" "./_rels/.rels" "./word/_rels/document.xml.rels"
[4] "./word/document.xml" "./word/theme/theme1.xml" "./docProps/thumbnail.jpeg"
[7] "./word/settings.xml" "./word/webSettings.xml" "./word/styles.xml"
[10] "./docProps/core.xml" "./word/numbering.xml" "./word/fontTable.xml"
[13] "./docProps/app.xml"
Run Code Online (Sandbox Code Playgroud)
这也将默默地将所有这些文件解压缩到您的工作目录.该"./word/document.xml"文件包含您要查找的单词,因此您可以使用XML包中的一个XML工具来阅读它们.我猜你会做一些事情:
library(XML)
xtext <- xmlTreeParse(unz(uzfil[4]), useInternalNodes = TRUE) )
Run Code Online (Sandbox Code Playgroud)
实际上,您可能需要将其保存到临时目录并将该路径添加到文件名"./word/document.xml".
你可能想在这个答案中使用@GaborGrothendieck提供的进一步的步骤:如何使用R从CrossRef中提取xml数据?
| 归档时间: |
|
| 查看次数: |
4056 次 |
| 最近记录: |