# 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](https://huggingface.co/papers/2110.08151) makalesinde önerilmiştir. XLM-RoBERTa temel alınarak eğitilmiş [LUKE modelinin](https://huggingface.co/papers/2010.01057) ç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. Varlık temsilleriyle 24 dilli ç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 özellikler çıkarılmasını sağlamasıdır. Modeli ayrıca mLAMA veri setiyle çok dilli bir cloze prompt göreviyle de değerlendiriyoruz. Varlık tabanlı prompt'un, yalnızca kelime temsilleri kullanmaya kıyasla doğru olgusal bilgiyi daha yüksek olasılıkla tetiklediğini gösteriyoruz.*

Bu model [ryo0634](https://huggingface.co/ryo0634) tarafından katkıda bulunmuştur. Orijinal kod [burada](https://github.com/studio-ousia/luke) bulunabilir.

## Kullanım ipuçları

mLUKE ağırlıkları doğrudan bir LUKE modeline yerleştirilebilir:

```python
from transformers import LukeModel

model = LukeModel.from_pretrained("studio-ousia/mluke-base", device_map="auto")
```

mLUKE'nin kendi [MLukeTokenizer](/docs/transformers/v5.23.0/tr/model_doc/mluke#transformers.MLukeTokenizer) adlı bir tokenizer'ı olduğunu unutmayın. Bunu aşağıdaki gibi başlatabilirsiniz:

```python
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](luke) başvurulabilir.

## MLukeTokenizer[[transformers.MLukeTokenizer]]

#### transformers.MLukeTokenizer[[transformers.MLukeTokenizer]]

```python
transformers.MLukeTokenizer(bos_token = '<s>', eos_token = '</s>', sep_token = '</s>', cls_token = '<s>', unk_token = '<unk>', pad_token = '<pad>', mask_token = '<mask>', task = None, max_entity_length = 32, max_mention_length = 30, entity_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 = None, entity_vocab: str | dict | list | None = None, **kwargs)
```

[Kaynak](https://github.com/huggingface/transformers/blob/v5.23.0/src/transformers/models/mluke/tokenization_mluke.py#L129)

**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 `"<s>"`) : Ön eğitim sırasında kullanılan dizinin başlangıç jetonu. Bir dizi sınıflandırıcı jetonu olarak kullanılabilir. Ö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`'dur.

eos_token (`str`, *isteğe bağlı*, varsayılan `"</s>"`) : Sıra sonu belirteci. Özel belirteçler kullanılarak bir sıra oluşturulduğunda, sıra sonu için kullanılan belirteç bu değildir. Kullanılan belirteç `sep_token`'tur.

sep_token (`str`, *isteğe bağlı*, varsayılan `"</s>"`) : Birden fazla diziden bir dizi oluşturulurken kullanılan ayraç belirteci, örneğin dizi sınıflandırması 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>"`) : Sıralı sınıflandırma (token başına sınıflandırma yerine tüm sıranın sınıflandırılması) yapılırken kullanılan sınıflandırıcı jetonu. Özel jetonlarla oluşturulduğunda sıranın ilk jetonudur.

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>"`) : Dolgu 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ızca `task` `"entity_classification"` veya `"entity_pair_classification"` olarak ayarlandığında kullanılır.

entity_2_token (`str`, *isteğe bağlı*, varsayılan `<ent2>`) : Bir kelime belirteci dizisinde varlık aralığını temsil etmek için kullanılan özel belirteç. Bu belirteç yalnızca `task` `"entity_pair_classification"` olarak ayarlandığında kullanılır.

additional_special_tokens (`list[str]`, *isteğe bağlı*, varsayılan `["<s>NOTUSED", "</s>NOTUSED"]`) : Tokenizer tarafından kullanılan ek özel jetonlar.

sp_model_kwargs (`dict`, *isteğe bağlı*) : `SentencePieceProcessor.__init__()` yöntemine aktarılacaktır. [SentencePiece'in Python sarmalayıcısı](https://github.com/google/sentencepiece/tree/master/python), aşağıdakiler de dahil olmak üzere çeşitli ayarları yapmak için kullanılabilir: - `enable_sampling`: Alt kelime düzenlemesini (subword regularization) etkinleştirir. - `nbest_size`: Unigram için örneklem parametreleri. BPE-Dropout için geçersizdir. - `nbest_size = {0,1}`: Örneklem yapılmaz. - `nbest_size > 1`: nbest_size sonuçlarından örneklem yapılır. - `nbest_size < 0`: nbest_size'ın sonsuz olduğu varsayılır ve forward-filtering-and-backward-sampling algoritması kullanılarak tüm hipotezlerden (lattice) örneklem yapılır. - `alpha`: Unigram örneklemesi için yumuşatma parametresi ve BPE-dropout için birleştirme işlemlerinin atılma (dropout) olasılığı.

sp_model (`SentencePieceProcessor`) : Her dönüştürme (dize, jeton ve kimlikler) için kullanılan *SentencePiece* işleyicisi.

[XLMRobertaTokenizer](/docs/transformers/v5.23.0/tr/model_doc/xlm-roberta#transformers.XLMRobertaTokenizer) ve [LukeTokenizer](/docs/transformers/v5.23.0/tr/model_doc/luke#transformers.LukeTokenizer)'den uyarlanmıştır. [SentencePiece](https://github.com/google/sentencepiece) üzerine kuruludur.

Bu tokenizer, ana yöntemlerin çoğunu içeren [PreTrainedTokenizer](/docs/transformers/v5.23.0/tr/main_classes/tokenizer#transformers.PythonBackend) 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__[[transformers.MLukeTokenizer.__call__]]

```python
__call__(text: str | list[str], text_pair: str | list[str] | None = None, entity_spans: list[tuple[int, int]] | list[list[tuple[int, int]]] | None = None, entity_spans_pair: list[tuple[int, int]] | list[list[tuple[int, int]]] | None = None, entities: list[str] | list[list[str]] | None = None, entities_pair: list[str] | list[list[str]] | None = None, add_special_tokens: bool = True, padding: bool | str | transformers.utils.generic.PaddingStrategy = False, truncation: bool | str | transformers.tokenization_utils_base.TruncationStrategy | None = None, max_length: int | None = None, max_entity_length: int | None = None, stride: int = 0, is_split_into_words: bool | None = False, pad_to_multiple_of: int | None = None, padding_side: str | None = None, return_tensors: str | transformers.utils.generic.TensorType | None = None, return_token_type_ids: bool | None = None, return_attention_mask: bool | None = None, return_overflowing_tokens: bool = False, return_special_tokens_mask: bool = False, return_offsets_mapping: bool = False, return_length: bool = False, verbose: bool = True, **kwargs)
```

[Kaynak](https://github.com/huggingface/transformers/blob/v5.23.0/src/transformers/models/mluke/tokenization_mluke.py#L469)

**Dönüş:** [BatchEncoding](/docs/transformers/v5.23.0/tr/main_classes/tokenizer#transformers.BatchEncoding)

Aşağıdaki alanlara sahip bir [BatchEncoding](/docs/transformers/v5.23.0/tr/main_classes/tokenizer#transformers.BatchEncoding):

- **input_ids** -- Bir modele verilecek token kimliklerinin listesi.

  [Girdi kimlikleri nelerdir?](../glossary#input-ids)

- **token_type_ids** -- Bir modele verilecek token türü kimlikleri listesi (`return_token_type_ids=True` olduğunda veya `self.model_input_names` içinde *"token_type_ids"* varsa).

  [Token type ID'leri nelerdir?](../glossary#token-type-ids)

- **attention_mask** -- Modelin hangi token'lara dikkat etmesi gerektiğini belirleyen indeks listesi (`return_attention_mask=True` olduğunda veya *"attention_mask"* `self.model_input_names` içinde olduğunda).

  [Dikkat maskeleri nedir?](../glossary#attention-mask)

- **entity_ids** -- Bir modele verilecek varlık kimliklerinin listesi.

  [Girdi kimlikleri nelerdir?](../glossary#input-ids)

- **entity_position_ids** -- Bir modele verilecek girdi 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=True` olduğunda veya *"entity_token_type_ids"* `self.model_input_names` içinde olduğunda).

  [Token type ID'leri nelerdir?](../glossary#token-type-ids)

- **entity_attention_mask** -- Modelin hangi varlıklara dikkat etmesi gerektiğini belirleyen indeks listesi (`return_attention_mask=True` olduğunda veya *"entity_attention_mask"* `self.model_input_names` içinde olduğunda).

  [Dikkat maskeleri nedir?](../glossary#attention-mask)

- **entity_start_positions** -- Kelime belirteç dizisindeki varlıkların başlangıç konumlarının listesi (`task="entity_span_classification"` durumunda).
- **entity_end_positions** -- Kelime belirteç dizisindeki varlıkların bitiş konumlarının listesi (`task="entity_span_classification"` durumunda).
- **overflowing_tokens** -- Taşan token dizileri listesi (`max_length` belirtildiğinde ve `return_overflowing_tokens=True` olduğunda).
- **num_truncated_tokens** -- Kırpılan token sayısı (`max_length` belirtildiğinde ve `return_overflowing_tokens=True` olduğ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=True` ve `return_special_tokens_mask=True` olduğunda).
- **length** -- Girdilerin uzunluğu (`return_length=True` olduğunda)

add_special_tokens (`bool`, *isteğe bağlı*, varsayılan `True`): Dizileri kodlarken özel jetonların eklenip eklenmeyeceğini belirtir. 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](/docs/transformers/v5.23.0/tr/internal/file_utils#transformers.utils.PaddingStrategy), *isteğe bağlı*, varsayılan `False`): Dolguyu etkinleştirir ve kontrol eder. Aşağıdaki değerleri kabul eder:

- `True` veya `'longest'`: Toplu işlemdeki en uzun dizinin uzunluğuna kadar dolgu yapılır (yalnızca tek bir dizi sağlanıyorsa dolgu yapılmaz).
- `'max_length'`: `max_length` argümanı ile belirtilen maksimum uzunluğa veya bu argüman sağlanmadıysa modelin kabul edebileceği maksimum giriş uzunluğuna kadar doldurur.
- `False` veya `'do_not_pad'` (varsayılan): Dolgu yok (yani, farklı uzunluklarda diziler içeren bir parti çıktı olarak üretilebilir).
truncation (`bool`, `str` veya [TruncationStrategy](/docs/transformers/v5.23.0/tr/internal/tokenization_utils#transformers.tokenization_utils_base.TruncationStrategy), *opsiyonel*, varsayılan `False`): Kesme işlemini etkinleştirir ve kontrol eder. Aşağıdaki değerleri kabul eder:

- `True` veya `'longest_first'`: `max_length` argü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 gerçekleşir; 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_length` argü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_length` argümanı ile belirtilen maksimum uzunluğa veya bu argüman sağlanmadıysa modelin kabul edebileceği maksimum giriş uzunluğuna kısaltır. Bu, yalnızca bir çift dizi (veya çiftlerin bir partisi) sağlandığında çiftin ikinci dizisini kısaltır.
- `False` veya `'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 biri tarafından kullanılacak maksimum uzunluğu kontrol eder.

Eğer ayarlanmazsa veya `None` olarak ayarlanırsa, kırpma/dolgu parametrelerinden biri maksimum uzunluk gerektiriyorsa, önceden tanımlanmış model maksimum uzunluğu kullanılacaktır. Modelin belirli bir maksimum giriş uzunluğu yoksa (ör. XLNet), maksimum uzunluğa kırpma/dolgu devre dışı bırakılacaktı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, kırpılmış ve taşan diziler arasında bazı örtüşme sağlamak için kırpılmış dizinin sonundan döndürülen bazı jetonları içerecektir. 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`): Girdinin zaten önceden jetonlaştırılmış olup olmadığını belirtir (ö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 kullanışlı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 kullanışlıdır. padding_side (`str`, *isteğe bağlı*): Modelde dolgunun uygulanması gereken taraf. ['right', 'left'] arasından seçilmelidir. Varsayılan değer, aynı ada sahip sınıf özelliğinden seçilir. return_tensors (`str` veya [TensorType](/docs/transformers/v5.23.0/tr/internal/file_utils#transformers.TensorType), *isteğe bağlı*): Ayarlanırsa, python tamsayı listesi yerine tensörler döndürülür. Kabul edilebilir değerler:

- `'pt'`: PyTorch `torch.Tensor` nesnelerini döndürür.
- `'np'`: Numpy `np.ndarray` nesnelerini döndürür.

return_token_type_ids (`bool`, *isteğe bağlı*): Token türü kimliklerinin 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 nelerdir?](../glossary#token-type-ids) return_attention_mask (`bool`, *isteğe bağlı*): Dikkat maskesinin (attention mask) 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 dikkat maskesini döndürür.

[Dikkat maskeleri nedir?](../glossary#attention-mask) 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 çiftlerinden (veya çiftlerden oluşan bir partiden) bir çift, `truncation_strategy = longest_first` veya `True` ile sağlanırsa, taşan tokenları döndürmek 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](/docs/transformers/v5.23.0/tr/main_classes/tokenizer#transformers.TokenizersBackend)'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

#### save_vocabulary[[transformers.MLukeTokenizer.save_vocabulary]]

```python
save_vocabulary(save_directory: str, filename_prefix: str | None = None)
```

[Kaynak](https://github.com/huggingface/transformers/blob/v5.23.0/src/transformers/models/mluke/tokenization_mluke.py#L1703)

Sadece varlık sözlük dosyasını kaydedin. tokenizer.json dosyası, üst düzey TokenizersBackend tarafından kaydedilir.

