在斯坦福CoreNLP TokensRegex中,用于从匹配的token中获取结果数据的Annotation类是什么?

本文关键字:结果 获取 token 数据 Annotation 是什么 TokensRegex CoreNLP 斯坦福 用于 | 更新日期: 2023-09-27 18:05:59

我正在使用c#,这是我如何试图获得基于斯坦福Corenlp文档的结果的代码片段。

我不知道该使用哪个注释:

Annotation document = new Annotation(input);
pipeline.annotate(document);
var sentences = document.get(new CoreAnnotations.SentencesAnnotation().getClass()) as ArrayList;
foreach (CoreMap sentence in sentences)
{
    var tokens = sentence.get(new CoreAnnotations.TokensAnnotation().getClass()) as ArrayList;
    TokenSequencePattern pattern = TokenSequencePattern.compile("([ner: PERSON]+) /was|is/ /an?/ []{0,3} /painter|artist/");
    TokenSequenceMatcher matcher = pattern.getMatcher(tokens);
    while (matcher.find())
    {
        String matchedString = matcher.group();
        var matchedTokens = matcher.groupNodes() as ArrayList;
        foreach (CoreLabel matchedToken in matchedTokens)
        {
            //matchedToken.get(new CoreAnnotations.TokensAnnotation().getClass()));
            //Which Annotation class to use in order to get result data from matched token?
        }    
    }
}

在斯坦福CoreNLP TokensRegex中,用于从匹配的token中获取结果数据的Annotation类是什么?

我不知道你想要什么。matchedTokens中的每个标记与句子中的其他标记具有相同的注释。

如果您想获得第一个捕获组(([ner: PERSON]+)部分),那么您应该使用matcher.group(1)matcher.groupNodes(1)。有关匹配结果的其他函数,请参阅http://nlp.stanford.edu/nlp/javadoc/javanlp/edu/stanford/nlp/ling/tokensregex/BasicSequenceMatchResult.html。