2014-01-23 4 views
0

입력 쿼리에서 특정 단어의 모든 의미를 사용하고 싶습니다.파이썬 NLTK를 사용하여 단어의 모든 의미를 얻는 방법은 무엇입니까?

가정 내 입력 쿼리는 다음과 같습니다 : "개는 나무를 짖는" 여기에 내가 단어 TREE의 모든 의미를 얻으려면

BARK 예를 들어

트리 #n # 01, 트리 #n # 02 ... 등등. 나무 껍질 # n # 01, 껍질 # n # 02 ... 등등

나는 명사, 동사, 형용사 및 부사 synset을 적절하게 추출하기 위해 POS 태깅을 사용하고 있습니다. bark이 동사로 사용되는 경우 (입력 쿼리에서 사용됨) 관련 의미 만 bark # v # 01, bark # v # 02 ...로 표시되어야합니다.

Python을 사용하여이 문제를 해결할 수 있도록 도와주세요. . 자연어 처리를 위해 Python NLTK 모듈을 사용하고 있습니다.

+0

시도를 게시 하시겠습니까? – That1Guy

+0

저는 "xyz # n # 01"형식 (예를 들어)과 같은 양식을 원하는 관련성 부분과 함께 작업하고 있습니다. 나는 감각의 수에 따라 특정 단어를 다차 표기로 표시하고 싶기 때문에 위의 질문을했으며 NLTK 책에서 많은 것을 시도하고 있습니다. – user3189037

답변

2

당신이 단어를 가능한 synset을 얻을 그런 다음 관용적

>>> from nltk.tag import pos_tag 
>>> sent = "dog is barking at tree" 
>>> [i for i in pos_tag(sent.split()) if i[1] == "NN"] 
[('dog', 'NN'), ('tree', 'NN')] 

을 사용할 수 있습니다, 유사/동일 POS 태그가있는 단어를 알고하려면 수행

>>> from nltk.corpus import wordnet as wn 
>>> wn.synsets('dog') 
[Synset('dog.n.01'), Synset('frump.n.01'), Synset('dog.n.03'), Synset('cad.n.01'), Synset('frank.n.02'), Synset('pawl.n.01'), Synset('andiron.n.01'), Synset('chase.v.01')] 

대부분의 아마 찾고있는 솔루션은 다음과 같습니다.

>>> from nltk.corpus import wordnet as wn 
>>> from nltk.tag import pos_tag 
>>> sent = "dog is barking at tree" 
>>> for i in [i[0] for i in pos_tag(sent.split()) if i[1].lower()[0] == 'n']: 
...  print wn.synsets(i); print 
... 
[Synset('dog.n.01'), Synset('frump.n.01'), Synset('dog.n.03'), Synset('cad.n.01'), Synset('frank.n.02'), Synset('pawl.n.01'), Synset('andiron.n.01'), Synset('chase.v.01')] 

[Synset('tree.n.01'), Synset('tree.n.02'), Synset('tree.n.03'), Synset('corner.v.02'), Synset('tree.v.02'), Synset('tree.v.03'), Synset('tree.v.04')] 
관련 문제