🚀 Bhasha embed v0モデル
これは、ヒンディー語(デーヴァナーガリー文字)、英語、およびローマ字表記のヒンディー語のテキストを埋め込むことができる埋め込みモデルです。多くの多言語埋め込みモデルがヒンディー語と英語のテキストに個別にはうまく機能しますが、以下の機能が欠けています。
- ローマ字表記のヒンディー語のサポート:これは、ローマ字表記のヒンディー語(表音転写されたヒンディー語 / hin_Latn)をサポートする最初の埋め込みモデルです。
- 異言語間のアライメント:このモデルは言語に依存しない埋め込みを出力します。これにより、ヒンディー語、英語、およびローマ字表記のヒンディー語のテキストが混在する多言語の候補プールをクエリすることが可能になります。
✨ 主な機能
このモデルには以下の主な機能があります。
- ローマ字表記のヒンディー語のサポート:初めてローマ字表記のヒンディー語をサポートする埋め込みモデルです。
- 異言語間のアライメント:言語に依存しない埋め込みを出力し、ヒンディー語、英語、ローマ字表記のヒンディー語のテキストが混在する多言語の候補プールをクエリできます。
📚 ドキュメント
モデルの詳細
プロパティ |
詳細 |
サポート言語 |
ヒンディー語、英語、ローマ字表記のヒンディー語 |
ベースモデル |
google/muril-base-cased |
トレーニングGPU |
1xRTX4090 |
トレーニング方法論 |
英語埋め込みモデルからの蒸留とトリプレットデータでの微調整 |
最大シーケンス長 |
512トークン |
出力次元数 |
768トークン |
類似度関数 |
コサイン類似度 |
モデルのソース
結果
英語 - ヒンディー語の異言語間アライメントの結果
ヒンディー語と英語のテキストを含むコーパスのタスクです。

ローマ字表記のヒンディー語のタスクの結果
ローマ字表記のヒンディー語のテキストのタスクです。

多言語コーパスの検索タスクの結果
ヒンディー語、英語、およびローマ字表記のヒンディー語のテキストを含むコーパスの検索タスクです。

ヒンディー語のタスクの結果
ヒンディー語(デーヴァナーガリー文字)のテキストのタスクです。

追加情報
サンプル出力
例1

例2

例3

例4

💻 使用例
基本的な使用法
以下は、Sentence Transformersと🤗 Transformersを使用してクエリとパッセージをエンコードし、類似度スコアを計算する例です。
Sentence Transformersを使用する場合
まず、Sentence Transformersライブラリをインストールし(pip install -U sentence-transformers
)、次のコードを実行します。
import numpy as np
from sentence_transformers import SentenceTransformer
model = SentenceTransformer("AkshitaS/bhasha-embed-v0")
queries = [
"प्रणव ने कानून की पढ़ाई की और ३० की उम्र में राजनीति से जुड़ गए",
"Pranav studied law and became a politician at the age of 30.",
"Pranav ne kanoon ki padhai kari aur 30 ki umar mein rajneeti se jud gaye"
]
documents = [
"प्रणव ने कानून की पढ़ाई की और ३० की उम्र में राजनीति से जुड़ गए",
"Pranav studied law and became a politician at the age of 30.",
"Pranav ne kanoon ki padhai kari aur 30 ki umar mein rajneeti se jud gaye",
"प्रणव का जन्म राजनीतिज्ञों के परिवार में हुआ था",
"Pranav was born in a family of politicians",
"Pranav ka janm rajneetigyon ke parivar mein hua tha"
]
query_embeddings = model.encode(queries, normalize_embeddings=True)
document_embeddings = model.encode(documents, normalize_embeddings=True)
similarity_matrix = (query_embeddings @ document_embeddings.T)
print(similarity_matrix.shape)
print(np.round(similarity_matrix, 2))
🤗 Transformersを使用する場合
import numpy as np
from torch import Tensor
import torch.nn.functional as F
from transformers import AutoTokenizer, AutoModel
def average_pool(last_hidden_states: Tensor, attention_mask: Tensor) -> Tensor:
last_hidden = last_hidden_states.masked_fill(~attention_mask[..., None].bool(), 0.0)
return last_hidden.sum(dim=1) / attention_mask.sum(dim=1)[..., None]
model_id = "AkshitaS/bhasha-embed-v0"
tokenizer = AutoTokenizer.from_pretrained(model_id)
model = AutoModel.from_pretrained(model_id)
queries = [
"प्रणव ने कानून की पढ़ाई की और ३० की उम्र में राजनीति से जुड़ गए",
"Pranav studied law and became a politician at the age of 30.",
"Pranav ne kanoon ki padhai kari aur 30 ki umar mein rajneeti se jud gaye"
]
documents = [
"प्रणव ने कानून की पढ़ाई की और ३० की उम्र में राजनीति से जुड़ गए",
"Pranav studied law and became a politician at the age of 30.",
"Pranav ne kanoon ki padhai kari aur 30 ki umar mein rajneeti se jud gaye",
"प्रणव का जन्म राजनीतिज्ञों के परिवार में हुआ था",
"Pranav was born in a family of politicians",
"Pranav ka janm rajneetigyon ke parivar mein hua tha"
]
input_texts = queries + documents
batch_dict = tokenizer(input_texts, padding=True, truncation=True, return_tensors='pt')
outputs = model(**batch_dict)
embeddings = average_pool(outputs.last_hidden_state, batch_dict['attention_mask'])
embeddings = F.normalize(embeddings, p=2, dim=1)
similarity_matrix = (embeddings[:len(queries)] @ embeddings[len(queries):].T).detach().numpy()
print(similarity_matrix.shape)
print(np.round(similarity_matrix, 2))
引用
このモデルを引用するには、次のようにしてください。
@misc{sukhlecha_2024_bhasha_embed_v0,
author = {Sukhlecha, Akshita},
title = {Bhasha-embed-v0},
howpublished = {Hugging Face},
month = {June},
year = {2024},
url = {https://huggingface.co/AkshitaS/bhasha-embed-v0}
}
📄 ライセンス
このモデルは、Apache-2.0ライセンスの下で提供されています。