Я пытаюсь вычислить сходство текста между предложениями.У меня есть стандартизированный список медицинских услуг, содержащий текст услуги (например, консультация невролога).Каждый раз, когда больница / клиника имеют свой собственный список услуг, мне нужно сопоставить список услуг больницы со стандартным списком услуг.Я вычисляю косинусное сходство TF-IDF между службой больницы и стандартизированным списком услуг, используя жетоны скип-граммы.Я занимаюсь этим уже долгое время, поэтому у меня также есть правильное отображение услуг примерно в 15 больницах.Под «правильным отображением» я подразумеваю, что медицинские эксперты из моей организации предоставили правильное отображение услуг, которые были ошибочно помечены или сопоставлены с использованием алгоритма косинусного сходства tf-idf.Я хочу использовать «правильное отображение» в качестве проблемы классификации текста, но нет.этикеток в этом случае более 10К.Есть ли способ выполнить «контролируемое сходство текста»?Я попробовал алгоритм word2vec, но он не включает контролируемый элемент (т.е. целевую переменную (правильное отображение предыдущих результатов)).В настоящее время я использую R. Я также открыт для Python.
См. Пример моих наборов данных ниже (рассмотрим A as 'standardized service list', B as 'hospital's service list', C as 'correct mapping'
).
A <- data.frame(name= c("Patient had X-ray right leg arteries.",
"Subject was administered Rgraphy left shoulder",
"Exam consisted of x-ray leg arteries",
"Patient administered x-ray leg with 20km distance."),
row.names = paste0("A", 1:4), stringsAsFactors = FALSE)
B <- data.frame(name= c(B = "Patient had X-ray left leg arteries",
"Rgraphy right shoulder given to patient",
"X-ray left shoulder revealed nothing sinister",
"Rgraphy right leg arteries tested"),
row.names = paste0("A", 1:4), stringsAsFactors = FALSE)
C <- data.frame(name= c("Patient had X-ray right leg arteries.",
"Subject was administered Rgraphy left shoulder",
"Exam consisted of x-ray leg arteries",
"Patient administered x-ray leg with 20km distance."),
mapping = c("Radiography right leg artery.",
"Radiography left shoulder",
"Radiography leg arteries",
"Radiography leg with more than 10km distance."),
row.names = paste0("A", 1:4), stringsAsFactors = FALSE)