【发布时间】:2018-03-05 17:28:16
【问题描述】:
我想在两个拼写错误较多的列表中找出相似的临床术语。现在我正在使用 SequenceMatcher 来发现它最相似。示例:
from difflib import SequenceMatcher
def similar(a, b):
return round(SequenceMatcher(None, a, b).ratio()*100, 1)
print similar('hypertesnion','hypertension') # 91.7
print similar('high blood pressure','hypertension') # 19.4
在第二种情况下,“高血压”和“高血压”之间的相似性非常低,但它们实际上是相似的术语。另请注意,列表中的“高血压”和“高血压”有多种拼写形式。
有什么方法可以发现这些临床术语的相似性?
我想有两件事是必需的。先纠正拼写,再编码 将它们转换为单个词来计算相似度。
编辑: 或者有什么方法可以使用同义词列表创建模型以将它们编码为单个术语,以防我有一个列表示例编码如下:
'hypertension' 'hypertension'
'hypertesnio' 'hypertension'
'high blood pressure' 'hypertension'
'increased blood pressure' 'hypertension'
'raised blodd presure' 'hypertension'
【问题讨论】:
-
除非您有某种字典,否则在 python 或 nltk 中没有简单的方法可以做到这一点,@BillBell 建议的 UMLS 将是将不同的单词映射到其语义等效术语的最佳来源。另外你也可以看看bioportal.bioontology.org
-
谢谢@BillBell。假设我有一个列表(有问题的示例已更新),我现在如何使用它来即兴进行相似性搜索。
标签: python scikit-learn nltk topic-modeling text-processing