Как получить контекстное встраивание фразы в предложение с помощью BERT?

Я использую https://github.com/UKPLab/sentence-transformers для встраивания предложений из БЕРТ. Используя это, я могу встроить предложения или фразы. Например: я могу получить встраивание предложения типа система не работает, передана в сервисный центр, но нет ответа на замену. Я также могу получить встраивание такой фразы, как нет ответа.

Однако я хочу получить встраивание нет ответа в контексте система не работает, передана в сервисный центр, но нет ответа на замену. Любые указатели на то, как получить это, будут полезны. Заранее спасибо.

Я пытаюсь сделать это, потому что фраза нет ответа имеет разный контекст в разных предложениях. Например, контекст отсутствия ответа различается в следующих двух предложениях: система не работает, передана в сервисный центр, но нет ответа на замену, мы пробовали процедуру восстановления на пациенте, но ответа не последовало


person buddy    schedule 26.06.2020    source источник


Ответы (1)


BERT возвращает один вектор для каждого входного подслова, поэтому вам нужно получить векторы, соответствующие интересующей вас фразе.

То, что обычно называют вложением предложений, — это либо встраивание технического символа [CLS], который добавляется к предложению перед его обработкой с помощью BERT; или среднее значение контекстных векторов подслов. Поскольку вектор [CLS] обязательно охватывает все предложение, вы не можете получить его только для подфразы, но вы можете использовать среднее значение вложений подслов фразы.

Используемый вами пакет sentence-transformers имеет очень простой и удобный API, но я боюсь, что он недостаточно силен для выполнения этой работы. Я бы предложил использовать трансформеры Huggingface. Этот пакет позволяет вам просмотреть, как предложение было токенизировано, и, таким образом, получить соответствующие векторы.

person Jindřich    schedule 29.06.2020