Документы для библиотеки Java ws4j
Я пишу проект по выявлению плагиата с помощью Java, в этом случае для первого шага мне нужно выполнить следующие задачи:
входной файл (txt, .pdf, .doc)
преобразовать содержимое файла в текст
удаление стоп-слов tokenizng в n-грамм
обработка алгоритмов подобия текста на текстах
сообщение о признаках обнаружения плагиата
я выполнил эти шаги, кодируя себя, но теперь я чувствую, что в нем много недостатков производительности, поэтому я начал использовать доступные API для своей работы, есть ли кто-нибудь, кто работал с библиотекой ws4j? какие-либо документы или справки доступны для этого? я не мог использовать это снова. это именно то, что я хочу, посмотрите на демо
1 ответ
Помимо того, что вы можете увидеть на сайте, нет документации, которую я мог бы найти. Я предлагаю вам начать с просмотра кода (используйте SVN или git, чтобы проверить его). Обратите внимание, что вам понадобится бинарный дистрибутив, потому что источник не полный.
Простой учебник работает для большинства случаев. Вы, вероятно, уже нашли его в исходном коде:
double s = rc.calcRelatednessOfWords("jump", "stand");
Если вы хотите сравнить определенные синтаксисы, вам придется создать Concept
первый. Пример для наиболее распространенного смысла "прыжок":
String word = "jump";
List<Synset> synsets = WordNetUtil.wordToSynsets(word, POS.v);
Synset mysynset = synsets.get(0);
Concept co = new Concept(mysynset.getSynset(), POS.v, mysynset.getName(), mysynset.getSrc());
Библиотека на самом деле не работает как онлайн-демонстрация. Чтобы использовать типичные обозначения для наборов, я использую свой собственный метод утилит. Таким образом, сравнение конкретных синтаксисов выглядит так:
Concept stand = new Concept(getSynset("stand#v#1"), POS.v);
Concept jump = new Concept(getSynset("jump#v#1"), POS.v);
double score = compare(comparer, co, stand);
// done!
// utility
private static double compare(RelatednessCalculator comparer, Concept one,
Concept other) throws Exception {
Relatedness res = comparer.calcRelatednessOfSynset(one, other);
if(StringUtils.isNotBlank(res.getError()))
{
throw new Exception ("WordNET similiarity for " + one + " and " + other + " failed with this error: "+ res.getError() + "\n" + res.getTrace());
}
return res.getScore();
}
/**
*
* @param wordnetword a string of the format lemma#pos#num. E.g. jump#v#1 or house#n#2
* @return a synset identifier for WS4J
*/
private static Concept getSynset(String wordnetword) {
String[] parts = StringUtils.split(wordnetword, "#");
String lemma = parts[0];
POS mypos = POS.valueOf(parts[1]);
int index = Integer.parseInt(parts[2]) - 1;
List<Synset> synsets = WordNetUtil.wordToSynsets(lemma, mypos);
Synset synset = synsets.get(index);
String synstring = synset.getSynset();
return new Concept(synstring, mypos, lemma, synset.getSrc());
}