java - 如何将输出写入文本文件,与 show() 函数显示的输出相同

标签 java function parsing file-io opennlp

我可以知道如何将输出写入文本文件,与 show() 函数显示的输出相同。例如,当我执行此代码时:

    p.show();

输出:

    (TOP (S (NP (PRP$ My) (NN name)) (VP (VBZ is) (NP (NNP David.))))

当我执行这段代码时:

     System.out.println(p.toString());

输出:

    My name is David.

因此,当我尝试使用以下代码将此输出写入文本文件时:

    fout.write((p.toString()+newline).getBytes());

文本文件中的输出与“System.out.println(p.toString());”显示的输出相同。

那么,如何将 show() 函数所示的相同输出写入文本文件?

完整代码:

    package com.mycompany.app;

    import java.io.BufferedReader; 
    import java.io.DataInputStream;
    import java.io.FileInputStream;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.InputStreamReader;
    import opennlp.tools.cmdline.parser.ParserTool;
    import opennlp.tools.parser.Parse;
    import opennlp.tools.parser.Parser;
    import opennlp.tools.parser.ParserFactory;
    import opennlp.tools.parser.ParserModel;
    import opennlp.tools.sentdetect.SentenceDetectorME;
    import opennlp.tools.sentdetect.SentenceModel;

    public class ChunkParser {
    public static void main(String[] args) throws IOException {

    InputStream modelIn = new FileInputStream("D:/NetBeansProjects/my-app/src/main/resources/en-parser-chunking.zip");
    FileInputStream fin=new FileInputStream("D:/NetBeansProjects/my-app/textfile.txt");
    DataInputStream in = new DataInputStream(fin);
    BufferedReader br = new BufferedReader(new InputStreamReader(in));
    String strLine=br.readLine();
    System.out.println("Full Text: "+"\n"+strLine+"\n");

    try {
    ParserModel pmodel = new ParserModel(modelIn);
    Parser parserc = ParserFactory.create(pmodel);
    Parse topParses[] = ParserTool.parseLine(strLine, parserc, 1);

    FileOutputStream fout=new FileOutputStream("D:/NetBeansProjects/my-app/ChunkParser.txt");
    String newline = System.getProperty("line.separator");
    for (Parse p : topParses){
            p.show();
            System.out.println(p.toString());
            fout.write((p.toString()+newline).getBytes());


    }

    fout.close();
    }
    catch (IOException e) {
    e.printStackTrace();
    }
    finally {
    if (modelIn != null) {
    try {
    modelIn.close();
    }
    catch (IOException e) {
    }
    }
    fin.close();
    }
    }
    }

最佳答案

不要调用 p.show(),而是使用 p.show(sb),其中 sb 是 StringBuffer。然后您可以从 StringBuffer 中获取文本。下次再深入看看opennlp的文档。

关于java - 如何将输出写入文本文件,与 show() 函数显示的输出相同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16977304/

相关文章:

c++ - std::function 和 lambda 参数的段错误

javascript - 在 Typescript 中将接口(interface)转换为函数参数

parsing - 利用 ANTLR 4 的左递归消歧

java - 在循环中将数据添加到数组

java - INSERT ELSE UPDATE 没有主键的表中的行

c++ - 非STL函数对象回调使用

c# - 如何计算一串混合文本/数字中的数字

python - 如何使用 BeautifulSoup 加速解析 10MB 的 HTML 文件

java - 使异步查询同步

java - 如何使用 HQL(Hibernate 查询语言)获取列的最后一个值