我正在识别大型语料库中的资格。我正在使用NamedEntityTagAnnotation。
问题:
我的注释被视为区分大小写。我希望它们不区分大小写。 因此
学士学位学位
不需要额外输入
学士学位学位
我知道这是可能的。 RegexNERAnnotator有一个ignoreCase字段。但我不知道如何通过API访问RegexNERAnnotator。
我目前的代码(我从互联网上打断并与案件问题分开工作)如下:
String prevNeToken = "O";
String currNeToken = "O";
boolean newToken = true;
for (CoreLabel token : sentence.get(TokensAnnotation.class))
{
currNeToken = token.get(NamedEntityTagAnnotation.class);
String word = token.get(TextAnnotation.class);
if (currNeToken.equals("O"))
{
if (!prevNeToken.equals("O") && (sbuilder.length() > 0))
{
handleEntity(prevNeToken, sbuilder, tokens);
newToken = true;
}
continue;
}
if (newToken)
{
prevNeToken = currNeToken;
newToken = false;
sbuilder.append(word);
continue;
}
if (currNeToken.equals(prevNeToken))
{
sbuilder.append(" " + word);
}
else
{
handleEntity(prevNeToken, sbuilder, tokens);
newToken = true;
}
prevNeToken = currNeToken;
}
非常感谢任何协助。
答案 0 :(得分:2)
答案在于如何设置管道。
Properties props = new Properties();
props.put("annotators", "tokenize, ssplit, pos, lemma, ner, parse, regexner, depparse, natlog, openie");
//props.put("regexner.mapping", namedEntityPropertiesPath);
pipeline = new StanfordCoreNLP(props);
pipeline.addAnnotator(new TokensRegexNERAnnotator(namedEntityPropertiesPath, true));
不使用props.put(" regexner.mapping",namedEntityPropertiesPath);
使用pipeline.addAnnotator。
构造函数的第一个参数是NER数据文件的路径。第二个是布尔caseInsensitive。
请注意,这会使用斯坦福大学的NER列表以及您自己的NER列表。它还使用更复杂的NER数据文件。
请参阅http://nlp.stanford.edu/nlp/javadoc/javanlp/edu/stanford/nlp/pipeline/TokensRegexNERAnnotator.html