2014-06-20 11 views
1

단어 A와 단어 B가 있는데 A의 의미를 암시하는 힌트로 B를 사용한다고 가정 해 보겠습니다. 예를 들어 A = 저음, B = 음악,이 단어가 주어지면 쌍으로, 인간으로서 우리는 단어 A가 무엇을 의미하는지 즉시 알 수 있습니다.단어 쌍에 대한 단어 의미 모호성

문장을 처리하는 알고리즘이 많이 있다는 것을 알고 있습니다. 나는 한 쌍의 단어에 대해서만 WSD를 수행하기 위해 개발 된 알고리즘이 있는지 궁금합니다.

답변

6

WSD (Word Sense Disambiguation)는 컨텍스트 문장/문서에서 단어의 모호성을 제거하는 작업입니다. 이 경우 두 토큰 문구 중 컨텍스트는 기본적으로 다른 토큰입니다.

현재 다른 WSD 소프트웨어를 시도 할 수는 목록입니다 : Anyone know of some good Word Sense Disambiguation software?

난 당신이 사용하는 예제 pywsd (https://github.com/alvations/pywsd)주지 :, 또는

$ wget https://github.com/alvations/pywsd/archive/master.zip 
$ unzip master.zip 
$ cd pywsd-master 
$ python 
Python 2.7.5+ (default, Feb 27 2014, 19:37:08) 
[GCC 4.8.1] on linux2 
Type "help", "copyright", "credits" or "license" for more information. 
>>> from lesk import simple_lesk 
# disambiguating the word 'bass' given the context 'bass music' 
>>> simple_lesk('bass music', 'bass') 
Synset('bass.n.07') 
>>> disambiguated = simple_lesk('bass music', 'bass') 
>>> disambiguated.definition 
<bound method Synset.definition of Synset('bass.n.07')> 
>>> disambiguated.definition() 
u'the member with the lowest range of a family of musical instruments 

을 당신이 새 모듈을 사용할 수 있습니다 NLTK (https://github.com/nltk/nltk/blob/develop/nltk/wsd.py), 주어진 당신은 최첨단 버전이 있는지 :

from nltk.wsd import lesk 
disambiguated = lesk(context_sentence="bass music", ambiguous_word="bass") 
print disambiguated.definition() 

을 (부인 : pywsdlesk 모듈을 모두 NLTK에 작성했습니다.

+0

고맙습니다! 나는 많은 알고리즘을 목록에서 보았다! 어떤 알고리즘이 내 작업에 가장 적합한 알고리즘이라고 생각하십니까? 가장 적절하게는 정확도가 높고 알고리즘/공간 복잡성이 낮을 수도 있습니다. –

+0

나는별로 없어. 2 개의 주요 알고리즘, 즉 레크 (lesk) 및 유사성 최대화 만 있습니다. 나머지는 진행 중입니다. 내가 레크 알고리즘 중 하나를 기준으로 만 사용하는 것이 좋습니다. 나는 자유로울 때 나머지 코드를 완성하려고 노력할 것이다. – alvas

+0

필자는 adapt__lesk을 레크 (lesk) 변종과 유사성 ("오랜 시간이 걸린다")에 대해 "가장 강한"것으로 제안하지만 경로 유사성은 잘 작동합니다. – alvas