【问题标题】:How to perform ngram to ngram association如何执行 ngram 到 ngram 关联
【发布时间】:2017-10-05 21:49:08
【问题描述】:

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

我有一个巨大的 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 并找不到这种类型的功能。

谢谢

【问题讨论】:

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


    【解决方案1】:

    我个人会首先将Levenshtein distance 视为一种可能运作良好的基本且简单的方法。我会先词干,然后运行 ​​Levenshtein。

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

    【讨论】:

    • 嗨 TrnKh - 感谢您的意见。我查看了 word2vec 并设法在两个不同的语料库之间获得了一些不错的单词关联。我将检查聚合这些关联。
    • 很好 :-) 很高兴知道它在这种情况下运行良好。
    猜你喜欢
    • 2020-11-27
    • 2018-01-22
    • 1970-01-01
    • 2012-02-12
    • 2011-03-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-08
    相关资源
    最近更新 更多