Views
No views yet
1import torch.nn.functional as F
2
3from torch import Tensor
4from transformers import AutoTokenizer, AutoModel
5
6tokenizer = AutoTokenizer.from_pretrained('Metric-AI/armenian-text-embeddings-1')
7model = AutoModel.from_pretrained('Metric-AI/armenian-text-embeddings-1')
8
9
10def average_pool(last_hidden_states: Tensor,
11 attention_mask: Tensor) -> Tensor:
12 last_hidden = last_hidden_states.masked_fill(~attention_mask[..., None].bool(), 0.0)
13 return last_hidden.sum(dim=1) / attention_mask.sum(dim=1)[..., None]
14
15
16# Each input text should start with "query: " or "passage: ", even for non-English texts.
17# For tasks other than retrieval, you can simply use the "query: " prefix.
18input_texts = [
19 'query: Ինչպե՞ս պատրաստել տոլմա', # How to make tolma
20 'query: Քանի՞ գրամ սպիտակուց է հարկավոր օրական', # How many grams of protein needed daily
21
22 """passage: Տոլմայի բաղադրատոմս՝
23 Բաղադրիչներ՝
24 - 500գ աղացած միս
25 - 1 բաժակ բրինձ
26 - Խաղողի տերևներ
27 - 2 գլուխ սոխ
28 - Համեմունքներ՝ աղ, սև պղպեղ, քարի
29
30 Պատրաստման եղանակը՝
31 1. Միսը խառնել բրնձի, մանր կտրատած սոխի և համեմունքների հետ
32 2. Խաղողի տերևները լվանալ և թողնել տաք ջրի մեջ 10 րոպե
33 3. Լցոնել տերևները և դասավորել կաթսայի մեջ
34 4. Եփել դանդաղ կրակի վրա 45-60 րոպե""", # Detailed tolma recipe
35
36 """passage: Սպիտակուցի օրական չափաբաժինը կախված է մարդու քաշից, սեռից և ֆիզիկական ակտիվությունից:
37 Միջին հաշվով, կանանց համար խորհուրդ է տրվում 46-50 գրամ սպիտակուց օրական:
38 Մարզիկների համար այս թիվը կարող է հասնել մինչև 1.6-2 գրամ մարմնի քաշի յուրաքանչյուր կիլոգրամի համար:
39 Հղիների համար պահանջվում է լրացուցիչ 25 գրամ սպիտակուց:
40
41 Սպիտակուցի հարուստ աղբյուրներ են՝
42 - Հավի միս (31գ/100գ)
43 - Ձու (13գ/100գ)
44 - Ոսպ (25գ/100գ)
45 - Մածուն (3.5գ/100գ)"""] # Detailed protein intake advice
46
47# Tokenize the input texts
48batch_dict = tokenizer(input_texts, max_length=512, padding=True, truncation=True, return_tensors='pt')
49outputs = model(**batch_dict)
50embeddings = average_pool(outputs.last_hidden_state, batch_dict['attention_mask'])
51
52# normalize embeddings
53embeddings = F.normalize(embeddings, p=2, dim=1)
54scores = (embeddings[:2] @ embeddings[2:].T) * 100
55print(scores.tolist())
56
57# [[83.96063232421875, 30.283924102783203], [32.504661560058594, 82.4246826171875]]1from sentence_transformers import SentenceTransformer
2model = SentenceTransformer('Metric-AI/armenian-text-embeddings-1')
3
4embeddings = model.encode(input_texts, normalize_embeddings=True)1@misc{armenian-text-embeddings-1,
2 author = {Spartak Bughdaryan, Zaruhi Navasardyan, Bagrat Minasyan, Hrant Davtyan},
3 title = {Armenian-Text-Embeddings-1: Enhanced Armenian Language Embeddings},
4 year = {2024},
5 howpublished = {\url{https://metric.am/blog/announcing-armenian-text-embeddings/}}
6}