Developing and Evaluating Tiny to Medium-Sized Turkish BERT Models
Paper • 2307.14134 • Published
How to use ytu-ce-cosmos/turkish-colbert with sentence-transformers:
from sentence_transformers import SentenceTransformer
model = SentenceTransformer("ytu-ce-cosmos/turkish-colbert")
sentences = [
"The weather is lovely today.",
"It's so sunny outside!",
"He drove to the stadium."
]
embeddings = model.encode(sentences)
similarities = model.similarity(embeddings, embeddings)
print(similarities.shape)
# [3, 3]This is a Turkish passage retrieval model based on the ColBERT architecture.
The Cosmos Turkish Base BERT model was fine-tuned on 500k triplets (query, positive passage, negative passage) from a Turkish-translated version of the MS MARCO dataset.
Convert your text to lower case as follows:
text.replace("I", "ı").lower()
This is due to a known issue with the tokenizer.
This model can be used with Sentence Transformers as a multi-vector (ColBERT-style late interaction) retriever via the MultiVectorEncoder:
pip install "sentence-transformers>=6.0.0"
from sentence_transformers import MultiVectorEncoder
model = MultiVectorEncoder("ytu-ce-cosmos/turkish-colbert")
query = "Birden fazla Nobel Ödülü alan bilim insanı kimdir?"
documents = [
"Marie Curie, radyoaktivite üzerine yaptığı çalışmalarla bilim dünyasına büyük katkılar sağlamıştır. Polonyum ve radyum elementlerini keşfetmiştir. İki farklı dalda Nobel Ödülü alan ilk kişi olmuştur.",
"Isaac Newton, fizik ve matematik alanında yaptığı çalışmalarla bilinir. Yerçekimi teorisi ve hareket yasaları, bilim dünyasında çığır açmıştır.",
"Albert Einstein, izafiyet teorisini geliştirerek modern fiziğin temellerini atmıştır. 1921 yılında Nobel Fizik Ödülü kazanmıştır.",
"Alexander Fleming, 1928 yılında penisilini keşfederek modern tıpta devrim yaratmıştır. Bu keşfi sayesinde 1945 yılında Nobel Tıp Ödülü kazanmıştır.",
"Nikola Tesla, alternatif akım sistemini geliştirmiştir. Kablosuz enerji aktarımı üzerine projeleriyle tanınır.",
]
# turkish-colbert is trained on lowercased text with Turkish dotless-i handling
query = query.replace("I", "ı").lower()
documents = [doc.replace("I", "ı").lower() for doc in documents]
query_embeddings = model.encode_query(query)
document_embeddings = model.encode_document(documents)
print(query_embeddings.shape, document_embeddings[0].shape)
# (32, 256) (39, 256)
# MaxSim late-interaction scoring (higher is more relevant)
scores = model.similarity(query_embeddings, document_embeddings)
print(scores)
# tensor([[20.8741, 16.5549, 18.2056, 17.7900, 15.1087]])
!pip install ragatouille
from ragatouille import RAGPretrainedModel
rag = RAGPretrainedModel.from_pretrained("ytu-ce-cosmos/turkish-colbert")
docs = [
"Marie Curie, radyoaktivite üzerine yaptığı çalışmalarla bilim dünyasına büyük katkılar sağlamıştır. Polonyum ve radyum elementlerini keşfetmiştir. İki farklı dalda Nobel Ödülü alan ilk kişi olmuştur.",
"Isaac Newton, fizik ve matematik alanında yaptığı çalışmalarla bilinir. Yerçekimi teorisi ve hareket yasaları, bilim dünyasında çığır açmıştır. Ayrıca, matematiksel analiz üzerinde de önemli katkıları vardır.",
"Albert Einstein, izafiyet teorisini geliştirerek modern fiziğin temellerini atmıştır. 1921 yılında Nobel Fizik Ödülü'nü kazanmıştır. Kütle-enerji eşitliği (E=mc²) onun en ünlü formülüdür.",
"Alexander Fleming, 1928 yılında penisilini keşfederek modern tıpta devrim yaratmıştır. Bu keşfi sayesinde 1945 yılında Nobel Tıp Ödülü kazanmıştır. Fleming'in çalışmaları antibiyotiklerin gelişimine öncülük etmiştir.",
"Nikola Tesla, alternatif akım (AC) sistemini geliştirmiştir. Elektrik mühendisliği alanında devrim niteliğinde çalışmalar yapmıştır. Kablosuz enerji aktarımı üzerine projeleriyle tanınır."
]
docs = [doc.replace("I", "ı").lower() for doc in docs]
rag.index(docs, index_name="sampleTest")
query = "Birden fazla Nobel Ödülü alan bilim insanı kimdir?"
query = query.replace("I", "ı").lower()
results = rag.search(query, k= 1)
print(results[0]['content']) # "marie curie, radyoaktivite üzerine yaptığı çalışmalarla bilim dünyasına büyük katkılar sağlamıştır. polonyum ve radyum elementlerini keşfetmiştir. i̇ki farklı dalda nobel ödülü alan ilk kişi olmuştur."
| Dataset | R@1 | R@5 | R@10 | MRR@10 |
|---|---|---|---|---|
| Scifact-tr | 48.38 | 67.85 | 75.52 | 56.88 |
| WikiRAG-TR | 31.21 | 75.63 | 79.63 | 49.08 |
@article{kesgin2023developing,
title={Developing and Evaluating Tiny to Medium-Sized Turkish BERT Models},
author={Kesgin, Himmet Toprak and Yuce, Muzaffer Kaan and Amasyali, Mehmet Fatih},
journal={arXiv preprint arXiv:2307.14134},
year={2023}
}
COSMOS AI Research Group, Yildiz Technical University Computer Engineering Department
https://cosmos.yildiz.edu.tr/
cosmos@yildiz.edu.tr
Base model
ytu-ce-cosmos/turkish-base-bert-uncased
from sentence_transformers import SentenceTransformer model = SentenceTransformer("ytu-ce-cosmos/turkish-colbert") sentences = [ "The weather is lovely today.", "It's so sunny outside!", "He drove to the stadium." ] embeddings = model.encode(sentences) similarities = model.similarity(embeddings, embeddings) print(similarities.shape) # [3, 3]