2017-10-04 15 views
1

누군가 다음 문제를 해결하기 위해 올바른 방향으로 나를 가리킬 수 있습니까? ngram에서 ngram 연결을 수행하는 방법

나는 샘플을

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 

수 있습니다 즉 내가 정확히 문자열을 문자열과 일치하지 않는 문구의 또 다른 목록을 가지고 있지만, 유사한 즉에게 있습니다 UMLS에서 의학 용어의 거대한 목록을 가지고

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

기본적으로 두 번째 구문 목록에서 첫 번째 구문 목록까지 최상의 일치를 얻고 싶습니다.

나는 ngram collocation을 알고 있지만 이것은 ngram을 다른 ngram과 연관시키기보다는 텍스트의 단일 코퍼스에서 최상위 결합 ngram을 찾는 것처럼 보입니다.

문자열 일치 알고리즘 또는 더 많은 기계 학습 기반 방법을 조사해야합니까?

누구든지이 일을 할 수있는 패키지를 알고 있습니까? 저는 파이썬 NLTK를보고 이런 유형의 기능을 찾을 수 없었습니다.

감사

답변

2

개인적으로 처음으로 잘 작동 할 수있는 기본적이고 쉬운 방법으로 Levenshtein distance에 보일 것이다. 나는이 단어를 먼저 털어 놓은 다음 Levenshtein을 실행합니다.

더 정교한 접근법은 이미 훈련 된 word2vec 모델 (Spark 및 NLTK에서 사용 가능)을 사용하고 각 ngram에 나타나는 단어 벡터를 집계하여 ngram의 벡터를 생성하는 것입니다. 마지막으로 결과 벡터를 비교하고 가장 유사한 쌍을 찾을 수 있습니다. 거기에는 및 documents에 대한 이러한 집계 된 벡터 표현을 생성 할 수있는 라이브러리가 있습니다. 또한 관련 기사를 찾고 필요에 따라 고유 한 집계 방법을 구현할 수도 있습니다.

+0

안녕하세요. TrnKh - 입력 해 주셔서 감사합니다. 나는 word2vec를보고 두 개의 다른 자료 사이에 좋은 단어 연결을 얻을 수있었습니다. 나는이 모임들을 모으는 것을 조사 할 것이다. – brucezepplin

+0

좋은 :-)이 문맥에서 잘 작동했음을 알았다면 좋았습니다. – TrnKh