Поскольку мне сказали, что Spacy был таким мощным модулем Python для естественной обработки речи, теперь я отчаянно ищу способ сгруппировать слова вместе более чем существительным фразы, что наиболее важно, пропозициональные фразы. Я сомневаюсь, что для этого есть функция Spacy, но это было бы самым простым способом, я думаю (импорт SpacySpaCy уже реализован в моем проекте). Тем не менее, я открыт для любой возможности распознавания фразы/фрагментации.Python: Chunking другие, кроме существительных фраз (например, пропозициональных) с использованием Spacy и т. Д.
1
A
ответ
0
Вот решение для получения ПП. В общем, вы можете получить фразы, используя 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
Использование:
ex = 'A short man in blue jeans is working in the kitchen.'
doc = nlp(ex)
get_pps(doc)
Это печатает:
['in blue jeans', 'in the kitchen']
Можете ли вы привести пример того, что вы хотите конкретно? Может быть, как пример ввода с желаемым выходом, соответствующим ему. – Harrison
Конечно. В качестве перевода немецкого материала примите предложение типа «Сколько времени мне требуется, чтобы поехать в университет?» (на немецком языке «Wie lange brauche ich bis zur Uni?»). Я хочу, чтобы [PREP] [DET] университет [NOUN] »был помечен как фаза предлога, либо отдав себе отчет в том, что изначально состоит фраза, либо задавая точные правила (PP -> PREP + NP), как используемые в других python. Поскольку SpaCy используется для пометки в моей программе и, по-видимому, поддерживает только фрагментацию существительных. Я хотел бы иметь вспомогательный модуль или только функцию внутри него, чтобы распознавать дополнительные куски. –