多个文件输入到斯坦福 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 带有循环的脚本来一次处理一个文件吗?
我有很多文件,('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 带有循环的脚本来一次处理一个文件吗?