在R中输入treetagger,其中包含字符串中的文本而不是文件中的文本

时间:2014-06-14 06:46:05

标签: r nlp tokenize

我使用R的TreeTagger,通过Korpus包。 调用treetag函数需要我指出文件名, 其中包含要处理的文本。但是,我想提供一个字符串 而不是文件名,因为我对这个字符串做了一些初步的文本处理。 我想这必须通过一个文件,因为它正在包装一个脚本调用。 当我循环遍历10000个文本时,我想避免将文件写入磁盘并浪费时间, 但只是流经记忆。 我可以避免这个吗?感谢。

2 个答案:

答案 0 :(得分:1)

没有。或者不是真的。如您所料,外部脚本需要一个文件:

阅读文档:

  

连接或字符向量,文件的有效路径,   包含要分析的文本。如果file是连接,则为   内容将被写入临时文件,因为TreeTagger不能   从R连接对象中读取。

因此,必须将其写入文件以供外部TreeTagger二进制文件读取。如果您不这样做,那么treetag功能会为您完成。无论哪种方式,文本都以文件结尾。

如果TreeTagger可以从Unix命名管道或fifo读取,那么您可以动态地将文本流式传输到它。

唯一的另一个选择是查看TreeTagger源是否可以某种方式与R链接,以便您可以直接调用其中一个子例程,并传递一个R对象。我甚至不知道这是用Java还是C ++编写的,但无论如何它都可能是一个很大的工作。

答案 1 :(得分:1)

如文件中所示:

  

格式:   “文件”或“obj”,具体取决于您是要扫描文件还是分析给定对象中的文本,如字符向量。如果是后者,它将被写入临时文件(见文件)。

使用这些知识,我们可以简单地将treetag() - 函数与字符向量结合使用:

treetag(as.vector(yourinput), format = "obj"). 

内部R将其转换为文本文件,Treetagger将引用该临时文件并对其进行分析。