如何执行ngram到ngram关联

时间:2017-10-04 13:43:32

标签: python machine-learning nlp associations n-gram

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

我有一份来自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并找不到此类功能。

由于

1 个答案:

答案 0 :(得分:2)

我个人首先会将Levenshtein distance视为可行的基本且简单的方法。我先干掉这些话,然后再跑Levenshtein。

更复杂的方法是使用已经训练过的word2vec模型(在Spark和NLTK中可用),然后聚合每个ngram中出现的单词向量以生成ngrams的向量。最后,您可以比较结果向量并找到最相似的对。有些库允许您为ngramsdocuments生成这些聚合的矢量表示。您还可以找到相关文章,并根据您的具体需要提出并实施您自己的聚合方法。