【问题标题】:run TreeTagger through Python通过 Python 运行 TreeTagger
【发布时间】:2016-07-15 22:07:01
【问题描述】:

我是编程新手,但我有 python 3 的基础知识并安装了 treetagger,并且通过我的命令 shell 我可以 POS 标记文件。

但是,我试图自动打开并运行 Treetagger 的文件夹中有 427 个文件,但我不知道如何实现这一点。我目前的代码是这样的:

import os
import sys
import subprocess
import re

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

我想自动检查包含超过 427 个文件的文件夹并为适当的文件添加 POS 标记

我认为这需要以下内容的一些组合以及包括 SUBPROCESS 命令的代码才能让 TreeTagger 完成其工作,我绝对不明白如何使用,但试图从堆栈溢出的另一个问题的反馈中实现.

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

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

【问题讨论】:

    标签: python-3.x treetagger


    【解决方案1】:

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

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

    $ ls mydir/
    1.txt 2.txt 3.txt
    

    其中包含一些西班牙语文本。

    $ cat mydir/1.txt
    Esto es una prueba.
    

    然后你可以使用

    1. shell 的find 命令列出你关心的所有文件(例如所有以“.txt”结尾的文件

      find mydir/ -name "*.txt"

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

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

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

    1. shell 的重定向功能 (>) 将 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  .
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-09-05
      • 2020-08-01
      • 2020-02-01
      • 2023-04-08
      • 1970-01-01
      • 2017-09-08
      • 2013-11-06
      相关资源
      最近更新 更多