/ Модель

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

Контекст
512 токенов
Лицензия
CC BY 4.0
Архитектура
dual_encoder_ade · dense
Базовая модель
paraphrase-multilingual-mpnet-base-v2
Библиотека
transformers
Опубликована
17 сен 2026

crosswordspacepp-dualencoder

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

Двухбашенный энкодер для поиска подходящих итальянских ответов по подсказкам кроссвордов.

242скачиваний за 30 дней2лайкавеса обновлены17 сен 2026

Бенчмарки

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

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

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

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

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

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

CrosswordSpace++ — модель первого этапа поиска ответов на итальянские кроссвордные подсказки, разработанная cruciverb-it. Это асимметричный двухбашенный энкодер на базе sentence-transformers/paraphrase-multilingual-mpnet-base-v2: отдельные энкодеры обрабатывают подсказки и ответы, а общий слой нормализации и линейная проекция преобразуют их в векторы размерности 768. Модель дообучена контрастивным обучением на 374 766 парах из обучающей выборки EVALITA 2026 CruciverbIT Task 1.

Модель предназначена для извлечения кандидатов по близости векторов: ответы ищутся по вектору подсказки, например, с помощью FAISS и внутреннего произведения. В исходном конвейере сначала отбираются до 100 кандидатов подходящей длины, затем их ранжирует отдельный кросс-энкодер. Максимальная длина входа составляет 64 токена для подсказки и 16 токенов для ответа. В испытании на тестовой выборке EVALITA 2026 модель показала точность Acc@1 57,9%; совместное использование с кросс-энкодером повысило её до 68,2%.

Модель ориентирована на итальянский язык и специализированный сценарий решения кроссвордов. Лицензия — CC BY 4.0.

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

  • поиск ответов на итальянские подсказки кроссвордов
  • извлечение кандидатов ответов по заданной длине
  • построение векторного индекса пар «подсказка — ответ»
  • семантический поиск по базе итальянских ответов на кроссвордные вопросы

Ограничения

Модель рассчитана на итальянские кроссвордные подсказки, а длина входа ограничена 64 токенами для подсказки и 16 токенами для ответа. Она извлекает кандидатов, а для повышения качества в исходном конвейере используется отдельный кросс-энкодер-реранкер.

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

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

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

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

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

Открыть на Hugging Face

CrosswordSpace++ dual encoder (MPNet-base ADE)

The first-stage retriever of CrosswordSpace++. It is an Asymmetric Dual Encoder (ADE) for Italian crossword clue answering, trained with contrastive learning on the EVALITA 2026 CruciverbIT training set.

Clues and candidate answers are projected into a shared 768-dimensional space, so candidates can be retrieved with FAISS inner-product search. In the CrosswordSpace++ pipeline, the top-100 length-filtered candidates from this model are reranked by the cross-encoder cruciverb-it/crosswordspacepp-reranker. The two scores are then combined.

Code: https://github.com/snizio/crosswordspacepp

Model Description

  • Architecture: Asymmetric Dual Encoder with two separate XLM-RoBERTa encoders (one for clues, one for answers), mean pooling, a shared LayerNorm and a shared linear projection head. It is the same architecture as cruciverb-it/crossword-space-mpnet-base-ade.
  • Base encoder: sentence-transformers/paraphrase-multilingual-mpnet-base-v2
  • Training objective: symmetric contrastive loss (InfoNCE) with in-batch hard negative mining (hard-negative fraction decayed linearly from 0.8 to 0.2) and a learnable temperature
  • Training data: EVALITA 2026 CruciverbIT Task 1 train split (374,766 clue-answer pairs), batch size 256, 10 epochs; the checkpoint with the lowest validation loss (step 13,899) is released
  • Max length: 64 tokens for clues, 16 tokens for answers
  • Embedding dimension: 768

Usage

import torch
import torch.nn.functional as F
from transformers import AutoModel, AutoTokenizer

repo = "cruciverb-it/crosswordspacepp-dualencoder"
model = AutoModel.from_pretrained(repo, trust_remote_code=True).eval()
tokenizer = AutoTokenizer.from_pretrained(repo)

clues = ["Giorni di metà mese nell'antica Roma", "Possono sostituire le mostrine"]
answers = ["idi", "alamari", "mese"]

clue_enc = tokenizer(clues, padding=True, truncation=True, max_length=64, return_tensors="pt")
ans_enc = tokenizer(answers, padding=True, truncation=True, max_length=16, return_tensors="pt")

with torch.no_grad():
    clue_emb, ans_emb = model(
        def_input_ids=clue_enc["input_ids"],
        def_attention_mask=clue_enc["attention_mask"],
        ans_input_ids=ans_enc["input_ids"],
        ans_attention_mask=ans_enc["attention_mask"],
    )

similarity = F.normalize(clue_emb, dim=-1) @ F.normalize(ans_emb, dim=-1).T
print(similarity)
# tensor([[ 0.8244,  0.0907,  0.3886],
#         [ 0.0270,  0.7899, -0.0285]])

To encode only clues (or only answers), call a single tower and apply the shared head:

out = model.encoder_def(input_ids=..., attention_mask=...)       # model.encoder_ans for answers
emb = model.projection(model.layer_norm(mean_pooling(out.last_hidden_state, attention_mask)))

mean_pooling is defined in model.py in this repository.

Evaluation

Results on the EVALITA 2026 CruciverbIT Task 1 test set (20,821 clues). The index is restricted to answers of the expected length.

SystemAcc@1Acc@10MRR@10
Bi-encoder (this model)57.980.965.8
Bi-encoder + cross-encoder blend (α = 0.17)68.285.574.5

Citation

TBD

License

CC BY 4.0

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

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

GPU в ailist

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

Нельзя запустить

Модели нужен код из репозитория; автор пока не в списке доверенных организаций.

Класс архитектуры
DualEncoderADE
Ревизия весов
51aaeb4

0 моделей