【问题标题】:multiple files input to stanford NER preserving naming for each output输入到 stanford NER 的多个文件保留每个输出的命名
【发布时间】:2015-04-11 11:15:01
【问题描述】:

我有很多文件,('05、'06 和 '07 的 NYTimes 语料库),我想通过 Stanford NER 运行它们,“简单”你可能会想,“只需按照README doc”,但如果你刚才这么想,那你就错了,因为我的情况有点复杂。我不希望它们都输出到乱七八糟的东西中,我想保留每个文件的命名结构,例如,一个文件被命名为1822873.xml,我之前使用以下命令对其进行了处理:

java -mx600m -cp /home/matthias/Workbench/SUTD/nytimes_corpus/stanford-ner-2015-01-30/stanford-ner-3.5.1.jar edu.stanford.nlp.ie.crf.CRFClassifier -loadClassifier classifiers/english.all.3class.distsim.crf.ser.gz -textFile /home/matthias/Workbench/SUTD/nytimes_corpus/1822873.xml -outputFormat inlineXML >> output.curtis

如果我要关注this question,即命令中一个接一个地列出了许多文件,然后将其传送到某个地方,那不就是将它们全部发送到同一个文件吗?这听起来像是最令人头疼的灾难。

有没有办法将每个文件发送到一个单独的输出文件,例如,我们的老朋友1822873.xml 会从这个过程中出现,比如1822873.output.xml,同样对于其他一千个奇怪的文件中的每一个.请记住,我正在努力实现这一目标expeditiously

我想这应该是可能的,但最好的方法是什么?使用某种终端命令,或者编写一个小脚本?

也许你们当中有人对这类事情有一些经验。

感谢您的考虑。

【问题讨论】:

    标签: java bash stanford-nlp


    【解决方案1】:

    如果您使用-filelist 选项和-outputDirectory 选项,您可以读取您希望处理的文件列表,以及您希望保存已处理文件的目录。示例:

    java -cp "*" -mx5g edu.stanford.nlp.pipeline.StanfordCoreNLP -prop annotators.prop -filelist list_of_files_to_process.txt -outputDirectory "my_output_directory"
    

    供参考,这里是list_of_files_to_process.txt的内容:

    C:/Users/dduhaime/Desktop/pq/analysis/data/washington_correspondence_data/collect_full_text/washington_full_text\02-09-02-0334.txt
    C:/Users/dduhaime/Desktop/pq/analysis/data/washington_correspondence_data/collect_full_text/washington_full_text\02-09-02-0335.txt
    C:/Users/dduhaime/Desktop/pq/analysis/data/washington_correspondence_data/collect_full_text/washington_full_text\02-09-02-0336.txt
    C:/Users/dduhaime/Desktop/pq/analysis/data/washington_correspondence_data/collect_full_text/washington_full_text\02-09-02-0337.txt
    

    这是我的annotators.prop 文件的内容:

    annotators = tokenize, ssplit, pos, lemma, ner, parse, dcoref, gender, sentiment, natlog, entitymentions, relation
    

    my_output_directory 的内容如下所示:

    【讨论】:

      【解决方案2】:

      更新

      您可以使用 bash 脚本 like this 来做到这一点。


      @duhaime 我试过了,但分类器有问题,是否可以将其输出公式化为内联 xml?

      关于我原来的问题,check out what I've found

      不幸的是,没有选项可以让多个输入文件转到 多个输出文件。在目前的情况下你能做的最好的 是为您拥有的每个输入文件运行一次 CRFClassifier。如果 你 有大量的小文件,加载模型会很昂贵 部分 这个操作,你可能想使用 CRFClassifier 服务器 通过客户端一次一个地编程和馈送文件。但是,我 怀疑是否值得付出努力,除非在特定情况下 有很多小文件。

      我们将尝试将此添加为下一个发行版的功能(我们 有一个普遍的修复日即将到来)但没有承诺。

      约翰

      我的文件都是按升序编号的,您认为可以编写某种带有循环的 bash 脚本来一次处理每个文件吗?

      【讨论】:

      • 我已经为 Python 做了这个;你可以运行一个 Python 脚本吗?您要加载哪个分类器?
      • @duhaime 我最终使用了像this这样的bash脚本来完成它
      • 很高兴你能到那里!
      • :) 谢谢。并且知道我非常感谢您考虑我最初的问题,从多个角度看待/思考事物总是好的。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多