Трансформаторы последовательностей для польского языка

В этом уроке я покажу вам, как генерировать вкрапления для последовательностей на польском языке с помощью Sequence Transformers. Я не буду объяснять, как они работают, есть много замечательных статей:

  • Измерение сходства текстов с помощью BERT
  • Bert 101

Нам понадобится библиотека Sequence Transformers от Huggingface:

pip install sequence_transformers
Войти в полноэкранный режим Выход из полноэкранного режима

Код прост, мы импортируем библиотеку, создаем модель и запрашиваем у нее вкрапления.

from sentence_transformers import SentenceTransformer

model = SentenceTransformer('Voicelab/sbert-base-cased-pl')
embeddings = model.encode(["Ten tekst zostanie zakodowany"])
print(embeddings)
Вход в полноэкранный режим Выход из полноэкранного режима

Вот и все. Вот вывод модели:

[[ 7.74895132e-01  7.00104088e-02 -5.02209544e-01 -2.06187874e-01
  -1.28363922e-01  1.18705399e-01 -1.88303709e-01 -9.09971595e-02
...
Вход в полноэкранный режим Выход из полноэкранного режима

Если вы хотите изменить модель Voicelab/sbert-base-cased-pl на модель из этого списка, она предварительно отфильтрована для польского языка.

Эти вкрапления могут быть весьма полезны, так как мы можем использовать их для классификации, поиска сходства и т.д.

Пример использования

У меня есть список предложений. Я хочу узнать, какие из них наиболее похожи. Как я могу это сделать? Как вы уже догадались — с помощью вкраплений. Мы рассчитаем матрицу расстояний для каждого предложения и посмотрим, какие из них наиболее похожи.

sentences = [
"Pożar w mieście. Zgnięło 10 osób."
,"Wypadek pod wiaduktem kolejowym."
,"W Poniedziałek odbędzie się konferencja naukowa"
,"Magia potrafi wzniecać pożary"]

embeddings = model.encode(sentences)
Войти в полноэкранный режим Выход из полноэкранного режима

В качестве меры сходства я буду использовать косинусное расстояние.

from sklearn.metrics import pairwise

sns.heatmap(pairwise.cosine_similarity(embeddings, embeddings))
Войти в полноэкранный режим Выйти из полноэкранного режима

Из этой тепловой карты мы можем сделать вывод, что наша модель работает, она нашла сходство между предложениями с pożar и wypadek, которые оба относятся к аварии.

Оцените статью
devanswers.ru
Добавить комментарий