Случай исключения шаблона Spacy, основанный на форме глагола

Я пытаюсь создать пространственный образец, который распознает, когда за существительным следует прилагательное, которое у меня выглядит следующим образом:

pattern = [{'POS': 'NOUN'}, {'POS': 'ADJ'}]

однако я пытаюсь сделать исключение, когда прилагательное не является формой причастия глагола. Мои примеры на испанском, поэтому прошу прощения. Например, я хочу найти и повторно токенизировать такие вещи, как «institución educationativa», но не «institución comprometida», поскольку в теге «comprometida» есть VerbForm_part = True.

Я попытался добавить следующее, но это привело к тому, что шаблон полностью перестал работать в таких случаях, как 'institución educationativa': pattern = [{'POS': 'NOUN'}, {'OP': '!', 'TAG': ' VerbForm_part '}, {' POS ':' ADJ '}]

Я также пробовал: pattern = [{'POS': 'NOUN'}, {'POS': 'ADJ', 'TAG': not 'VerbForm_part'}]

Таким образом, мне нужно сгруппировать существительные, за которыми следуют прилагательные, но только НЕКОТОРЫЕ типы прилагательных и исключить другие на основе их атрибута TAG 'VerbForm_part'.

Есть ли способ сделать это в Spacy? Поддерживает ли он исключения в своих шаблонах?

Спасибо!


person WanyaaGzz    schedule 02.09.2020    source источник


Ответы (1)


Я нашел решение, которое заключалось в определении моего собственного сопоставителя и использовании его для повторной токенизации при обнаружении совпадений:

def my_matcher(doc):
    for i in range(0, len(doc)-1):
        if i < len(doc)-1:
            token = doc[i]
            token2 = doc[i+1]
            if token.pos_ == 'NOUN':
                if token2.pos_ == 'ADJ' and 'VerbForm_part' not in model.vocab.morphology.tag_map[token2.tag_].keys():
                    span = Span(doc, i, i+2)
                    print(span)
                    with doc.retokenize() as retokenizer:
                        retokenizer.merge(span)

my_matcher(doc)

Если кто-то сможет это исправить в ближайшее время, или скажите мне, поддерживает ли это spacy, я был бы очень признателен!

person WanyaaGzz    schedule 02.09.2020