dangvantuan/vietnamese-embedding
vietnamese-embedding es un modelo de incrustación especializado para el idioma vietnamita, aprovechando las capacidades robustas de PhoBERT, un modelo de lenguaje preentrenado basado en la arquitectura RoBERTa. El modelo utiliza PhoBERT para codificar oraciones vietnamitas en un espacio vectorial de 768 dimensiones, facilitando una amplia gama de aplicaciones, desde la búsqueda semántica hasta la agrupación de texto. Las incrustaciones capturan los significados matizados de las oraciones vietnamitas, reflejando tanto las capas léxicas como contextuales del idioma.
Como usar
Usando este modelo se vuelve fácil cuando tienes instalado sentence-transformers:
pip install -U sentence-transformers
pip install -q pyvi
Luego puedes usar el modelo así:
from sentence_transformers import SentenceTransformer
from pyvi.ViTokenizer import tokenize
sentences = ["Hà Nội là thủ đô của Việt Nam", "Đà Nẵng là thành phố du lịch"]
tokenizer_sent = [tokenize(sent) for sent in sentences]
model = SentenceTransformer('dangvantuan/vietnamese-embedding')
embeddings = model.encode(tokenizer_sent)
print(embeddings)
Evaluación
from sentence_transformers import SentenceTransformer
from sentence_transformers import SentenceTransformer
from sentence_transformers.readers import InputExample
from datasets import load_dataset
from pyvi.ViTokenizer import tokenize
def convert_dataset(dataset):
dataset_samples = []
for df in dataset:
score = float(df['score']) / 5.0 # Normalizar la puntuación en el rango 0 ... 1
inp_example = InputExample(texts=[tokenize(df['sentence1']), tokenize(df['sentence2'])], label=score)
dataset_samples.append(inp_example)
return dataset_samples
# Cargar el conjunto de datos para evaluación
vi_sts = load_dataset("doanhieung/vi-stsbenchmark") ["train"]
df_dev = vi_sts.filter(lambda example: example['split'] == 'dev')
df_test = vi_sts.filter(lambda example: example['split'] == 'test')
# Convertir el conjunto de datos para evaluación
# Para el conjunto de desarrollo:
dev_samples = convert_dataset(df_dev)
val_evaluator = EmbeddingSimilarityEvaluator.from_input_examples(dev_samples, name='sts-dev')
val_evaluator(model, output_path="./")
# Para el conjunto de prueba:
test_samples = convert_dataset(df_test)
test_evaluator = EmbeddingSimilarityEvaluator.from_input_examples(test_samples, name='sts-test')
test_evaluator(model, output_path="./")
Funcionalidades
- Segmentador de oraciones vietnamitas (tokenize)
- Codificación de oraciones vietnamitas en vectores de 768 dimensiones
- Utiliza Triplet Loss para aprender de pares de oraciones anotadas de alta calidad
- Entrenamiento en múltiples etapas con diferentes conjuntos de datos y técnicas de ajuste fino
- Captura de similitud semántica precisa en diversos tipos de textos vietnamitas
- Estrategias avanzadas de muestreo de pares
Casos de uso
- Búsqueda semántica
- Agrupación de texto
- Análisis de similaridad semántica
- Clasificación de textos
- Detección de contextos y significados en textos vietnamitas