我是编程新手,但我已经掌握了python3的基础知识,并且已经安装了treetagger,并且通过我的命令shell,我可以创建POS标记文件。
然而,我在一个文件夹中有427个文件,我试图通过Treetagger自动打开并运行,但我不太清楚如何实现这一点。我当前的代码如下:
import os
import sys
import subprocess
import re
rootdir = r"/Spanish_(ACTIV-es)_corpus/plain"我想自动检查超过427个文件的文件夹,并有适当的文件POS标签
我认为这需要一些以下代码的组合以及包括SUBPROCESS命令的代码来让TreeTagger完成它的工作,我绝对不知道如何使用,但从另一个关于堆栈溢出的问题的反馈中尝试实现。

如何让movie_pos成为treetagger在遍历文件夹中的文件时POS标记的文件?
然后:输出??我是否需要已经为输出创建了427个单独的文件,或者有没有一种方法可以让输出自动修改输入的标题,这样输出就不会被混淆。(在文件标题中,是当前存储元数据的位置)。
发布于 2016-09-23 21:01:16
使用Python是标记文件的严格要求吗?如果没有,只需使用shell就可以轻松实现,方法是循环遍历文件夹中的文件,在每个文件上运行TreeTagger,然后将其保存(就像您正确假设的那样)到一个具有不同名称的文件中。
例如,下面是一个包含3个文件的目录:
$ ls mydir/
1.txt 2.txt 3.txt里面有一些西班牙语文本。
$ cat mydir/1.txt
Esto es una prueba.然后,您可以使用
find命令,列出您关心的所有文件(例如,所有以".txt“结尾的文件find mydir/ -name "*.txt"
for命令循环遍历find的结果(使用反引号),并对每个结果运行TreeTagger$ for i in `find ....`; do tag_command_using_$i; done
(保存每个文件路径的变量$i)
>),用于将TreeTagger的输出(通常在屏幕上看到的)重定向到一个可以使用原始文件的名称进行适当命名的文件tag_command $i > $i.tagged
在一行代码中,它看起来像这样:
$ for i in `find mydir/ -name "*.txt"`; do cat $i | cmd/tree-tagger-spanish > $i.tagged; done完成后,您将在同一文件夹中拥有新创建的文件:
$ ls mydir/
1.txt 1.txt.tagged 2.txt 2.txt.tagged 3.txt 3.txt.tagged
$ cat mydir/1.txt.tagged
Esto es ADV esto~es
una ART un
prueba NC prueba
. FS .https://stackoverflow.com/questions/36265885
复制相似问题