ai-forever
commited on
Commit
•
7292217
1
Parent(s):
971dfab
Update README.md
Browse files
README.md
CHANGED
@@ -1547,24 +1547,25 @@ model-index:
|
|
1547 |
type: PairClassification
|
1548 |
license: mit
|
1549 |
language:
|
1550 |
-
|
1551 |
-
|
1552 |
tags:
|
1553 |
-
|
1554 |
-
|
1555 |
-
|
1556 |
base_model: ai-forever/FRED-T5-1.7B
|
|
|
1557 |
---
|
1558 |
|
1559 |
-
---
|
1560 |
# Model Card for FRIDA
|
1561 |
-
|
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 |
-
|
|
|
|
|
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
|
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.
|
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.
|
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.
|
1669 |
|
1670 |
categorize_entailment = model.encode(["Женщину доставили в больницу, за ее жизнь сейчас борются врачи.", "Женщину спасают врачи."], prompt_name="categorize_entailment")
|
1671 |
-
print(categorize_entailment[0] @ categorize_entailment[1].T) # 0.
|
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.
|
1676 |
```
|
1677 |
|
1678 |
-
|
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 |
|