/ Модель

Характеристики

Контекст
512 токенов
Параметры
40 млн
Лицензия
Apache 2.0
Архитектура
bert · dense
Опубликована
4 фев 2024

pearl_small

ЭмбеддингиТекст → embedding10 профессий

PEARL-small создаёт эмбеддинги коротких строк для семантического сопоставления, поиска и кластеризации сущностей.

333скачиваний за 30 дней13лайковвеса обновлены24 фев 2025

Бенчмарки

Как модель справилась с задачами пользователей ailist и что о ней публикуют открытые лидерборды

Тесты пользователейпока нет

Никто ещё не опубликовал тест этой модели. Соберите бенчмарк из своих задач — результат появится здесь.

  1. Добавьте модель в бенчмарк

    Вместе с другими моделями категории «Эмбеддинги» — сравнение идёт внутри одной категории.

  2. Опишите свои задачи

    Напишите запросы, при необходимости приложите файлы и эталонные ответы.

  3. Запустите и опубликуйте

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

Публичные оценки

Из открытых лидербордов. Сравнивайте результаты одного теста при одинаковых условиях — отсутствие оценки не значит, что модель хуже.

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

Что умеет модель

Описание составлено по карточке модели и метаданным Hugging Face

PEARL-small — компактная модель эмбеддингов строк и фраз, разработанная Lihu Chen, Gaël Varoquaux и Fabian M. Suchanek. Работа принята на EACL Findings 2024. Модель представляет собой дообученную версию E5-small на контекстно-независимом наборе данных, созданном авторами. В основе — архитектура BERT; размер составляет около 40 млн параметров, максимальная длина контекста — 512 токенов.

Модель предназначена для получения векторных представлений коротких строк и сравнения их семантической близости. Она учитывает тип фразы и морфологические признаки, чтобы лучше сопоставлять варианты написания и формулировок. Основные сценарии — строковое сопоставление, поиск сущностей, кластеризация сущностей и нечёткое соединение записей. В README приведены примеры сравнения названий, а также результаты бенчмарков и сравнение ресурсов с FastText.

Модель принимает текст и выдаёт эмбеддинги; метаданные указывают английский язык. Репозиторий распространяется в форматах PyTorch и Safetensors по лицензии Apache-2.0. Данные источников не описывают ограничения качества за пределами приведённых бенчмарков и длины контекста.

Сценарии применения

  • поиск сущностей по вариантам названия
  • сопоставление строк с разным написанием
  • нечёткое объединение записей из таблиц
  • кластеризация похожих названий и фраз
  • ранжирование строк по семантическому сходству

Ограничения

Контекст ограничен 512 токенами. По данным карточки, модель рассчитана на английский язык; качество для других языков не подтверждено.

Для каких профессий подходит10

Разделы каталога профессий, в задачах которых используется эта модель

Все профессии

Также подходит для

Карточка модели

README от автора на Hugging Face, как он его опубликовал

Открыть на Hugging Face

🦪⚪ PEARL-small

Learning High-Quality and General-Purpose Phrase Representations. Lihu Chen, Gaël Varoquaux, Fabian M. Suchanek. Accepted by EACL Findings 2024

PEARL-small is a lightweight string embedding model. It is the tool of choice for semantic similarity computation for strings, creating excellent embeddings for string matching, entity retrieval, entity clustering, fuzzy join... It differs from typical sentence embedders because it incorporates phrase type information and morphological features, allowing it to better capture variations in strings. The model is a variant of E5-small finetuned on our constructed context-free dataset to yield better representations for phrases and strings.

🤗 PEARL-small 🤗 PEARL-base 📐 PEARL Benchmark 🏆 PEARL Leaderboard

ModelSizeAvgPPDBPPDB filteredTurneyBIRDYAGOUMLSCoNLLBC5CDRAutoFJ
FastText-40.394.461.259.658.916.914.53.00.253.6
Sentence-BERT110M50.194.666.850.462.621.623.625.548.457.2
Phrase-BERT110M54.596.868.757.268.823.726.135.459.566.9
E5-small34M57.096.056.855.963.143.342.027.653.774.8
E5-base110M61.195.465.659.466.347.344.032.069.376.1
PEARL-small34M62.597.070.257.968.148.144.542.459.375.2
PEARL-base110M64.897.372.259.772.650.745.839.369.477.1

Cost comparison of FastText and PEARL. The estimated memory is calculated by the number of parameters (float16). The unit of inference speed is *ms/512 samples. The FastText model here is crawl-300d-2M-subword.bin.

ModelAvg ScoreEstimated MemorySpeed GPUSpeed CPU
FastText40.31200MB-57ms
PEARL-small62.568MB42ms446ms
PEARL-base64.8220MB89ms1394ms

Usage

Sentence Transformers

PEARL is integrated with the Sentence Transformers library (Thanks for Tom Aarsen's contribution), and can be used like so:

from sentence_transformers import SentenceTransformer, util

query_texts = ["The New York Times"]
doc_texts = [ "NYTimes", "New York Post", "New York"]
input_texts = query_texts + doc_texts

model = SentenceTransformer("Lihuchen/pearl_small")
embeddings = model.encode(input_texts)
scores = util.cos_sim(embeddings[0], embeddings[1:]) * 100
print(scores.tolist())
# [[90.56318664550781, 79.65763854980469, 75.52056121826172]]

Transformers

You can also use transformers to use PEARL. Below is an example of entity retrieval, and we reuse the code from E5.

import torch.nn.functional as F

from torch import Tensor
from transformers import AutoTokenizer, AutoModel


def average_pool(last_hidden_states: Tensor,
                 attention_mask: Tensor) -> Tensor:
    last_hidden = last_hidden_states.masked_fill(~attention_mask[..., None].bool(), 0.0)
    return last_hidden.sum(dim=1) / attention_mask.sum(dim=1)[..., None]

def encode_text(model, input_texts):
    # Tokenize the input texts
    batch_dict = tokenizer(input_texts, max_length=512, padding=True, truncation=True, return_tensors='pt')

    outputs = model(**batch_dict)
    embeddings = average_pool(outputs.last_hidden_state, batch_dict['attention_mask'])
    
    return embeddings


query_texts = ["The New York Times"]
doc_texts = [ "NYTimes", "New York Post", "New York"]
input_texts = query_texts + doc_texts

tokenizer = AutoTokenizer.from_pretrained('Lihuchen/pearl_small')
model = AutoModel.from_pretrained('Lihuchen/pearl_small')

# encode
embeddings = encode_text(model, input_texts)

# calculate similarity
embeddings = F.normalize(embeddings, p=2, dim=1)
scores = (embeddings[:1] @ embeddings[1:].T) * 100
print(scores.tolist())

# expected outputs
# [[90.56318664550781, 79.65763854980469, 75.52054595947266]]

Training and Evaluation

Have a look at our code on Github

Citation

If you find our work useful, please give us a citation:

@inproceedings{chen2024learning,
  title={Learning High-Quality and General-Purpose Phrase Representations},
  author={Chen, Lihu and Varoquaux, Gael and Suchanek, Fabian},
  booktitle={Findings of the Association for Computational Linguistics: EACL 2024},
  pages={983--994},
  year={2024}
}

Как запустить

На своей GPU в ailist. Цена — по текущим предложениям провайдеров

GPU в ailist

Универсальный рантайм

Можно запустить

Подбираем GPU…

Класс архитектуры
BertModel
Ревизия весов
1e009cf

0 моделей