2016-08-23 9 views
1

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

+0

Можете ли вы привести пример того, что вы хотите конкретно? Может быть, как пример ввода с желаемым выходом, соответствующим ему. – Harrison

+1

Конечно. В качестве перевода немецкого материала примите предложение типа «Сколько времени мне требуется, чтобы поехать в университет?» (на немецком языке «Wie lange brauche ich bis zur Uni?»). Я хочу, чтобы [PREP] [DET] университет [NOUN] »был помечен как фаза предлога, либо отдав себе отчет в том, что изначально состоит фраза, либо задавая точные правила (PP -> PREP + NP), как используемые в других python. Поскольку SpaCy используется для пометки в моей программе и, по-видимому, поддерживает только фрагментацию существительных. Я хотел бы иметь вспомогательный модуль или только функцию внутри него, чтобы распознавать дополнительные куски. –

ответ

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'] 

 Смежные вопросы

  • Нет связанных вопросов^_^