Python:使用Spacy等将名词短语(例如介词)以外的其他事物分块

Mal*_* Ge 4 python nlp chunking phrases spacy

自从我被告知Spacy是用于自然语音处理的功能强大的Python模块以来,我现在迫切希望找到一种将单词组合在一起的方法,而不仅仅是名词短语,最重要的是介词短语。我怀疑是否存在Spacy函数,但这将是我猜想的最简单的方法(在我的项目中已经实现了SpacySpaCy导入)。不过,我愿意接受任何短语识别/分块的可能性。

Emi*_*iel 6

这是获取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
Run Code Online (Sandbox Code Playgroud)

用法:

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))
Run Code Online (Sandbox Code Playgroud)

打印:

['in blue jeans', 'in the kitchen']
Run Code Online (Sandbox Code Playgroud)