6

自从有人告诉我 Spacy 是一个用于自然语音处理的强大 Python 模块后,我现在正在拼命寻找一种方法来将单词组合成多个名词短语,最重要的是介词短语。我怀疑是否有 Spacy 功能,但我猜这将是最简单的方法(SpacySpaCy 导入已经在我的项目中实现)。尽管如此,我对任何短语识别/分块的可能性持开放态度。

4

1 回答 1

8

这是获得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_core_web_sm')
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']
于 2017-10-29T11:25:34.623 回答