2017-10-04 38 views
1

有人能指出我正確的方向來解決以下問題嗎?如何執行ngram到ngram協會

我從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,並找不到這種類型的功能。

感謝

回答

2

我個人先來看看Levenshtein distance作爲可能效果較好基礎和簡單的方法。我會先排除這些詞,然後運行Levenshtein。

更復雜的方法是使用已經過訓練的word2vec模型(可在Spark和NLTK中獲得),然後彙總出現在每個ngram中的單詞的向量以生成ngrams的向量。最後,您可以比較結果向量並找到最相似的對。在那裏有圖書館,允許你爲ngramsdocuments生成這些聚合向量表示。根據您的具體需求,您還可以查找相關文章並提出並實施您自己的聚合方法。

+0

嗨TrnKh - 感謝您的輸入。我看了一下word2vec,並設法在兩個不同的語料庫之間找到一些很好的單詞關聯。我會檢查彙總這些協會。 – brucezepplin

+0

不錯:-)很高興知道它在這方面運作良好。 – TrnKh