我有一个包含大约 6000 个句子的文本文件,每个句子都有自己的一行。我想在 Windows 命令提示符下使用 Stanford Parser 来解析句子。但是,我需要一次向解析器发送一个句子(因为这些句子与另一个文件的句子对齐)。
我想编写一个 Perl 包装器:将输入文件中的一句话写入临时文件,将临时文件发送到解析器,解析一句话,将解析后的输出写入输出文件,然后将输出文件写入我的大输出文件 ParsedOutput.txt。
这可能是一件非常基本的事情,但我被困住了。任何帮助或指导将不胜感激。
谢谢!:)
编辑:这是我迄今为止尝试过的:
open (ENGDATA, "<1tot1660.txt");
open (ENGDATAOUT, ">temp.txt");
while (<ENGDATA>)
{
my $line = $_;
chomp $line;
while ($line)
{
my @OneLine = $line;
print ENGDATAOUT "$OneLine[0]\n";
shift(@OneLine);
}
}
我在想:将每一行作为数组中的一个元素,将第 0 个元素写入临时输出文件,然后删除第一个元素(这样就不会意外再次使用它)。我基本上被整个程序卡住了,但目前:在(一次)写一行到临时输出文件时。
编辑!(再次......谢谢,TLP 和 amon!:))这就是我最终所做的:
open (ENGDATA, "<Testing10.txt");
open (ENGDATAOUT, ">TempOut.txt");
open (PARSEDOUT, ">ParsedOutput.txt");
while (<ENGDATA>)
{
my $line = $_;
chomp $line;
my $inputfilename = $line;
print ENGDATAOUT "$line\n";
my $parsecommand = qx(java -mx150m -cp "*;" edu.stanford.nlp.parser.lexparser.LexicalizedParser -outputFormat "penn,typedDependencies" edu/stanford/nlp/models/lexparser/englishPCFG.ser.gz $inputfilename);
print PARSEDOUT "$parsecommand\n";
}
现在,我的输入中的每个单词都会出现此错误:
解析文件:上级 edu.stanford.nlp.process.DocumentPreprocessor:无法打开路径上级 解析文件:上级 [0 句]。
这是怎么回事?有谁知道,你能帮忙吗?谢谢!