有人可以指出正确的方向来解决以下问题吗?

我有很多来自UMLS的医学术语列表,例如

Disease control is good
Disease control is poor
Disease control is excellent
Drug adherence
Current drug
Sodium Valproate
Antibiotic VI
Epilepsy control is good
Frequent seizures
Clinically isolated syndrome
Fractured patella
Fractured femur


我还有另一个短语列表,它们不完全匹配字符串,但相似,即

Good control of epilepsy    -->      Epilepsy control is good
Broken tibia                -->      Fractured tibia
Currently prescribed drugs  -->      Current drugs


我基本上是想从第二个短语列表到第一个短语列表获得最佳匹配。

我知道ngram并置,但这似乎是从单个文本语料库中找到顶部并置的ngram,而不是将一个ngram与另一个ngram关联。

我需要查看字符串匹配算法还是更多基于机器学习的方法?

是否有人知道可以执行此操作的任何软件包-我查看了python NLTK,但找不到这种类型的功能。

谢谢

最佳答案

我个人首先将Levenshtein distance视为一种可能有效的基本且简单的方法。我先说出这些话,然后再运行Levenshtein。

一种更复杂的方法是使用已经训练有素的word2vec模型(在Spark和NLTK中可用),然后聚合出现在每个ngram中的单词向量,以生成ngram的向量。最后,您可以比较所得的向量并找到最相似的对。有一些库可让您为ngramsdocuments生成这些聚合的矢量表示。您还可以找到相关文章,并根据您的特定需求提出并实施自己的汇总方法。

关于python - 如何执行ngram与ngram的关联,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46566491/

10-09 21:18