ai-forever commited on
Commit
7292217
1 Parent(s): 971dfab

Update README.md

Browse files
Files changed (1) hide show
  1. README.md +20 -19
README.md CHANGED
@@ -1547,24 +1547,25 @@ model-index:
1547
  type: PairClassification
1548
  license: mit
1549
  language:
1550
- - ru
1551
- - en
1552
  tags:
1553
- - mteb
1554
- - transformers
1555
- - sentence-transformers
1556
  base_model: ai-forever/FRED-T5-1.7B
 
1557
  ---
1558
 
1559
- ---
1560
  # Model Card for FRIDA
1561
- ## FRIDA full-scaled finetuned retrieval model inspired by denoising architecture based on T5
1562
  <figure>
1563
  <img src="img.jpg">
1564
  </figure>
1565
- The FRIDA is a general text embedding model for Russian. The model is based on the encoder part of FRED-T5 (https://huggingface.co/ai-forever/FRED-T5-1.7B). It has been pre-trained on a Russian-English dataset and fine-tuned for improved performance on the target task.
1566
 
1567
- For more model details please refer to our [article](TODO).
 
 
1568
 
1569
  ## Usage
1570
 
@@ -1575,7 +1576,7 @@ We use the following basic rules to choose a prefix:
1575
  - `"paraphrase: "` prefix is for symmetric paraphrasing related tasks (STS, paraphrase mining, deduplication)
1576
  - `"categorize: "` prefix is for asymmetric matching of document title and body (e.g. news, scientific papers, social posts)
1577
  - `"categorize_sentiment: "` prefix is for any tasks that rely on sentiment features (e.g. hate, toxic, emotion)
1578
- - `"categorize_topic: "` prefix is ​​intended for tasks where you need to group texts by topic
1579
  - `"categorize_entailment: "` prefix is for textual entailment task (NLI)
1580
 
1581
  To better tailor the model to your needs, you can fine-tune it with relevant high-quality Russian and English datasets.
@@ -1607,7 +1608,7 @@ inputs = [
1607
  "paraphrase: Ярославским баням разрешили работать без посетителей",
1608
  "categorize_entailment: Женщину спасают врачи.",
1609
  "search_document: Чтобы вкрутить лампочку, требуется три программиста: один напишет программу извлечения лампочки, другой — вкручивания лампочки, а третий проведет тестирование."
1610
- ]
1611
 
1612
  tokenizer = AutoTokenizer.from_pretrained("ai-forever/FRIDA")
1613
  model = T5EncoderModel.from_pretrained("ai-forever/FRIDA")
@@ -1626,7 +1627,7 @@ embeddings = pool(
1626
  embeddings = F.normalize(embeddings, p=2, dim=1)
1627
  sim_scores = embeddings[:3] @ embeddings[3:].T
1628
  print(sim_scores.diag().tolist())
1629
- # [0.4796873927116394, 0.9409002065658569, 0.7761015892028809]
1630
  ```
1631
 
1632
  ### SentenceTransformers
@@ -1643,7 +1644,7 @@ inputs = [
1643
  "paraphrase: Ярославским баням разрешили работать без посетителей",
1644
  "categorize_entailment: Женщину спасают врачи.",
1645
  "search_document: Чтобы вкрутить лампочку, требуется три программиста: один напишет программу извлечения лампочки, другой — вкручивания лампочки, а третий проведет тестирование."
1646
- ]
1647
 
1648
  # loads model with CLS pooling
1649
  model = SentenceTransformer("ai-forever/FRIDA")
@@ -1653,7 +1654,7 @@ embeddings = model.encode(inputs, convert_to_tensor=True)
1653
 
1654
  sim_scores = embeddings[:3] @ embeddings[3:].T
1655
  print(sim_scores.diag().tolist())
1656
- # [0.47968706488609314, 0.940900444984436, 0.7761018872261047]
1657
  ```
1658
 
1659
  or using prompts (sentence-transformers>=2.4.0):
@@ -1665,19 +1666,19 @@ from sentence_transformers import SentenceTransformer
1665
  model = SentenceTransformer("ai-forever/FRIDA")
1666
 
1667
  paraphrase = model.encode(["В Ярославской области разрешили работу бань, но без посетителей", "Ярославским баням разрешили работать без посетителей"], prompt_name="paraphrase")
1668
- print(paraphrase[0] @ paraphrase[1].T) # 0.47968706488609314
1669
 
1670
  categorize_entailment = model.encode(["Женщину доставили в больницу, за ее жизнь сейчас борются врачи.", "Женщину спасают врачи."], prompt_name="categorize_entailment")
1671
- print(categorize_entailment[0] @ categorize_entailment[1].T) # 0.940900444984436
1672
 
1673
  query_embedding = model.encode("Сколько программистов нужно, чтобы вкрутить лампочку?", prompt_name="search_query")
1674
  document_embedding = model.encode("Чтобы вкрутить лампочку, требуется три программиста: один напишет программу извлечения лампочки, другой — вкручивания лампочки, а третий проведет тестирование.", prompt_name="search_document")
1675
- print(query_embedding @ document_embedding.T) # 0.7761018872261047
1676
  ```
1677
 
1678
- + # Authors
1679
  + [SaluteDevices](https://sberdevices.ru/) AI for B2C RnD Team.
1680
- + Artem Snegirev: [HF profile](https://huggingface.co/artemsnegirev);
1681
  + Anna Maksimova [HF profile](https://huggingface.co/anpalmak);
1682
  + Aleksandr Abramov: [HF profile](https://huggingface.co/Andrilko), [Github](https://github.com/Ab1992ao), [Kaggle Competitions Master](https://www.kaggle.com/andrilko)
1683
 
 
1547
  type: PairClassification
1548
  license: mit
1549
  language:
1550
+ - ru
1551
+ - en
1552
  tags:
1553
+ - mteb
1554
+ - transformers
1555
+ - sentence-transformers
1556
  base_model: ai-forever/FRED-T5-1.7B
1557
+ pipeline_tag: feature-extraction
1558
  ---
1559
 
 
1560
  # Model Card for FRIDA
1561
+
1562
  <figure>
1563
  <img src="img.jpg">
1564
  </figure>
 
1565
 
1566
+ FRIDA is a full-scale finetuned general text embedding model inspired by denoising architecture based on T5. The model is based on the encoder part of [FRED-T5](https://arxiv.org/abs/2309.10931) model and continues research of text embedding models ([ruMTEB](https://arxiv.org/abs/2408.12503), [ru-en-RoSBERTa](https://huggingface.co/ai-forever/ru-en-RoSBERTa)). It has been pre-trained on a Russian-English dataset and fine-tuned for improved performance on the target task.
1567
+
1568
+ For more model details please refer to our technical report [TODO].
1569
 
1570
  ## Usage
1571
 
 
1576
  - `"paraphrase: "` prefix is for symmetric paraphrasing related tasks (STS, paraphrase mining, deduplication)
1577
  - `"categorize: "` prefix is for asymmetric matching of document title and body (e.g. news, scientific papers, social posts)
1578
  - `"categorize_sentiment: "` prefix is for any tasks that rely on sentiment features (e.g. hate, toxic, emotion)
1579
+ - `"categorize_topic: "` prefix is intended for tasks where you need to group texts by topic
1580
  - `"categorize_entailment: "` prefix is for textual entailment task (NLI)
1581
 
1582
  To better tailor the model to your needs, you can fine-tune it with relevant high-quality Russian and English datasets.
 
1608
  "paraphrase: Ярославским баням разрешили работать без посетителей",
1609
  "categorize_entailment: Женщину спасают врачи.",
1610
  "search_document: Чтобы вкрутить лампочку, требуется три программиста: один напишет программу извлечения лампочки, другой — вкручивания лампочки, а третий проведет тестирование."
1611
+ ]
1612
 
1613
  tokenizer = AutoTokenizer.from_pretrained("ai-forever/FRIDA")
1614
  model = T5EncoderModel.from_pretrained("ai-forever/FRIDA")
 
1627
  embeddings = F.normalize(embeddings, p=2, dim=1)
1628
  sim_scores = embeddings[:3] @ embeddings[3:].T
1629
  print(sim_scores.diag().tolist())
1630
+ # [0.9360030293464661, 0.8591322302818298, 0.728583037853241]
1631
  ```
1632
 
1633
  ### SentenceTransformers
 
1644
  "paraphrase: Ярославским баням разрешили работать без посетителей",
1645
  "categorize_entailment: Женщину спасают врачи.",
1646
  "search_document: Чтобы вкрутить лампочку, требуется три программиста: один напишет программу извлечения лампочки, другой — вкручивания лампочки, а третий проведет тестирование."
1647
+ ]
1648
 
1649
  # loads model with CLS pooling
1650
  model = SentenceTransformer("ai-forever/FRIDA")
 
1654
 
1655
  sim_scores = embeddings[:3] @ embeddings[3:].T
1656
  print(sim_scores.diag().tolist())
1657
+ # [0.9360026717185974, 0.8591331243515015, 0.7285830974578857]
1658
  ```
1659
 
1660
  or using prompts (sentence-transformers>=2.4.0):
 
1666
  model = SentenceTransformer("ai-forever/FRIDA")
1667
 
1668
  paraphrase = model.encode(["В Ярославской области разрешили работу бань, но без посетителей", "Ярославским баням разрешили работать без посетителей"], prompt_name="paraphrase")
1669
+ print(paraphrase[0] @ paraphrase[1].T) # 0.9360032
1670
 
1671
  categorize_entailment = model.encode(["Женщину доставили в больницу, за ее жизнь сейчас борются врачи.", "Женщину спасают врачи."], prompt_name="categorize_entailment")
1672
+ print(categorize_entailment[0] @ categorize_entailment[1].T) # 0.8591322
1673
 
1674
  query_embedding = model.encode("Сколько программистов нужно, чтобы вкрутить лампочку?", prompt_name="search_query")
1675
  document_embedding = model.encode("Чтобы вкрутить лампочку, требуется три программиста: один напишет программу извлечения лампочки, другой — вкручивания лампочки, а третий проведет тестирование.", prompt_name="search_document")
1676
+ print(query_embedding @ document_embedding.T) # 0.7285831
1677
  ```
1678
 
1679
+ ## Authors
1680
  + [SaluteDevices](https://sberdevices.ru/) AI for B2C RnD Team.
1681
+ + Artem Snegirev: [HF profile](https://huggingface.co/artemsnegirev), [Github](https://github.com/artemsnegirev);
1682
  + Anna Maksimova [HF profile](https://huggingface.co/anpalmak);
1683
  + Aleksandr Abramov: [HF profile](https://huggingface.co/Andrilko), [Github](https://github.com/Ab1992ao), [Kaggle Competitions Master](https://www.kaggle.com/andrilko)
1684