【问题标题】:Supervised Text Similarity监督文本相似度
【发布时间】:2023-03-06 15:24:02
【问题描述】:

我正在尝试计算句子之间的文本相似度。我有包含服务文本的标准化医疗服务列表(例如神经科医生的咨询)。每次医院/诊所都有自己的服务清单,所以我需要用标准化的服务清单来映射医院的服务清单。我使用 skip-gram 令牌计算医院服务与标准化服务列表之间的 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)

【问题讨论】:

  • 你的意思是分类而不是相似度?我将相似性理解为使用相似的词。 TF-IDF 余弦相似度似乎是一个很好的方法。 quantedatextstat_simil() 中有更多方法。 RTextTool 实现了一些用于分类的机器学习算法。不过好久没更新了。
  • 谢谢。我的意思只是文本相似性。想法使用“正确映射”服务列表来查找以后可用于语义匹配的同义词。

标签: python r nlp quanteda


【解决方案1】:

这个问题的答案是使用 ruimtehol R 包:https://github.com/bnosac/ruimtehol 它通过为句子/文档/监督/无监督或两者的组合提供嵌入来提供文本相似性。 但是您应该真正尝试一下并提供代码来展示如何使用该包。现在您只需提供数据并希望其他人为您的问题提供代码。

【讨论】:

    猜你喜欢
    • 2014-07-10
    • 2016-05-02
    • 2019-06-14
    • 1970-01-01
    • 2017-09-04
    • 1970-01-01
    • 2012-12-21
    • 2018-02-19
    • 2020-09-21
    相关资源
    最近更新 更多