起初,这个问题似乎微不足道:给定两个本体,本体 A 中的哪个术语最好指代本体 B 中的一个术语。但它的简单性具有欺骗性:这个问题非常困难,目前已导致成千上万的学术出版物,没有任何共识如何解决这个问题呢。
天真地,人们会期望在两种本体中仅查看术语“心脏病发作”就足够了。然而,本体几乎从不编码相同的短语。在简单的情况下,“心脏病发作”可能被编码为“心脏病发作”或“心脏病发作(非致命)”,但在更复杂的情况下,它可能只被编码为“心肌梗塞”。在其他情况下,它甚至更复杂,例如处理复合(组合)术语。
更重要的是,简单地匹配术语(或字符串)会忽略“本体结构”。如果本体 A 中的“心脏病发作”被编码为caused-by
高血压,而在本体 B 中它可能被编码为withdrawl-from-trial-non-fatal
. 在这种情况下,匹配这两个术语可能是有效的,但并非如此。这假设等价项完全存在。
这是一个经典的问题,称为语义/本体匹配、对齐或协调。那里的研究涉及词汇相似性、自由文本中的术语使用、图同态、策划映射(如 MeSH/WordNet)、主题建模和逻辑推理(一阶或高阶逻辑)。但是哪个是最用户友好和生产就绪的解决方案,可以集成到 Java(/Clojure)或 Python 应用程序中?我看过本体匹配:文献综述,但他们似乎没有推荐任何东西……有什么建议或经验吗?