本文整理汇总了Java中opennlp.tools.chunker.ChunkerME.chunkAsSpans方法的典型用法代码示例。如果您正苦于以下问题:Java ChunkerME.chunkAsSpans方法的具体用法?Java ChunkerME.chunkAsSpans怎么用?Java ChunkerME.chunkAsSpans使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类opennlp.tools.chunker.ChunkerME
的用法示例。
在下文中一共展示了ChunkerME.chunkAsSpans方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。
示例1: chunk
import opennlp.tools.chunker.ChunkerME; //导入方法依赖的package包/类
/**
* 利用open nlp进行chunk,并添加一些修正规则
*
* @param words
*
* @return
*
* @throws Exception
*/
public static List<ChunkPhrase> chunk(List<Word> words) throws Exception {
List<ChunkPhrase> phrases = new ArrayList<ChunkPhrase>();
int wordsCount = words.size();
String[] toks = new String[wordsCount - 1]; // 忽略第一个单词Root
String[] tags = new String[wordsCount - 1];
for (int i = 1; i < words.size(); i++) {
toks[i - 1] = words.get(i).getName();
tags[i - 1] = words.get(i).getPos();
}
// 采用open nlp进行chunk
ChunkerModel chunkerModel;
try {
chunkerModel = ModelLoader.getChunkerModel();
} catch (Exception e) {
log.error("Failed to load chunk model!", e);
throw e;
}
ChunkerME chunkerME = new ChunkerME(chunkerModel);
Span[] spans = chunkerME.chunkAsSpans(toks, tags);
for (Span span : spans) {
Word word = words.get(span.getStart() + 1);
if ("'s".equals(word.getName())) {
ChunkPhrase prePhrase = phrases.get(phrases.size() - 1);
prePhrase.setRightIndex(span.getEnd());
prePhrase.getWords().addAll(words.subList(span.getStart() + 1, span.getEnd() + 1));
phrases.set(phrases.size() - 1, prePhrase);
} else {
ChunkPhrase chunkPhrase = new ChunkPhrase(span.getStart() + 1, span.getEnd(), new ArrayList<Word>(words.subList(span.getStart() + 1, span.getEnd() + 1)));
phrases.add(chunkPhrase);
}
}
return phrases;
}