Python: разделение на части, кроме имен существительных (например, предлог), используя Spacy и т. Д.

Поскольку мне сказали, что Spacy является таким мощным модулем Python для естественной обработки речи, я теперь отчаянно ищу способ сгруппировать слова по более чем существительным фразам, наиболее важно, предлогам. Я сомневаюсь, что для этого есть функция Spacy, но это будет самый простой способ, который я предполагаю (импорт SpacySpaCy уже реализован в моем проекте). Тем не менее, я открыт для любой возможности распознавания фраз.

1 ответ

Вот решение, чтобы получить PP. В общем, вы можете получить фразы, используя subtree,

def get_pps(doc):
    "Function to get PPs from a parsed document."
    pps = []
    for token in doc:
        # Try this with other parts of speech for different subtrees.
        if token.pos_ == 'ADP':
            pp = ' '.join([tok.orth_ for tok in token.subtree])
            pps.append(pp)
    return pps

Использование:

import spacy

nlp = spacy.load('en')
ex = 'A short man in blue jeans is working in the kitchen.'
doc = nlp(ex)

print(get_pps(doc))

Это печатает:

['in blue jeans', 'in the kitchen']
Другие вопросы по тегам