e5-base-korean / README.md
upskyy's picture
Upload folder using huggingface_hub
ffcc0dc verified
|
raw
history blame
9.82 kB
metadata
language:
  - multilingual
  - af
  - am
  - ar
  - as
  - az
  - be
  - bg
  - bn
  - br
  - bs
  - ca
  - cs
  - cy
  - da
  - de
  - el
  - en
  - eo
  - es
  - et
  - eu
  - fa
  - fi
  - fr
  - fy
  - ga
  - gd
  - gl
  - gu
  - ha
  - he
  - hi
  - hr
  - hu
  - hy
  - id
  - is
  - it
  - ja
  - jv
  - ka
  - kk
  - km
  - kn
  - ko
  - ku
  - ky
  - la
  - lo
  - lt
  - lv
  - mg
  - mk
  - ml
  - mn
  - mr
  - ms
  - my
  - ne
  - nl
  - 'no'
  - om
  - or
  - pa
  - pl
  - ps
  - pt
  - ro
  - ru
  - sa
  - sd
  - si
  - sk
  - sl
  - so
  - sq
  - sr
  - su
  - sv
  - sw
  - ta
  - te
  - th
  - tl
  - tr
  - ug
  - uk
  - ur
  - uz
  - vi
  - xh
  - yi
  - zh
license: mit
library_name: sentence-transformers
tags:
  - korean
  - sentence-transformers
  - transformers
  - multilingual
  - sentence-transformers
  - sentence-similarity
  - feature-extraction
base_model: intfloat/multilingual-e5-base
datasets: []
metrics:
  - pearson_cosine
  - spearman_cosine
  - pearson_manhattan
  - spearman_manhattan
  - pearson_euclidean
  - spearman_euclidean
  - pearson_dot
  - spearman_dot
  - pearson_max
  - spearman_max
widget:
  - source_sentence: 이집트 군대가 형제애를 단속하다
    sentences:
      - 이집트의 군대가 무슬림 형제애를 단속하다
      - 아르헨티나의 기예르모 코리아와 네덜란드의 마틴 버커크의  다른 준결승전도 매력적이다.
      - 그것이 사실일 수도 있다고 생각하는 것은 재미있다.
  - source_sentence: 오, 그리고 다시 결혼은 근본적인 인권이라고 주장한다.
    sentences:
      - 특히 결혼은 근본적인 인권이라고 말한 후에.
      - 해변에 있는 흑인과 그의 개...
      - 이란은  프로그램이 평화적인 목적을 위한 것이라고 주장한다
  - source_sentence: 담배 피우는 여자.
    sentences:
      - >-
        이것은 내가 영국의 아서 안데르센 사업부의 파트너인 짐 와디아를 아서 안데르센 경영진이 선택한 것보다 래리 웨인바흐를 안데르센
        월드와이드의 경영 파트너로 승계하기 위해 안데르센 컨설팅 사업부(현재의 엑센츄어라고 알려져 있음)의 전 관리 파트너인 조지 샤힌에
        대한 지지를 표명했을 때 가장 명백했다.
      -  여자가   잔을 마시고 있다.
      -  여성이 담배를 피우면서 청구서를 지불하는 것을 압도했다.
  - source_sentence: 루이 15세의 소수 민족인 프랑스의 리젠트인 필리프 도를레앙 시대에는 악명 높은 오르가즘의 현장이었다.
    sentences:
      - 필립 도린스는 루이 15세가 70대였을  섭정이었다.
      - 행복한 어린 소년이 커다란 엘모 인형이 있는 의자에 앉아 있다.
      - 필리프 도를레앙 시대에는 그곳에서 많은 유명한 오르가즘이 일어났다.
  - source_sentence:  남자가 안에서 일하고 있다
    sentences:
      - 국립공원에서 가장  마을인 케스윅의 인구는 매년 여름 등산객, 뱃사람, 관광객이 도착함에 따라 증가한다.
      -  남자가 축구 경기를 보고 간식을 먹는다.
      -  남자가 집에 타일을 깔았다.
pipeline_tag: sentence-similarity
model-index:
  - name: upskyy/e5-base-korean
    results:
      - task:
          type: semantic-similarity
          name: Semantic Similarity
        dataset:
          name: sts dev
          type: sts-dev
        metrics:
          - type: pearson_cosine
            value: 0.8593935914692068
            name: Pearson Cosine
          - type: spearman_cosine
            value: 0.8572594228080116
            name: Spearman Cosine
          - type: pearson_manhattan
            value: 0.8217336375412545
            name: Pearson Manhattan
          - type: spearman_manhattan
            value: 0.8280050978871264
            name: Spearman Manhattan
          - type: pearson_euclidean
            value: 0.8208931119126335
            name: Pearson Euclidean
          - type: spearman_euclidean
            value: 0.8277058727421436
            name: Spearman Euclidean
          - type: pearson_dot
            value: 0.8187961699085111
            name: Pearson Dot
          - type: spearman_dot
            value: 0.8236175658758088
            name: Spearman Dot
          - type: pearson_max
            value: 0.8593935914692068
            name: Pearson Max
          - type: spearman_max
            value: 0.8572594228080116
            name: Spearman Max

SentenceTransformer based on intfloat/multilingual-e5-base

This model is korsts and kornli finetuning model from intfloat/multilingual-e5-base. It maps sentences & paragraphs to a 768-dimensional dense vector space and can be used for semantic textual similarity, semantic search, paraphrase mining, text classification, clustering, and more.

Model Details

Model Description

  • Model Type: Sentence Transformer
  • Base model: intfloat/multilingual-e5-base
  • Maximum Sequence Length: 512 tokens
  • Output Dimensionality: 768 tokens
  • Similarity Function: Cosine Similarity

Full Model Architecture

SentenceTransformer(
  (0): Transformer({'max_seq_length': 512, 'do_lower_case': False}) with Transformer model: XLMRobertaModel 
  (1): Pooling({'word_embedding_dimension': 768, 'pooling_mode_cls_token': False, 'pooling_mode_mean_tokens': True, 'pooling_mode_max_tokens': False, 'pooling_mode_mean_sqrt_len_tokens': False, 'pooling_mode_weightedmean_tokens': False, 'pooling_mode_lasttoken': False, 'include_prompt': True})
)

Usage

Usage (Sentence-Transformers)

First install the Sentence Transformers library:

pip install -U sentence-transformers

Then you can load this model and run inference.

from sentence_transformers import SentenceTransformer

# Download from the 🤗 Hub
model = SentenceTransformer("upskyy/e5-base-korean")

# Run inference
sentences = [
    '아이를 가진 엄마가 해변을 걷는다.',
    '두 사람이 해변을 걷는다.',
    '한 남자가 해변에서 개를 산책시킨다.',
]
embeddings = model.encode(sentences)
print(embeddings.shape)
# [3, 768]

# Get the similarity scores for the embeddings
similarities = model.similarity(embeddings, embeddings)
print(similarities.shape)
# [3, 3]

Usage (HuggingFace Transformers)

Without sentence-transformers, you can use the model like this: First, you pass your input through the transformer model, then you have to apply the right pooling-operation on-top of the contextualized word embeddings.

from transformers import AutoTokenizer, AutoModel
import torch


# Mean Pooling - Take attention mask into account for correct averaging
def mean_pooling(model_output, attention_mask):
    token_embeddings = model_output[0] # First element of model_output contains all token embeddings
    input_mask_expanded = attention_mask.unsqueeze(-1).expand(token_embeddings.size()).float()
    return torch.sum(token_embeddings * input_mask_expanded, 1) / torch.clamp(input_mask_expanded.sum(1), min=1e-9)


# Sentences we want sentence embeddings for
sentences = ["안녕하세요?", "한국어 문장 임베딩을 위한 버트 모델입니다."]

# Load model from HuggingFace Hub
tokenizer = AutoTokenizer.from_pretrained("upskyy/e5-base-korean")
model = AutoModel.from_pretrained("upskyy/e5-base-korean")

# Tokenize sentences
encoded_input = tokenizer(sentences, padding=True, truncation=True, return_tensors="pt")

# Compute token embeddings
with torch.no_grad():
    model_output = model(**encoded_input)

# Perform pooling. In this case, mean pooling.
sentence_embeddings = mean_pooling(model_output, encoded_input["attention_mask"])

print("Sentence embeddings:")
print(sentence_embeddings)

Evaluation

Metrics

Semantic Similarity

Metric Value
pearson_cosine 0.8594
spearman_cosine 0.8573
pearson_manhattan 0.8217
spearman_manhattan 0.828
pearson_euclidean 0.8209
spearman_euclidean 0.8277
pearson_dot 0.8188
spearman_dot 0.8236
pearson_max 0.8594
spearman_max 0.8573

Framework Versions

  • Python: 3.10.13
  • Sentence Transformers: 3.0.1
  • Transformers: 4.42.4
  • PyTorch: 2.3.0+cu121
  • Accelerate: 0.30.1
  • Datasets: 2.16.1
  • Tokenizers: 0.19.1

Citation

BibTeX

Sentence Transformers

@article{wang2024multilingual,
  title={Multilingual E5 Text Embeddings: A Technical Report},
  author={Wang, Liang and Yang, Nan and Huang, Xiaolong and Yang, Linjun and Majumder, Rangan and Wei, Furu},
  journal={arXiv preprint arXiv:2402.05672},
  year={2024}
}
@inproceedings{reimers-2019-sentence-bert,
    title = "Sentence-BERT: Sentence Embeddings using Siamese BERT-Networks",
    author = "Reimers, Nils and Gurevych, Iryna",
    booktitle = "Proceedings of the 2019 Conference on Empirical Methods in Natural Language Processing",
    month = "11",
    year = "2019",
    publisher = "Association for Computational Linguistics",
    url = "https://arxiv.org/abs/1908.10084",
}