Transformers documentation
mLUKE
Bu model 2021-10-15 tarihinde HF papers'ta yayımlandı ve 2021-12-07 tarihinde Hugging Face Transformers'a katkıda bulunuldu.
mLUKE
Genel Bakış
mLUKE modeli, Ryokan Ri, Ikuya Yamada ve Yoshimasa Tsuruoka tarafından mLUKE: The Power of Entity Representations in Multilingual Pretrained Language Models makalesinde önerilmiştir. XLM-RoBERTa temel alınarak eğitilmiş LUKE modelinin çok dilli bir uzantısıdır.
XLM-RoBERTa tabanlıdır ve varlık gömme (entity embeddings) ekler; bu da adlandırılmış varlık tanıma, çıkarımsal soru-cevap, ilişki sınıflandırma, boşluk doldurma tarzı bilgi tamamlama gibi varlıklar hakkında akıl yürütme içeren çeşitli aşağı akış görevlerinde performansı iyileştirmeye yardımcı olur.
Makalenin özeti aşağıdaki gibidir:
Yakın tarihli çalışmalar, çok dilli önceden eğitilmiş dil modellerinin Wikipedia varlıklarından gelen diller arası hizalama bilgisiyle etkili bir şekilde iyileştirilebileceğini göstermiştir. Ancak mevcut yöntemler, varlık bilgisini yalnızca ön eğitim sırasında kullanmakta ve varlıkları aşağı akış görevlerinde açıkça kullanmamaktadır. Bu çalışmada, varlık temsillerinin aşağı akış diller arası görevlerdeki etkinliğini inceliyoruz. 24 dilde varlık temsilleriyle çok dilli bir dil modeli eğitiyor ve modelin çeşitli diller arası aktarım görevlerinde kelime tabanlı önceden eğitilmiş modellere karşı tutarlı bir şekilde daha iyi performans gösterdiğini gösteriyoruz. Ayrıca modeli analiz ediyoruz ve temel içgörü, girdiye varlık temsillerinin dahil edilmesinin daha dil bağımsız özelliklerin çıkarılmasını sağlamasıdır. Modeli ayrıca mLAMA veri setiyle çok dilli bir boşluk doldurma istem göreviyle de değerlendiriyoruz. Sadece kelime temsillerini kullanmaya kıyasla, varlık tabanlı istemlerin doğru olgusal bilgiyi daha yüksek olasılıkla tetiklediğini gösteriyoruz.
Bu model ryo0634 tarafından katkıda bulunmuştur. Orijinal kod burada bulunabilir.
Kullanım ipuçları
mLUKE ağırlıkları doğrudan bir LUKE modeline yerleştirilebilir:
from transformers import LukeModel
model = LukeModel.from_pretrained("studio-ousia/mluke-base", device_map="auto")mLUKE'nin kendi MLukeTokenizer adlı bir tokenizer'ı olduğunu unutmayın. Bunu aşağıdaki gibi başlatabilirsiniz:
from transformers import MLukeTokenizer
tokenizer = MLukeTokenizer.from_pretrained("studio-ousia/mluke-base")mLUKE’nin mimarisi LUKE’nin mimarisiyle eşdeğer olduğundan, tüm ipuçları, kod örnekleri ve defterler için LUKE’nin dokümantasyon sayfasına başvurulabilir.
MLukeTokenizer
sınıf transformers.MLukeTokenizer
< source >( bos_token = '<s>'eos_token = '</s>'sep_token = '</s>'cls_token = '<s>'unk_token = '<unk>'pad_token = '<pad>'mask_token = '<mask>'task = Nonemax_entity_length = 32max_mention_length = 30entity_1_token = '<ent>'entity_2_token = '<ent2>'entity_unk_token = '[UNK]'entity_pad_token = '[PAD]'entity_mask_token = '[MASK]'entity_mask2_token = '[MASK2]'vocab: str | dict | list | None = Noneentity_vocab: str | dict | list | None = None**kwargs )
Parametreler
- vocab_file (
str) — Sözlük dosyasının yolu. - entity_vocab_file (
str) — Varlık sözlük dosyasının yolu. - bos_token (
str, isteğe bağlı, varsayılan olarak"<s>") — Ön eğitim sırasında kullanılan dizinin başlangıç token'ı. Bir dizi sınıflandırıcı token'ı olarak kullanılabilir. Özel token'lar kullanılarak bir dizi oluşturulduğunda, dizinin başlangıcı için kullanılan token bu değildir. Kullanılan token, cls_token'dır.Özel jetonlar kullanılarak bir dizi oluşturulduğunda, dizinin başlangıcı için kullanılan jeton bu değildir. Kullanılan jeton
cls_token'dir. - eos_token (
str, isteğe bağlı, varsayılan olarak"</s>") — Dizi sonu belirteci. Özel belirteçler kullanılarak bir dizi oluşturulduğunda, dizi sonu için kullanılan belirteç bu değildir. Kullanılan belirteç sep_token'dir.Özel jetonlar kullanılarak bir dizi oluşturulduğunda, dizinin sonu için kullanılan jeton bu değildir. Kullanılan jeton
sep_token'dir. - sep_token (
str, isteğe bağlı, varsayılan"</s>") — Ayrıştırıcı belirteci; birden fazla diziden bir dizi oluşturulurken kullanılır, örneğin dizi sınıflandırma için iki dizi veya soru cevaplamada bir metin ve bir soru için. Özel belirteçlerle oluşturulan bir dizinin son belirteci olarak da kullanılır. - cls_token (
str, isteğe bağlı, varsayılan"<s>") — Dizilim sınıflandırması yapılırken (token başına sınıflandırma yerine tüm dizilimin sınıflandırılması) kullanılan sınıflandırıcı tokenıdır. Özel tokenlarla oluşturulduğunda dizilimin ilk tokenıdır. - unk_token (
str, isteğe bağlı, varsayılan"<unk>") — Bilinmeyen token. Sözlükte yer almayan bir token, bir kimliğe dönüştürülemez ve bunun yerine bu token olarak ayarlanır. - pad_token (
str, isteğe bağlı, varsayılan"<pad>") — Doldurma için kullanılan jeton, örneğin farklı uzunluklardaki dizileri toplu işleme (batching) sırasında. - mask_token (
str, isteğe bağlı, varsayılan"<mask>") — Değerleri maskelemek için kullanılan belirteç. Bu, modelin maskeli dil modelleme ile eğitildiğinde kullanılan belirteçtir. Modelin tahmin etmeye çalışacağı belirteç budur. - task (
str, isteğe bağlı) — Dizileri hazırlamak istediğiniz görev."entity_classification","entity_pair_classification"veya"entity_span_classification"değerlerinden biri. Bu argümanı belirtirseniz, varlık dizisi, verilen varlık aralığına (aralıklarına) göre otomatik olarak oluşturulur. - max_entity_length (
int, isteğe bağlı, varsayılan 32) —entity_ids'nin maksimum uzunluğu. - max_mention_length (
int, isteğe bağlı, varsayılan 30) — Bir varlık aralığındaki en fazla token sayısı. - entity_1_token (
str, isteğe bağlı, varsayılan<ent>) — Kelime token dizisinde bir varlık aralığını temsil etmek için kullanılan özel token. Bu token yalnızcatask"entity_classification"veya"entity_pair_classification"olarak ayarlandığında kullanılır. - entity_2_token (
str, isteğe bağlı, varsayılan<ent2>) — Kelime token dizisinde bir varlık aralığını temsil etmek için kullanılan özel token. Bu token yalnızcatask"entity_pair_classification"olarak ayarlandığında kullanılır. - additional_special_tokens (
list[str], isteğe bağlı, varsayılan["<s>NOTUSED", "</s>NOTUSED"]) — Tokenizör tarafından kullanılan ek özel jetonlar. - sp_model_kwargs (
dict, isteğe bağlı) — şuna aktarılacak:SentencePieceProcessor.__init__()metodu. SentencePiece için Python sarmalayıcısı arasında şunları ayarlamak için kullanılabilir:-
enable_sampling: Alt kelime düzenlemesini etkinleştirir. -
nbest_size: Unigram için örneklem parametreleri. BPE-Dropout için geçersizdir.nbest_size = {0,1}: Örnekleme yapılmaz.nbest_size > 1: nbest_size sonuçlarından örnekler.nbest_size < 0: nbest_size'in sonsuz olduğu varsayılır ve tüm hipotezlerden (lattice) forward-filtering-and-backward-sampling algoritması kullanılarak örneklemeler yapılır.
-
alpha: Unigram örneklemesi için düzeltme parametresi ve BPE-dropout için birleştirme işlemlerinin atılma olasılığı.
-
- sp_model (
SentencePieceProcessor) — Her dönüştürme (dize, jeton ve kimlikler) için kullanılan SentencePiece işleyicisi.
XLMRobertaTokenizer ve LukeTokenizer'den uyarlanmıştır. SentencePiece üzerine kuruludur.
Bu tokenizer, ana yöntemlerin çoğunu içeren PreTrainedTokenizer sınıfından devralır. Kullanıcıların bu yöntemler hakkında daha fazla bilgi için bu üst sınıfa başvurması gerekir.
__call__
< source >( text: str | list[str]text_pair: str | list[str] | None = Noneentity_spans: list[tuple[int, int]] | list[list[tuple[int, int]]] | None = Noneentity_spans_pair: list[tuple[int, int]] | list[list[tuple[int, int]]] | None = Noneentities: list[str] | list[list[str]] | None = Noneentities_pair: list[str] | list[list[str]] | None = Noneadd_special_tokens: bool = Truepadding: bool | str | transformers.utils.generic.PaddingStrategy = Falsetruncation: bool | str | transformers.tokenization_utils_base.TruncationStrategy | None = Nonemax_length: int | None = Nonemax_entity_length: int | None = Nonestride: int = 0is_split_into_words: bool | None = Falsepad_to_multiple_of: int | None = Nonepadding_side: str | None = Nonereturn_tensors: str | transformers.utils.generic.TensorType | None = Nonereturn_token_type_ids: bool | None = Nonereturn_attention_mask: bool | None = Nonereturn_overflowing_tokens: bool = Falsereturn_special_tokens_mask: bool = Falsereturn_offsets_mapping: bool = Falsereturn_length: bool = Falseverbose: bool = True**kwargs ) → BatchEncoding
Dönüş değeri
Aşağıdaki alanlara sahip bir BatchEncoding:
-
input_ids — Bir modele verilecek token kimliklerinin listesi.
-
token_type_ids — Bir modele verilecek token türü kimlikleri listesi (
return_token_type_ids=Trueolduğunda veya “token_type_ids”,self.model_input_namesiçinde olduğunda). -
attention_mask — Modelin hangi jetonlara dikkat etmesi gerektiğini belirleyen indeks listesi (
return_attention_mask=Trueolduğunda veyaself.model_input_namesiçinde “attention_mask” varsa). -
entity_ids — Bir modele verilecek varlık kimliklerinin listesi.
-
entity_position_ids — Modelin girdi olarak alacağı giriş dizisindeki varlık konumlarının listesi.
-
entity_token_type_ids — Bir modele verilecek varlık token türü kimlikleri listesi (
return_token_type_ids=Trueolduğunda veya “entity_token_type_ids”,self.model_input_namesiçinde olduğunda). -
entity_attention_mask — Modelin hangi varlıklara dikkat etmesi gerektiğini belirleyen indeks listesi (
return_attention_mask=Trueolduğunda veya “entity_attention_mask”,self.model_input_namesiçinde olduğunda). -
entity_start_positions — Kelime token dizisindeki varlıkların başlangıç konumlarının listesi (
task="entity_span_classification"durumunda). -
entity_end_positions — Kelime token dizisindeki varlıkların bitiş konumlarının listesi (
task="entity_span_classification"durumunda). -
overflowing_tokens — Taşan token dizileri listesi (
max_lengthbelirtildiğinde vereturn_overflowing_tokens=Trueolduğunda). -
num_truncated_tokens — Kırpılan token sayısı (
max_lengthbelirtildiğinde vereturn_overflowing_tokens=Trueolduğunda). -
special_tokens_mask — 0 ve 1'lerden oluşan liste; 1 eklenen özel tokenları, 0 ise normal dizi tokenlarını belirtir (
add_special_tokens=Truevereturn_special_tokens_mask=Trueolduğunda). -
length — Girdilerin uzunluğu (
return_length=Trueolduğunda)
add_special_tokens (bool, isteğe bağlı, varsayılan True):
Dizileri kodlarken özel jetonların eklenip eklenmeyeceğini belirler. Bu, girdi kimliklerine otomatik olarak hangi jetonların ekleneceğini tanımlayan alttaki PretrainedTokenizerBase.build_inputs_with_special_tokens işlevini kullanır. bos veya eos jetonlarını otomatik olarak eklemek istiyorsanız bu işe yarar.
padding (bool, str veya PaddingStrategy, isteğe bağlı, varsayılan False):
Doldurmayı etkinleştirir ve kontrol eder. Aşağıdaki değerleri kabul eder:
Trueveya'longest': Toplu işlemdeki en uzun dizinin uzunluğuna kadar dolgu yapılır (yalnızca tek bir dizi sağlanırsa dolgu yapılmaz).'max_length':max_lengthargümanı ile belirtilen maksimum uzunluğa veya bu argüman sağlanmadıysa modelin kabul edebileceği maksimum giriş uzunluğuna kadar doldurur.Falseveya'do_not_pad'(varsayılan): Dolgu yapılmaz (yani, farklı uzunluklarda diziler içeren bir parti çıktı olarak üretilebilir). truncation (bool,strveya TruncationStrategy, isteğe bağlı, varsayılanFalse): Kesme işlemini etkinleştirir ve kontrol eder. Aşağıdaki değerleri kabul eder:Trueveya'longest_first':max_lengthargümanı ile belirtilen maksimum uzunluğa veya bu argüman sağlanmadıysa modelin kabul edebileceği maksimum giriş uzunluğuna kısaltılır. Bu işlem, token bazında kısaltma yapar; bir çift dizi (veya çift dizilerden oluşan bir batch) sağlandığında, çiftteki en uzun diziden bir token kaldırılır.'only_first':max_lengthargümanı ile belirtilen maksimum uzunluğa veya bu argüman sağlanmadıysa modelin kabul edebileceği maksimum giriş uzunluğuna kısaltır. Bir çift dizi (veya çiftlerin bir partisi) sağlandığında, yalnızca çiftin ilk dizisini kısaltır.'only_second':max_lengthargümanı ile belirtilen maksimum uzunluğa veya bu argüman sağlanmadıysa modelin kabul edebileceği maksimum girdi uzunluğuna kısaltılır. Bu, bir dizi çifti (veya çiftlerin bir partisi) sağlandığında yalnızca çiftin ikinci dizisini kısaltır.Falseveya'do_not_truncate'(varsayılan): Kesme yapılmaz (yani, modelin kabul edebileceği maksimum giriş boyutundan daha uzun dizi uzunluklarına sahip bir çıktı partisi üretilebilir). max_length (int, isteğe bağlı): Kesme/doldurma parametrelerinden birinin kullanacağı maksimum uzunluğu kontrol eder.
Belirlenmezse veya None olarak ayarlanırsa, bir kesme/doldurma parametresi maksimum uzunluk gerektiriyorsa, önceden tanımlanmış modelin maksimum uzunluğu kullanılır. Modelin belirli bir maksimum giriş uzunluğu yoksa (ör. XLNet), maksimum uzunluğa kesme/doldurma devre dışı bırakılır.
stride (int, isteğe bağlı, varsayılan 0):
max_length ile birlikte bir sayı olarak ayarlanırsa, return_overflowing_tokens=True olduğunda döndürülen taşan jetonlar, kesilen ve taşan diziler arasında bir örtüşme sağlamak için kesilen dizinin sonundan bazı jetonları içerir. Bu argümanın değeri, örtüşen jeton sayısını tanımlar.
is_split_into_words (bool, isteğe bağlı, varsayılan False):
Girişin önceden jetonlaştırılmış olup olmadığı (ör. kelimelere ayrılmış). True olarak ayarlanırsa, tokenizer, girdinin zaten kelimelere ayrılmış olduğunu (örneğin boşluklara göre bölünerek) ve bunları jetonlaştıracak varsayar. Bu, NER veya jeton sınıflandırması için faydalıdır.
pad_to_multiple_of (int, isteğe bağlı):
Ayarlanırsa, diziyi sağlanan değerin katına doldurur. Bunun için padding etkinleştirilmelidir. Bu, hesaplama yeteneği >= 7.5 (Volta) olan NVIDIA donanımlarında Tensor Cores kullanımını etkinleştirmek için özellikle faydalıdır.
padding_side (str, isteğe bağlı):
Modelin doldurma uygulanması gereken tarafı. [‘right’, ‘left’] arasından seçilmelidir.
Varsayılan değer, aynı ada sahip sınıf özniteliğinden seçilir.
return_tensors (str veya TensorType, isteğe bağlı):
Ayarlanırsa, python tamsayı listesi yerine tensörler döndürülür. Kabul edilen değerler:
'pt': PyTorchtorch.Tensornesnelerini döndürür.'np': Numpynp.ndarraynesnelerini döndürür.
return_token_type_ids (bool, isteğe bağlı):
Token türü kimliklerinin (token type IDs) döndürülüp döndürülmeyeceğini belirtir. Varsayılan bırakılırsa, return_outputs özniteliği tarafından tanımlanan, ilgili tokenizer'ın varsayılanına göre token türü kimlikleri döndürülür.
Token type ID'leri nedir? return_attention_mask (bool, isteğe bağlı):
Dikkat maskesinin döndürülüp döndürülmeyeceğini belirtir. Varsayılan bırakılırsa, return_outputs özniteliği tarafından tanımlanan, ilgili tokenizörün varsayılanına göre dikkat maskesi döndürülür.
Dikkat maskeleri nedir? return_overflowing_tokens (bool, isteğe bağlı, varsayılan False):
Taşan token dizilerinin döndürülüp döndürülmeyeceğini belirtir. Girdi kimlikleri (veya bir partinin) bir çift dizisi truncation_strategy = longest_first veya True ile sağlanırsa, taşan tokenlar döndürülmek yerine bir hata oluşturulur.
return_special_tokens_mask (bool, isteğe bağlı, varsayılan False):
Özel token maskesi bilgisinin döndürülüp döndürülmeyeceğini belirtir.
return_offsets_mapping (bool, isteğe bağlı, varsayılan False):
Her token için (char_start, char_end) değerlerinin döndürülüp döndürülmeyeceğini belirtir.
Bu özellik yalnızca PreTrainedTokenizerFast'ten türeyen hızlı tokenizörlerde mevcuttur; Python tokenizörü kullanılırsa bu yöntem NotImplementedError fırlatır.
return_length (bool, isteğe bağlı, varsayılan False):
Kodlanmış girdilerin uzunluklarının döndürülüp döndürülmeyeceğini belirtir.
verbose (bool, isteğe bağlı, varsayılan True):
Daha fazla bilgi ve uyarı basılıp basılmayacağını belirtir.
**kwargs: self.tokenize() yöntemine aktarılır
Sadece varlık sözlük dosyasını kaydedin. tokenizer.json dosyası, üst düzey TokenizersBackend tarafından kaydedilir.