Вызов Brill Tagger через C # - PullRequest
0 голосов
/ 28 марта 2012

Мы хотим использовать Brill Tagger, чтобы при нажатии кнопки он помечал Input.txt в output.txt. Итак, мы создали новый проект Visual Studio и поместили кнопку. На событие нажатия кнопки мы написали следующий код. Ошибок нет, и мы видим, как вызывается командная строка. Но выходной файл не создается. Код выглядит следующим образом. не могли бы вы направить нас ??

private void button1_Click(object sender, EventArgs e)
    {

     ProcessStartInfo brillStartInfo = new ProcessStartInfo(@"C:\Users\toshal\Documents\Visual Studio 2008\Projects\brill tagger\bin\brill.exe");
        brillStartInfo.Arguments = "/C brill.exe LEXICON.BROWN Input.txt BIGRAMS LEXICALRULEFILE.BROWN CONTEXTUALRULEFILE.BROWN > output.txt";

        brillStartInfo.UseShellExecute = false;
        brillStartInfo.RedirectStandardOutput = true;
        brillStartInfo.RedirectStandardError = true;
        brillStartInfo.CreateNoWindow = false;

        Process brill = new Process();
        brill.StartInfo = brillStartInfo;
        brill.Start();
        string output = brill.StandardOutput.ReadToEnd();
        brill.WaitForExit();

    }

Ответы [ 3 ]

0 голосов
/ 28 марта 2012

Они так пишут ваш код, я думаю, он должен выглядеть так:

private void button1_Click(object sender, EventArgs e)
{

    ProcessStartInfo brillStartInfo = new ProcessStartInfo("cmd");
    brillStartInfo.Arguments = "/C brill.exe LEXICON.BROWN Input.txt BIGRAMS LEXICALRULEFILE.BROWN CONTEXTUALRULEFILE.BROWN > output.txt";
    brillStartInfo.WorkingDirectory = @"C:\Users\toshal\Documents\Visual Studio 2008\Projects\brill tagger\bin\";

    brillStartInfo.UseShellExecute = false;
    brillStartInfo.CreateNoWindow = false;

    Process brill = new Process();
    brill.StartInfo = brillStartInfo;
    brill.Start();
    brill.WaitForExit();
}

Важное изменение: исполняемый файл для выполнения - cmd, и вам необходимо установить в рабочем каталоге каталог brill.exe, чтобы иметь возможность использовать его в аргументах без указания пути.

0 голосов
/ 28 марта 2012

Вывод программы перенаправляется в файл output.txt. Если вы позволите программе генерировать вывод на консоль, то string output = brill.StandardOutput.ReadToEnd(); вернет результат тегирования. В противном случае вы должны открыть и прочитать файл явно.

0 голосов
/ 28 марта 2012

IMO файл создан, но не в ожидаемой директории.Причина в том, что вы запускаете cmd, значение которого по умолчанию WorkingDirectory C:\Windows\system32, просто укажите полный путь к выходному файлу и должно работать или установить свойство process.WorkingDirectory.

Более того, вы хотите перенаправить вывод вашегоЗапрограммируйте приложение C #, вам не следует перенаправлять его в командной строке.

Либо вы перенаправляете свой вывод в файл с > "outputpath", либо перенаправляете вывод в приложение C #, затем удаляете >output, обане может быть сделано.

...