xml 斯坦福 pos 标记器格式

xml format in stanford pos tagger

我标记了 20 个句子,这是我的代码:

public class myTag {

public static void main(String[] args) {

    Properties props = new Properties();

    try {
        props.load(new FileReader("D:/tagger/english-bidirectional-distsim.tagger.props"));
    } catch (FileNotFoundException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    
    MaxentTagger tagger = new MaxentTagger("D:/tagger/english-bidirectional-distsim.tagger",props);
    
    //==================================================================================================
    try (BufferedReader br = new BufferedReader(new FileReader("C:/Users/chelsea/Desktop/EN/EN.txt")))
    {

        String sCurrentLine;

        while ((sCurrentLine = br.readLine()) != null) {
            
            String tagged = tagger.tagString(sCurrentLine);
            System.out.println(tagged);
        }

    } catch (IOException e) {
        e.printStackTrace();
    }
    
}

}

这是输出:

正如您在句子节点中看到的那样,它有一个 Id 属性,这里它始终为 0,它不应该 be.i 期望值为 0,1,2,3,4,... 我不明白我的代码有什么问题。

Stanford 词性标注器(严格来说,在词性注释器之前应用的句子拆分器)为每个输入文本的句子生成 ID。 所以,你要求 tagger 标记由一个句子组成的 sCurrentLine,这个文本被分成句子——实际上,只有一个,id = 0;然后你要求从下一次迭代中标记另一个文本 - sCurrentLine - 它又是唯一的句子,因此它是第一个 id = 0 的句子;等等。

因此,如果您想要正确的id,首先创建整个文本,然后将其传递给tagger。但是,如果您的输入文本已经被句子分割,最好保持原样(如果需要,可以在循环中自行生成 ID)。