首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过Python运行TreeTagger

通过Python运行TreeTagger
EN

Stack Overflow用户
提问于 2016-03-28 23:53:18
回答 1查看 310关注 0票数 0

我是编程新手,但我已经掌握了python3的基础知识,并且已经安装了treetagger,并且通过我的命令shell,我可以创建POS标记文件。

然而,我在一个文件夹中有427个文件,我试图通过Treetagger自动打开并运行,但我不太清楚如何实现这一点。我当前的代码如下:

代码语言:javascript
复制
import os
import sys
import subprocess
import re

rootdir = r"/Spanish_(ACTIV-es)_corpus/plain"

我想自动检查超过427个文件的文件夹,并有适当的文件POS标签

我认为这需要一些以下代码的组合以及包括SUBPROCESS命令的代码来让TreeTagger完成它的工作,我绝对不知道如何使用,但从另一个关于堆栈溢出的问题的反馈中尝试实现。

如何让movie_pos成为treetagger在遍历文件夹中的文件时POS标记的文件?

然后:输出??我是否需要已经为输出创建了427个单独的文件,或者有没有一种方法可以让输出自动修改输入的标题,这样输出就不会被混淆。(在文件标题中,是当前存储元数据的位置)。

EN

回答 1

Stack Overflow用户

发布于 2016-09-23 21:01:16

使用Python是标记文件的严格要求吗?如果没有,只需使用shell就可以轻松实现,方法是循环遍历文件夹中的文件,在每个文件上运行TreeTagger,然后将其保存(就像您正确假设的那样)到一个具有不同名称的文件中。

例如,下面是一个包含3个文件的目录:

代码语言:javascript
复制
$ ls mydir/
1.txt 2.txt 3.txt

里面有一些西班牙语文本。

代码语言:javascript
复制
$ cat mydir/1.txt
Esto es una prueba.

然后,您可以使用

  1. 外壳的find命令,列出您关心的所有文件(例如,所有以".txt“结尾的文件

find mydir/ -name "*.txt"

  • the for命令循环遍历find的结果(使用反引号),并对每个结果运行TreeTagger

$ for i in `find ....`; do tag_command_using_$i; done

(保存每个文件路径的变量$i)

  1. 外壳的重定向特性(>),用于将TreeTagger的输出(通常在屏幕上看到的)重定向到一个可以使用原始文件的名称进行适当命名的文件

tag_command $i > $i.tagged

在一行代码中,它看起来像这样:

代码语言:javascript
复制
$ for i in `find mydir/ -name "*.txt"`; do cat $i | cmd/tree-tagger-spanish > $i.tagged; done

完成后,您将在同一文件夹中拥有新创建的文件:

代码语言:javascript
复制
$ 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  .
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36265885

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档