Еще лучше, используя try-with-resources!Таким образом, вам не нужно явно вызывать .close()
, что требуется в более высоких версиях библиотеки.
public static List<String> tokenizeString(Analyzer analyzer, String string) {
List<String> tokens = new ArrayList<>();
try (TokenStream tokenStream = analyzer.tokenStream(null, new StringReader(string))) {
tokenStream.reset(); // required
while (tokenStream.incrementToken()) {
tokens.add(tokenStream.getAttribute(CharTermAttribute.class).toString());
}
} catch (IOException e) {
new RuntimeException(e); // Shouldn't happen...
}
return tokens;
}
И версия Tokenizer:
try (Tokenizer standardTokenizer = new HMMChineseTokenizer()) {
standardTokenizer.setReader(new StringReader("我说汉语说得很好"));
standardTokenizer.reset();
while(standardTokenizer.incrementToken()) {
standardTokenizer.getAttribute(CharTermAttribute.class).toString());
}
} catch (IOException e) {
new RuntimeException(e); // Shouldn't happen...
}