输入到stanford NER的多个文件保留每个输出的命名

时间:2015-04-11 11:15:01

标签: java bash stanford-nlp

我有很多文件,(纽约时报语料库' 05,' 06,&' 07),我希望在Stanford NER中运行它们,&# 34;易"您可能会想,"只需按照自述文件中的命令进行操作即可,但如果您认为这样,那就错了,因为我的情况有点复杂。我不希望它们全部输出到一些大混乱中,我想保留每个文件的命名结构,例如,一个文件名为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

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

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

感谢您的考虑。

2 个答案:

答案 0 :(得分: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的内容: enter image description here

答案 1 :(得分:0)

<强>更新

你可以使用bash脚本like this来完成。


@duhaime我试过了,但是我遇到了分类器的问题,是否有可能将内联xml的输出表示为?

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

  
    
      
        
          
            

不幸的是,没有多个输入文件可供选择的选项             多个输出文件。在目前的情况下你能做的最好             是为每个输入文件运行一次CRFClassifier。如果             您             有大量的小文件,加载模型将是一个昂贵的             部分             此操作,您可能想要使用CRFClassifier             服务器             通过客户端一次编程和提供文件。但是,我             怀疑除了特定的情况外,这将是值得的             有很多小文件。

                         

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

                         

约翰

          
        
      
    
  

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