Как извлечь перекрывающиеся фразы с помощью nltk - PullRequest
0 голосов
/ 04 августа 2020

Я использую этот код для извлечения фразы с {NN IN NN}, но результат показывает только «взаимосвязь между весом», но у меня sh также есть «вес говядины».

text = "what is the relationship between weight of beef and cooking time"

tokens = nltk.word_tokenize(text)
tagged_text = nltk.pos_tag(tokens)

grammar = r"""
    NP:{<NN><IN><NN>}
"""

cp = nltk.RegexpParser(grammar) 
result = cp.parse(tagged_text)
print(result)
(S
  what/WP
  is/VBZ
  the/DT
  (NP relationship/NN between/IN weight/NN)
  of/IN
  beef/NN
  and/CC
  cooking/NN
  time/NN)

1 Ответ

0 голосов
/ 04 августа 2020

Если вы определяете грамматику, то каждое слово может принадлежать только одной фразе и не может перекрываться. Но поскольку вам нужно извлекать только фразы, вы можете просто отфильтровать все триграммы с помощью тегов, которые вам нужны:

for (w1, t1), (w2, t2), (w3, t3) in nltk.trigrams(tagged_text):
    if t1 == 'NN' and t2 == 'IN' and t3 == 'NN':
        print(w1, w2, w3)

Вывод:

relationship between weight
weight of beef
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...