多个文件输入到斯坦福 NER 保留每个输出的命名

multiple files input to stanford NER preserving naming for each output

我有很多文件,('05、'06 和 '07 的纽约时报语料库),我想 运行 通过 Stanford NER、"easy" 你可能会想,"just follow the commands in the 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

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

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

感谢您的考虑。

如果你使用-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-09-02-0334.txt
C:/Users/dduhaime/Desktop/pq/analysis/data/washington_correspondence_data/collect_full_text/washington_full_text-09-02-0335.txt
C:/Users/dduhaime/Desktop/pq/analysis/data/washington_correspondence_data/collect_full_text/washington_full_text-09-02-0336.txt
C:/Users/dduhaime/Desktop/pq/analysis/data/washington_correspondence_data/collect_full_text/washington_full_text-09-02-0337.txt

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

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

下面是 my_output_directory 的内容:

更新

您可以使用 bash 脚本


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

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

Unfortunately, there is no option to have multiple input files go to multiple output files. The best you can do in the current situation is to run the CRFClassifier once for each input file you have. If you have a ton of small files, loading the model will be an expensive part of this operation, and you might want to use the CRFClassifier server program and feed files one at a time through the client. However, I doubt that will be worth the effort except in the specific case of having very many small files.

We will try to add this as a feature for the next distribution (we have a general fix-it day coming up) but no promises.

John

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