rmihaylov's picture
Update README.md
554eb76
|
raw
history blame
3.74 kB
metadata
inference: false
language:
  - bg
license: mit
datasets:
  - oscar
  - chitanka
  - wikipedia
tags:
  - torch

ROBERTA BASE (cased) finetuned on private Bulgarian STSB, NLI data

This model is cased: it does make a difference between bulgarian and Bulgarian.

It was finetuned on private Bulgarian STSB, NLI data.

Then, it was compressed via progressive module replacing.

How to use

Here is how to use this model in PyTorch:

>>> import scipy
>>> import torch
>>> from transformers import AutoModel, AutoTokenizer
>>> 
>>> model = AutoModel.from_pretrained('rmihaylov/roberta-base-nli-stsb-theseus-bg')
>>> tokenizer = AutoTokenizer.from_pretrained('rmihaylov/roberta-base-nli-stsb-theseus-bg')
>>>
>>> def embed(text):
>>>     inputs = tokenizer.encode_plus(text, return_tensors='pt')
>>>     outputs = model(**inputs)
>>>     sequence_output = outputs[0]
>>>     input_mask_expanded = inputs['attention_mask'].unsqueeze(-1).expand(sequence_output.size()).float()
>>>     embeddings = torch.sum(sequence_output * input_mask_expanded, 1) / torch.clamp(input_mask_expanded.sum(1), min=1e-9)
>>>     return embeddings.detach().numpy()[0]
>>> 
>>> 
>>> query_embedding = embed("Какви са съставките на бисквитките?")
>>> 
>>> questions = [
>>>     "Какво е бисквитка?",
>>>     "От какво са направени бисквитките?",
>>>     "Използват ли в Англия думата бисквитки?",
>>>     "Къде се правят бисквитките?",
>>>     "Какви видове бисквитки има?",
>>>     "Къде човек може да купи бисквитки?",
>>>     "Откъде дойде думата бисквитка?",
>>>     "Кое е чудовището на бисквитките?",
>>>     "Как да си направите бисквитки у дома?",
>>>     "Колко калории има типичната бисквитка?",
>>>     "Какви напитки вървят добре с бисквитките?",
>>>     "Бисквитките наричат ли се също сладки?"
>>>     ]
>>> 
>>> corpus, corpus_embeddings = [], []
>>> for question in questions:
>>>     embedding = embed(question)
>>>     corpus.append(question)
>>>     corpus_embeddings.append(embedding)
>>> 
>>> distances = scipy.spatial.distance.cdist([query_embedding], corpus_embeddings, "cosine")[0]
>>> 
>>> results = zip(range(len(distances)), distances)
>>> results = sorted(results, key=lambda x: x[1])
>>> 
>>> print([[corpus[idx].strip(), (1.0 - distance)] for idx, distance in results])

[['От какво са направени бисквитките?', 0.9855158537034977],
 ['Къде се правят бисквитките?', 0.9774093134195002],
 ['Какви видове бисквитки има?', 0.9766014240577192],
 ['Използват ли в Англия думата бисквитки?', 0.9446492058523037],
 ['Кое е чудовището на бисквитките?', 0.9269786184641834],
 ['Къде човек може да купи бисквитки?', 0.9268900421152592],
 ['Какво е бисквитка?', 0.9188155080718263],
 ['Бисквитките наричат ли се също сладки?', 0.9060368627614406],
 ['Откъде дойде думата бисквитка?', 0.9048309659657036],
 ['Какви напитки вървят добре с бисквитките?', 0.890836765118977],
 ['Как да си направите бисквитки у дома?', 0.8878968487540497],
 ['Колко калории има типичната бисквитка?', 0.8652821650136402]]