При проверке сходства между двумя строками с их синонимичными словами это почти даст нам более чем положительную точность. В качестве примера
Если мы сравним две строки с синтаксисами word-net и используя метод wup_s Similarity,
word1= car
word2= horse
мы вернемся почти 1.0
.
Какмогу ли я преодолеть эту проблему?
Я хотел бы получить "Если я сравниваю автомобили, я хочу проверять только автомобили в сети, а не на животных"
Пожалуйста, дайте мне какие-либо предложения или рекомендации,спасибо.
for word1 in pre_process_text_MARKING_SCHEME:
simi = []
for word2 in pre_process_text_ANSWER_SHEET:
sims = []
syns1 = wordnet.synsets(word1)
syns2 = wordnet.synsets(word2)
for sense1, sense2 in product(syns1, syns2):
d = wordnet.wup_similarity(sense1, sense2)
if d != None:
#print(d, "similarity between word ", sense1, " and ", sense2)
sims.append(d)
if sims != []:
max_sim = max(sims)
#print("maximum similarity between" ,word1," and ",word2, " is ",max_sim )
simi.append(max_sim)
if simi != []:
max_final = max(simi)
final.append(max_final)
#print(max_final, "max_final between ",word1, " and ", word2)
##---------------Final Output---------------##
similarity_index = numpy.mean(final)
similarity_index = round(similarity_index, 2)
print("Similarity index value : ", similarity_index)
if similarity_index > 0.8:
print("Similar")
elif similarity_index >= 0.6:
print("Somewhat Similar")
else:
print("Not Similar")