Member 12199969 Ответов: 1

Используйте калькулятор wu-palmer в WS4J, чтобы найти сходство между словами


Я использую WS4j, чтобы найти сходство между двумя словами. Кроме того, я использую калькулятор родства Ву-Палмера. Он прекрасно работает для многих слов, но когда я попытался найти сходство между "игрой" и "игрой", он дал оценку 1,3333, что невозможно, так как он должен возвращаться между 0 и 1 или -1. Я не могу понять причину. Когда я использовал его веб-интерфейс 'http://ws4jdemo.appspot.com/?mode=w&s1=&w1=play&s2=&w2=playing' он вернул 0.875.
Вот мой код:

private static void findSimilarity(String word1, String word2) {
	WS4JConfiguration.getInstance().setMFS(true);
	List<POS[]> posPairs = wup.getPOSPairs();
	double maxScore = -1D;

	for(POS[] posPair: posPairs) {
		List<Concept> synsets1 =
		(List<Concept>)db.getAllConcepts(word1, posPair[0].toString());

		List<Concept> synsets2 =
		(List<Concept>)db.getAllConcepts(word2, posPair[1].toString());

		for(Concept synset1: synsets1) {
			for (Concept synset2: synsets2) {
				Relatedness relatedness = wup.calcRelatednessOfSynset(synset1, synset2);
				double score = relatedness.getScore();

				if (score > maxScore) {
					maxScore = score;
				}
			}
		}
	}

	if (maxScore == -1D) {
		maxScore = 0.0;
	}

	System.out.println("sim('" + word1 + "', '" + word2 + "') =  " + maxScore);
}


Что я уже пробовал:

java - Wu-Palmer relatedness calculator возвращает 1.33333 балла - переполнение стека[^]

Richard MacCutchan

Вам нужно разместить этот вопрос на веб-сайте WS4j, это не проблема программирования.

Member 12199969

Я не нашел там места для вопросов. Я написал здесь, что, возможно, кто-то еще столкнулся с той же проблемой.

Member 12199969

Я не нашел там места для вопросов. Я написал здесь, что, возможно, кто-то еще столкнулся с той же проблемой.

1 Ответов

Рейтинг:
0

ben khalifa ghada

Здравствуйте вы можете использовать этот код:

ILexicalDatabase db = новый NictWordNet();
WS4JConfiguration.деыпзьапсе().setMFS(правда);
RelatednessCalculator rc = new Lin(db);
Строка word1 = "пол";
Строка word2 = "секс";
List<POS[]> posPairs = rc.getPOSPairs();
двойной maxScore = -1D;

for(POS[] posPair: posPairs) {
Список<понятие&ГТ; synsets1 = (список<понятие&ГТ;)дБ.getAllConcepts(слово1, posPair[0].метод toString());
Список<понятие&ГТ; synsets2 = (список<понятие&ГТ;)дБ.getAllConcepts(слово2, posPair[1].метод toString());

для(концепция synset1: synsets1) {
для (концепция synset2: synsets2) {
Связанность связанность = РК.calcRelatednessOfSynset(synset1, synset2);
двойной балл = relatedness.getScore();
if (score > maxScore) {
maxScore = оценка;
}
}
}
}

если (maxScore == -1D) {
maxScore = 0.0;
}

System.out.println("sim('" + word1 + "', '" + word2 + "') = " + maxScore);


[no name]

Это, кажется, скопировано отсюда: java - поиск сходства между двумя словами - переполнение стека[^]
Если да, то, пожалуйста, предоставьте подтверждение.