2014-01-23 4 views
0

Я хочу использовать все значения определенного слова во входном запросе.Как получить все значения слова, используя python NLTK?

Например:

Предположим, мой входной запрос: «Собака лает на дереве»

Здесь я хочу, чтобы получить все значения слова ВАЛ и КОРЫ в следующем формате:

дерево # n # 01, дерево # n # 02 ... и прочее. Кора # n # 01, кора # n # 02 ... и т. Д.

Я использую теги POS для извлечения существительного, глагола, прилагательного и наречия synset соответственно. Если кору используют в качестве глагола (как используется в нашем входном запросе), то только соответствующие значения должны отображаться как кора # v # 01, bark # v # 02 ...

Пожалуйста, помогите мне решить эту проблему с помощью Python , Я использую модуль Python NLTK для обработки естественного языка.

+0

Вы отправите свои попытки? – That1Guy

+0

Я работаю со связанной частью, в которой мне нужны формы «xyz # n # 01» (например, например). Я задал следующий вопрос, потому что хочу отметить определенное слово как полисемию или нет в соответствии с количеством чувств, и я пробую много вещей из книги NLTK. – user3189037

ответ

2

Чтобы узнать, какие слова имеют один и тот же/аналогичный поз тег, вы можете использовать идиоматические

>>> 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')] 

Тогда, чтобы получить возможные synsets за слово, просто сделать:

>>> 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')] 
Смежные вопросы