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