Данная библиотека предназначена для обработки текста. Мне нужно вытащить лемму из слов. Репозиторий подсоединил.
Вот код этого класса, который по видимому и занимается лемматизацией
public class SimpleLemmatizer implements DictionaryLemmatizer {
public final Set<String> constantTags = new HashSet<String>(Arrays.asList("NNP","NP00000"));
private HashMap<List<String>,String> dictMap;
public SimpleLemmatizer(InputStream dictionary) {
dictMap = new HashMap<List<String>,String>();
BufferedReader breader = new BufferedReader(new InputStreamReader(dictionary));
String line;
try {
while ((line = breader.readLine()) != null) {
String[] elems = line.split("\t");
dictMap.put(Arrays.asList(elems[0],elems[1]),elems[2]);
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
private List<String> getDictKeys(String word, String postag) {
List<String> keys = new ArrayList<String>();
if (constantTags.contains(postag)) {
keys.addAll(Arrays.asList(word,postag));
}
else {
keys.addAll(Arrays.asList(StringUtil.toLowerCase(word),postag));
}
return keys;
}
public String lemmatize(String word, String postag) {
String lemma = null;
List<String> keys = getDictKeys(word, postag);
//lookup lemma as value of the map
String keyValue = dictMap.get(keys);
if (keyValue != null) {
lemma = keyValue;
}
else if (keyValue == null && constantTags.contains(postag)) {
lemma = word;
}
else if (keyValue == null && word.toUpperCase() == word) {
lemma = word;
}
else {
lemma = StringUtil.toLowerCase(word);
}
return lemma;
}
}
Не могу понять, как использовать данный класс. На вход берет поток данных, InputStream, это ясно. Но как он будет вытаскивать лемму из слова???
Возможно есть и другие методы поиска леммы, которыми пользуетесь вы??