Я использую приложение Stanford POS-tagger для маркировки некоторых статей примерно в 300 файлах. Для этого я написал код C#, который будет просматривать файлы и использовать тегировщик.
Мой код выглядит так:
Process thisProcess=new Process();
thisProcess.StartInfo.CreateNoWindow=true;
thisProcess.StartInfo.WindowStyle=ProcessWindowStyle.Hidden;
thisProcess.StartInfo.WorkingDirectory=@"C:\postagger";
thisProcess.StartInfo.FileName=@"C:\postagger\stanford-postagger.bat";
thisProcess.StartInfo.UseShellExecute=false;
thisProcess.StartInfo.RedirectStandardOutput=true;
if(Directory.Exists(@"C:\brown2")) {
DirectoryInfo brown=new DirectoryInfo(@"C:\brown2");
DirectoryInfo brownParsed;
if(!Directory.Exists(@"C:\brown-parsed"))
brownParsed=Directory.CreateDirectory(@"C:\brown-parsed");
else
brownParsed=new DirectoryInfo(@"C:\brown-parsed");
FileInfo[] files=brown.GetFiles();
foreach(FileInfo f in files) {
Console.WriteLine("Parsing file "+f.Name+" ...");
thisProcess.StartInfo.Arguments=@"C:\postagger\models\wsj-0-18-bidirectional-distsim.tagger "+f.FullName;
//Console.WriteLine(thisProcess.StartInfo.Arguments);
thisProcess.Start();
thisProcess.WaitForExit();
//Console.Read();
StreamWriter sw=new StreamWriter(Path.Combine(brownParsed.FullName, f.Name), false);
string output=thisProcess.StandardOutput.ReadToEnd();
//sw.Write(thisProcess.StandardOutput.ReadToEnd());
sw.Write(output);
sw.Flush();
sw.Close();
//Console.WriteLine("File {0} done!",f.Name);
Console.WriteLine(output);
}
}
else
Console.WriteLine("Dir not found!");
Console.Read();
И stanford-postagger.bat выглядит так:
использование: текстовый файл модели stanford-postagger, например, stanford-postagger models\left3words-wsj-0-18.tagger sample-input.txt
java -mx300m -cp stanford-postagger.jar; edu.stanford.nlp.tagger.maxent.MaxentTagger -model %1 -textFile %2
Проблема в:
Код запускает его, но он НЕ запускает команду java. Я попробовал это на своем ноутбуке, и он работает как шарм, он помечает. Но он не будет помечать большие файлы из-за нехватки памяти. Но на моем ПК, который более мощный, он не запустит java.
Если я открою CMD и введу эту java-команду с правильными параметрами для файла, она сработает. Любая идея о том, что может привести к тому, что это не сработает? Все пути хорошие, трижды проверял.
Вот пример вывода, который я получаю от неработающей программы (на моем ПК):
C:\postagger›java -mx300m -cp stanford-postagger.jar; edu.stanford.nlp.tagger.maxent.MaxentTagger -model C:\postagger\models\wsj-0-18-bidirectional-distsim.tagger -textFile C:\brown2\aaa.txt