/ Модель

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

Базовая модель
doctobert-fr-base
Библиотека
sentence-transformers
Опубликована
3 авг 2026

PharmAfiyahProducts

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

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

518скачиваний за 30 дней0лайковвеса обновлены4 авг 2026

Бенчмарки

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

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

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

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

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

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

Fallovski/PharmAfiyahProducts — франкоязычная модель Sentence Transformers от Fallovski для поиска совпадающих фармацевтических и парафармацевтических товаров по коротким, сокращённым или неодинаково записанным названиям. Это дообученный биэнкодер на базе doctolib-lab/doctobert-fr-base с архитектурой RoBERTa: он преобразует названия товаров в плотные векторы размерностью 768 и оценивает их близость по косинусному сходству. Максимальная длина входа — 64 токена.

Модель предназначена для быстрого поиска кандидатов в каталоге, сопоставления товаров, выявления дубликатов и поиска с подсказками. Она обучена на размеченных парах названий товаров и специализирована на точном совпадении товара и его представления — марки, действующего вещества, дозировки, формы, объёма и упаковки. Валидационные метрики включают cosine AP 0,9685 и F1 около 0,90; результаты относятся к указанному набору данных.

Модель не предназначена для общей семантической близости: варианты, различающиеся дозировкой, объёмом или маркой, должны считаться разными. Указанный базовый энкодер франкоязычный, а обучение модели проводилось на названиях продуктов; перенос на другие языки и каталоги требует проверки. Лицензия в предоставленных данных не указана.

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

  • Поиск того же товара в каталоге по сокращённому названию
  • Сопоставление аптечных товаров между разными системами учёта
  • Выявление дубликатов товарных карточек с различиями в написании
  • Поиск кандидатов для проверки совпадения бренда, дозировки и упаковки

Ограничения

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

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

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

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

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

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

Открыть на Hugging Face

PharmAfiyahProducts — doctobert fine-tuné pour le matching de produits pharmaceutiques

But du modèle

Ce modèle est un bi-encoder de similarité textuelle, fine-tuné à partir de doctolib-lab/doctobert-fr-base pour la recherche de produits pharmaceutiques et parapharmaceutiques par similarité : à partir d'une désignation de produit (souvent abrégée, écrite de façon incohérente d'un système à l'autre), il permet de retrouver dans un référentiel les produits qui désignent le même produit et la même présentation (même marque, principe actif, dosage, forme galénique, volume, conditionnement), avec un score de similarité cosinus.

Il est conçu pour une étape de retrieval rapide (embeddings + recherche par similarité, ex. via un index FAISS) : à partir d'un produit donné, le modèle retrouve les candidats les plus proches dans un référentiel de produits, à utiliser ensuite pour une déduplication de catalogue, un matching produit, ou une recherche assistée.

Ce n'est pas un modèle de similarité sémantique générale — il est spécialisé sur des noms de produits courts, très abrégés, avec un fort enjeu à distinguer des textes presque identiques qui ne diffèrent que par un dosage, un volume ou une marque (ex. "AMCARD CPR 10MG BT14" vs "AMCARD CPR 5MG BT14" doivent être écartés, pas rapprochés).

Métriques (classification binaire par similarité cosinus, jeu de validation)

MétriqueValeur
Cosine AP (Average Precision)0.9685
Cosine F10.8976
Cosine Precision0.9195
Cosine Recall0.8752
Cosine Accuracy0.8976
Cosine MCC0.7963

Données d'entraînement

  • Base : doctolib-lab/doctobert-fr-base
  • Paires labellisées (1 = même produit/présentation, 0 = différent), issues de comparaisons de désignations de produits pharmaceutiques, labellisées par un LLM puis vérifiées
  • 8481 paires d'entraînement / 1387 de validation, labels globalement équilibrés (train : 4252 négatifs / 4229 positifs)
  • Loss : OnlineContrastiveLoss (similarité cosinus)

This is a sentence-transformers model finetuned from doctolib-lab/doctobert-fr-base. It maps sentences & paragraphs to a 768-dimensional dense vector space and can be used for semantic textual similarity, semantic search, paraphrase mining, text classification, clustering, and more.

Model Details

Model Description

  • Model Type: Sentence Transformer
  • Base model: doctolib-lab/doctobert-fr-base
  • Maximum Sequence Length: 64 tokens
  • Output Dimensionality: 768 dimensions
  • Similarity Function: Cosine Similarity

Model Sources

Full Model Architecture

SentenceTransformer(
  (0): Transformer({'max_seq_length': 64, 'do_lower_case': False, 'architecture': 'RobertaModel'})
  (1): Pooling({'word_embedding_dimension': 768, 'pooling_mode_cls_token': False, 'pooling_mode_mean_tokens': True, 'pooling_mode_max_tokens': False, 'pooling_mode_mean_sqrt_len_tokens': False, 'pooling_mode_weightedmean_tokens': False, 'pooling_mode_lasttoken': False, 'include_prompt': True})
)

Usage

Direct Usage (Sentence Transformers)

First install the Sentence Transformers library:

pip install -U sentence-transformers

Then you can load this model and run inference.

from sentence_transformers import SentenceTransformer

# Download from the 🤗 Hub
model = SentenceTransformer("sentence_transformers_model_id")
# Run inference
sentences = [
    'ACILOC 25MG/ML AMP/2ML BT5 AZANTAC',
    'AZANTAC ACILOC 25MG/ML AMP/2ML B/5',
    'NATURALIA CR SPF20 DEPIG 50 ML',
]
embeddings = model.encode(sentences)
print(embeddings.shape)
# [3, 768]

# Get the similarity scores for the embeddings
similarities = model.similarity(embeddings, embeddings)
print(similarities)
# tensor([[1.0000, 0.9727, 0.3115],
#         [0.9727, 1.0000, 0.2771],
#         [0.3115, 0.2771, 1.0000]])

Evaluation

Metrics

Binary Classification

MetricValue
cosine_accuracy0.8976
cosine_accuracy_threshold0.8936
cosine_f10.8968
cosine_f1_threshold0.8881
cosine_precision0.9195
cosine_recall0.8752
cosine_ap0.9685
cosine_mcc0.7963

Training Details

Training Dataset

Unnamed Dataset

  • Size: 8,481 training samples
  • Columns: name_left, name_right, and label
  • Approximate statistics based on the first 1000 samples:
    name_leftname_rightlabel
    typestringstringfloat
    detailsmin: 3 tokensmean: 16.28 tokensmax: 34 tokensmin: 4 tokensmean: 16.81 tokensmax: 32 tokensmin: 0.0mean: 0.49max: 1.0
  • Samples:
    name_leftname_rightlabel
    EFFACLAR DUO+ 40ML M6940501EFFACLAR DUO+ 40 ML M69405011.0
    AVENE CLEAN SPOT SOIN LOCALISAVENE CLEAN SPOT SOIN LOCALISE1.0
    Canpol Tétine Biberon Standart Croix 2pcs 6M+Canpol Tétine Biberon Standart Slow 3M+ 2pcs0.0
  • Loss: OnlineContrastiveLoss

Training Hyperparameters

Non-Default Hyperparameters

  • eval_strategy: steps
  • gradient_accumulation_steps: 4
  • learning_rate: 2e-05
  • num_train_epochs: 8
  • warmup_ratio: 0.1
  • data_seed: 42
  • fp16: True
  • load_best_model_at_end: True
  • auto_find_batch_size: True

All Hyperparameters

  • overwrite_output_dir: False
  • do_predict: False
  • eval_strategy: steps
  • prediction_loss_only: True
  • per_device_train_batch_size: 8
  • per_device_eval_batch_size: 8
  • per_gpu_train_batch_size: None
  • per_gpu_eval_batch_size: None
  • gradient_accumulation_steps: 4
  • eval_accumulation_steps: None
  • torch_empty_cache_steps: None
  • learning_rate: 2e-05
  • weight_decay: 0.0
  • adam_beta1: 0.9
  • adam_beta2: 0.999
  • adam_epsilon: 1e-08
  • max_grad_norm: 1.0
  • num_train_epochs: 8
  • max_steps: -1
  • lr_scheduler_type: linear
  • lr_scheduler_kwargs: None
  • warmup_ratio: 0.1
  • warmup_steps: 0
  • log_level: passive
  • log_level_replica: warning
  • log_on_each_node: True
  • logging_nan_inf_filter: True
  • save_safetensors: True
  • save_on_each_node: False
  • save_only_model: False
  • restore_callback_states_from_checkpoint: False
  • no_cuda: False
  • use_cpu: False
  • use_mps_device: False
  • seed: 42
  • data_seed: 42
  • jit_mode_eval: False
  • bf16: False
  • fp16: True
  • fp16_opt_level: O1
  • half_precision_backend: auto
  • bf16_full_eval: False
  • fp16_full_eval: False
  • tf32: None
  • local_rank: 0
  • ddp_backend: None
  • tpu_num_cores: None
  • tpu_metrics_debug: False
  • debug: []
  • dataloader_drop_last: False
  • dataloader_num_workers: 0
  • dataloader_prefetch_factor: None
  • past_index: -1
  • disable_tqdm: False
  • remove_unused_columns: True
  • label_names: None
  • load_best_model_at_end: True
  • ignore_data_skip: False
  • fsdp: []
  • fsdp_min_num_params: 0
  • fsdp_config: {'min_num_params': 0, 'xla': False, 'xla_fsdp_v2': False, 'xla_fsdp_grad_ckpt': False}
  • fsdp_transformer_layer_cls_to_wrap: None
  • accelerator_config: {'split_batches': False, 'dispatch_batches': None, 'even_batches': True, 'use_seedable_sampler': True, 'non_blocking': False, 'gradient_accumulation_kwargs': None}
  • parallelism_config: None
  • deepspeed: None
  • label_smoothing_factor: 0.0
  • optim: adamw_torch_fused
  • optim_args: None
  • adafactor: False
  • group_by_length: False
  • length_column_name: length
  • project: huggingface
  • trackio_space_id: trackio
  • ddp_find_unused_parameters: None
  • ddp_bucket_cap_mb: None
  • ddp_broadcast_buffers: False
  • dataloader_pin_memory: True
  • dataloader_persistent_workers: False
  • skip_memory_metrics: True
  • use_legacy_prediction_loop: False
  • push_to_hub: False
  • resume_from_checkpoint: None
  • hub_model_id: None
  • hub_strategy: every_save
  • hub_private_repo: None
  • hub_always_push: False
  • hub_revision: None
  • gradient_checkpointing: False
  • gradient_checkpointing_kwargs: None
  • include_inputs_for_metrics: False
  • include_for_metrics: []
  • eval_do_concat_batches: True
  • fp16_backend: auto
  • push_to_hub_model_id: None
  • push_to_hub_organization: None
  • mp_parameters:
  • auto_find_batch_size: True
  • full_determinism: False
  • torchdynamo: None
  • ray_scope: last
  • ddp_timeout: 1800
  • torch_compile: False
  • torch_compile_backend: None
  • torch_compile_mode: None
  • include_tokens_per_second: False
  • include_num_input_tokens_seen: no
  • neftune_noise_alpha: None
  • optim_target_modules: None
  • batch_eval_metrics: False
  • eval_on_start: False
  • use_liger_kernel: False
  • liger_kernel_config: None
  • eval_use_gather_object: False
  • average_tokens_across_devices: True
  • prompts: None
  • batch_sampler: batch_sampler
  • multi_dataset_batch_sampler: proportional
  • router_mapping: {}
  • learning_rate_mapping: {}

Training Logs

EpochStepTraining Lossvalidation_cosine_ap
0.50141330.34040.8725
1.02660.12810.9267
1.50143990.09430.9419
2.05320.0770.9508
2.50146650.04880.9504
3.07980.05440.9544
3.50149310.0330.9566
4.010640.03940.9571
4.501411970.03080.9590
5.013300.02820.9662
5.501414630.02520.9654
6.015960.02550.9656
6.501417290.01920.9685
7.018620.01490.9685
7.501419950.01850.9686
8.021280.01520.9685
  • The bold row denotes the saved checkpoint.

Framework Versions

  • Python: 3.13.11
  • Sentence Transformers: 5.2.2
  • Transformers: 4.57.6
  • PyTorch: 2.10.0+cu128
  • Accelerate: 1.12.0
  • Datasets: 4.5.0
  • Tokenizers: 0.22.2

Citation

BibTeX

Sentence Transformers

@inproceedings{reimers-2019-sentence-bert,
    title = "Sentence-BERT: Sentence Embeddings using Siamese BERT-Networks",
    author = "Reimers, Nils and Gurevych, Iryna",
    booktitle = "Proceedings of the 2019 Conference on Empirical Methods in Natural Language Processing",
    month = "11",
    year = "2019",
    publisher = "Association for Computational Linguistics",
    url = "https://arxiv.org/abs/1908.10084",
}

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

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

GPU в ailist

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

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

Доступ к модели ограничен автором; у платформы нет доступа к весам.

Ревизия весов
292fa5e

0 моделей