有监督的文字相似度

时间:2018-10-09 10:32:41

标签: python r nlp quanteda

我正在尝试计算句子之间的文本相似度。我有包含服务文本的标准化医疗服务列表(例如,向神经科医生咨询)。每次医院/诊所都有自己的服务清单,因此我需要将医院的服务清单与标准服务清单进行映射。我使用跳跃语法标记来计算医院服务与标准化服务列表之间的TF-IDF余弦相似度。我已经做了很长时间了,所以我对15所医院的服务也有正确的映射。所谓“正确映射”,是指我所在组织的医学专家提供了正确标记的服务映射,这些服务使用tf-idf余弦相似度算法被错误地标记或映射。我想使用“正确的映射”作为文本分类问题,但没有。在这种情况下,标签的数量超过10K。有没有一种方法可以执行“监督文本相似性”?我尝试了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)

1 个答案:

答案 0 :(得分:0)

对此的答案是在以下位置使用ruimtehol R软件包:https://github.com/bnosac/ruimtehol,它通过为句子/文档/受监督/不受监督的嵌入或二者的结合提供文本相似性。 但是您应该真正尝试一下,并提供代码以说明如何使用该程序包。现在,您只需提供数据,并希望其他人会为您的问题提供代码。