# TAPAS

## نظرة عامة

قُدِّم نموذج TAPAS في [TAPAS: Weakly Supervised Table Parsing via Pre-training](https://huggingface.co/papers/2004.02349) بواسطة Jonathan Herzig وPaweł Krzysztof Nowak وThomas Müller وFrancesco Piccinno وJulian Martin Eisenschlos. وهو نموذج مبني على BERT صُمِّم (وتدرب مسبقاً) خصيصاً للإجابة عن الأسئلة المتعلقة بالبيانات الجدولية. مقارنةً بـ BERT، يستخدم TAPAS تضمينات الموضع النسبي ويحتوي على 7 أنواع من الرموز التي ترمّز البنية الجدولية. وقد خضع TAPAS للتدريب المسبق على هدف نمذجة اللغة المقنّعة (MLM) على مجموعة بيانات ضخمة تضم ملايين الجداول من ويكيبيديا الإنجليزية والنصوص المقابلة لها.

في مهام الإجابة عن الأسئلة، يحتوي TAPAS على رأسين في الأعلى: رأس لاختيار الخلايا ورأس للتجميع، لأداء عمليات التجميع (اختياريًا) (مثل العد أو الجمع) بين الخلايا المختارة. تم ضبط TAPAS على عدة مجموعات بيانات:

- [SQA](https://www.microsoft.com/en-us/download/details.aspx?id=54253) (الإجابة المتسلسلة على الأسئلة من مايكروسوفت)
- [WTQ](https://github.com/ppasupat/WikiTableQuestions) (أسئلة الجداول من ويكيبيديا من جامعة ستانفورد)
- [WikiSQL](https://github.com/salesforce/WikiSQL) (من تطوير Salesforce).

يحقّق أداءً متقدماً على كلٍّ من SQA وWTQ، مع أداءٍ مماثل لأفضل ما هو متاح على WikiSQL، وذلك بهيكلية أبسط بكثير.

المستخلص من الورقة البحثية هو كالتالي:

*يُعدّ الإجابة على الأسئلة اللغوية الطبيعية على الجداول عادةً مهمةً لتحليل الدلالات. ولتخفيف تكلفة جمع الأشكال المنطقية الكاملة، يركّز نهج شائع على الإشراف الضعيف الذي يتكوّن من الدلالات بدلاً من الأشكال المنطقية. ومع ذلك، فإن تدريب محللات الدلالات من الإشراف الضعيف يثير صعوبات، بالإضافة إلى ذلك، تُستخدم الأشكال المنطقية المولّدة فقط كخطوة وسيطة قبل استرجاع الدلالة. في هذه الورقة، نقدّم TAPAS، وهو نهج للإجابة على الأسئلة على الجداول دون توليد أشكال منطقية. يتدرّب TAPAS من الإشراف الضعيف، ويتنبأ بالدلالة عن طريق اختيار خلايا الجدول وتطبيق عامل تجميع مطابق بشكل اختياري على هذا الاختيار. يوسّع TAPAS بنية BERT لتشفير الجداول كمدخلات، ويُهيّأ من تدريب مسبق مشترك فعّال لمقاطع النص والجداول المستخرجة من ويكيبيديا، ويُدرَّب من البداية إلى النهاية. أجرينا تجارب على ثلاثة مجموعات بيانات مختلفة لتحليل الدلالات، ووجدنا أن TAPAS يتفوّق على نماذج تحليل الدلالات أو يضاهيها من خلال تحسين دقة الحالة الفنية على SQA من 55.1 إلى 67.2، وأداءً مماثلاً للحالة الفنية على WIKISQL وWIKITQ، لكن ببنية نموذج أبسط. كما وجدنا أن التعلّم الانتقالي، وهو أمر بسيط في إعدادنا، من WIKISQL إلى WIKITQ، يُنتج دقة 48.7، أي أعلى من الحالة الفنية بـ 4.2 نقاط.*

بالإضافة إلى ذلك، قام المؤلفون بتدريب TAPAS مسبقاً بشكل إضافي للتعرف على **استلزام الجدول**، وذلك من خلال إنشاء مجموعة بيانات متوازنة تتكون من ملايين أمثلة التدريب المُنشأة آلياً، والتي يتم تعلمها في خطوة وسيطة قبل الضبط الدقيق. يسمي مؤلفو TAPAS هذا التدريب المسبق الإضافي بالتدريب المسبق الوسيط (بما أن TAPAS يُدرَّب مسبقاً أولاً على MLM، ثم على مجموعة بيانات أخرى). وقد وجدوا أن التدريب المسبق الوسيط يحسّن الأداء بشكل أكبر على SQA، محققاً حداً فنياً جديداً، وكذلك حداً فنياً على [TabFact](https://github.com/wenhuchen/Table-Fact-Checking)، وهي مجموعة بيانات واسعة النطاق تضم 16 ألف جدول من ويكيبيديا لاستلزام الجدول (مهمة تصنيف ثنائية). لمزيد من التفاصيل، راجعوا ورقتهم اللاحقة: [Understanding tables with intermediate pre-training](https://www.aclweb.org/anthology/2020.findings-emnlp.27/) بقلم Julian Martin Eisenschlos وSyrine Krichene وThomas Müller.

<img src="https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/tapas_architecture.png"
alt="drawing" width="600"/>

 بنية TAPAS. مأخوذة من المدونة الأصلية.

تمت مساهمة هذا النموذج من قِبل [nielsr](https://huggingface.co/nielsr). يمكن العثور على الكود الأصلي [هنا](https://github.com/google-research/tapas).

## نصائح للاستخدام

- TAPAS هو نموذج يستخدم تضمينات المواقع النسبية افتراضيًا (مع إعادة تعيين تضمينات المواقع عند كل خلية في الجدول). لاحظ أن هذا أمر أُضيف بعد نشر ورقة TAPAS الأصلية. وفقًا للمؤلفين، يؤدي هذا عادةً إلى أداء أفضل قليلاً، ويتيح لك ترميز تسلسلات أطول دون نفاد التضمينات. يتجلى ذلك في معامل `reset_position_index_per_cell` الخاص بـ [TapasConfig](/docs/transformers/v5.23.0/ar/model_doc/tapas#transformers.TapasConfig)، والذي يُضبط على `True` افتراضيًا. جميع النسخ الافتراضية من النماذج المتاحة على [hub](https://huggingface.co/models?search=tapas) تستخدم تضمينات المواقع النسبية. يمكنك ما زال استخدام تلك التي تستخدم تضمينات المواقع المطلقة عن طريق تمرير حجة إضافية `revision="no_reset"` عند استدعاء طريقة `from_pretrained()`. لاحظ أنه يُنصح عادةً بتعبئة المدخلات على اليمين بدلاً من اليسار.
- يعتمد TAPAS على BERT، لذا فإن `TAPAS-base` على سبيل المثال يقابل بنية `BERT-base`. وبالطبع، سيحقق `TAPAS-large` أفضل أداء (النتائج المُبلَّغ عنها في الورقة هي من `TAPAS-large`). تُعرض نتائج النماذج ذات الأحجام المختلفة في [مستودع GitHub الأصلي](https://github.com/google-research/tapas).
- تحتوي TAPAS على نقاط تحقق مُعدّلة مسبقًا على SQA، وهي قادرة على الإجابة عن الأسئلة المتعلقة بجدول في سياق محادثة. وهذا يعني أنه يمكنك طرح أسئلة متابعة مثل "ما هو عمره؟" مرتبطة بالسؤال السابق. لاحظ أن المرور الأمامي في TAPAS يختلف قليلاً في حالة وجود سياق محادثة: في تلك الحالة، يجب عليك إدخال كل زوج من الجدول والسؤال واحدًا تلو الآخر إلى النموذج، بحيث يمكن استبدال معرفات أنواع الرموز `prev_labels` بالتوقعات `labels` التي يولّدها النموذج للسؤال السابق. راجع قسم "الاستخدام" لمزيد من المعلومات.
- يُشبه TAPAS نموذج BERT، ولذلك يعتمد على هدف نمذجة اللغة المقنّعة (MLM). ومن ثم، فهو فعّال في التنبؤ بالرموز المقنّعة وفي فهم اللغة الطبيعية (NLU) بشكل عام، لكنه ليس الأمثل لتوليد النصوص. النماذج المدرَّبة باستخدام هدف نمذجة اللغة السببية (CLM) أفضل في هذا الصدد. يُشار إلى أنه يمكن استخدام TAPAS كمُشفِّر (encoder) في إطار EncoderDecoderModel، لدمجه مع مُفكِّك نصوص ذاتي التراجع (autoregressive) مثل GPT-2.

## الاستخدام: الضبط الدقيق

هنا نوضح كيفية ضبط [TapasForQuestionAnswering](/docs/transformers/v5.23.0/ar/model_doc/tapas#transformers.TapasForQuestionAnswering) على مجموعة البيانات الخاصة بك.

**الخطوة 1: اختر إحدى الطرق الثلاث لاستخدام TAPAS - أو جرّب**

في الأساس، هناك ثلاث طرق مختلفة يمكن من خلالها ضبط [TapasForQuestionAnswering](/docs/transformers/v5.23.0/ar/model_doc/tapas#transformers.TapasForQuestionAnswering) على نحو دقيق، تتوافق مع مجموعات البيانات المختلفة التي تم ضبط Tapas عليها:

1. SQA: إذا كنت مهتمًا بطرح أسئلة متابعة مرتبطة بجدول، في سياق محادثة. على سبيل المثال، إذا سألت أولًا «ما اسم الممثل الأول؟»، فيمكنك بعد ذلك طرح سؤال متابعة مثل «كم عمره؟». هنا، لا تتضمن الأسئلة أي تجميع (جميع أسئلة اختيار الخلايا).
2. WTQ: إذا لم تكن مهتمًا بطرح الأسئلة في سياق محادثة، بل بطرح أسئلة مرتبطة بجدول، وقد تتضمن عمليات تجميع، مثل عدّ عدد الصفوف، أو جمع قيم الخلايا، أو حساب متوسط قيم الخلايا. يمكنك على سبيل المثال أن تسأل: "ما هو إجمالي عدد الأهداف التي سجلها كريستيانو رونالدو خلال مسيرته؟". يُطلق على هذا الحالة أيضًا اسم **الإشراف الضعيف**، حيث يجب على النموذج نفسه أن يتعلم عامل التجميع المناسب (SUM/COUNT/AVERAGE/NONE) بناءً على الإجابة عن السؤال فقط كمصدر للإشراف.
3. مُدارَسٌ بإشراف WikiSQL: يستند هذا المجموعة البيانات إلى WikiSQL، حيث يُمنح النموذج مُشغّل التجميع الصحيح أثناء التدريب. ويُطلق على هذا أيضاً **الإشراف القوي**. هنا، يكون تعلّم مُشغّل التجميع المناسب أسهل بكثير.

لخلاصة القول:

| **المهمة**                            | **مجموعة بيانات مثال** | **الوصف**                                                                                         |
|-------------------------------------|---------------------|---------------------------------------------------------------------------------------------------------|
| حواري                      | SQA                 | أسئلة اختيار الخلية فقط، محادثة                                                           |
| الإشراف الضعيف للتجميع    | WTQ                 | قد تتضمن الأسئلة عمليات تجميع، ويتعيّن على النموذج تعلّم ذلك اعتماداً على الإجابة فقط كإشراف |
| إشراف قوي للتجميع  | مُدرَّب بإشراف على WikiSQL  | قد تتضمن الأسئلة عمليات تجميع، ويجب على النموذج أن يتعلم ذلك بناءً على مُشغِّل التجميع المرجعي.  |

يمكن تهيئة نموذج بقاعدة مُدرَّبة مسبقًا ورؤوس تصنيف مُهيَّأة عشوائيًا من المستودع بالطريقة الموضحة أدناه.

```python
from transformers import TapasConfig, TapasForQuestionAnswering

# for example, the base sized model with default SQA configuration
model = TapasForQuestionAnswering.from_pretrained("google/tapas-base", device_map="auto")

# or, the base sized model with WTQ configuration
config = TapasConfig.from_pretrained("google/tapas-base-finetuned-wtq")
model = TapasForQuestionAnswering.from_pretrained("google/tapas-base", config=config, device_map="auto")

# or, the base sized model with WikiSQL configuration
config = TapasConfig("google-base-finetuned-wikisql-supervised")
model = TapasForQuestionAnswering.from_pretrained("google/tapas-base", config=config, device_map="auto")
```

بالطبع، ليس من الضروري بالضرورة اتباع أحد هذه الأساليب الثلاثة التي تم بها ضبط نموذج TAPAS. يمكنك أيضًا إجراء تجارب عن طريق تحديد أي من المعلمات الفائقة التي تريدها عند تهيئة [TapasConfig](/docs/transformers/v5.23.0/ar/model_doc/tapas#transformers.TapasConfig)، ثم إنشاء [TapasForQuestionAnswering](/docs/transformers/v5.23.0/ar/model_doc/tapas#transformers.TapasForQuestionAnswering) بناءً على ذلك الإعداد. على سبيل المثال، إذا كان لديك مجموعة بيانات تحتوي على أسئلة محادثة وأسئلة قد تتضمن عمليات تجميع، فيمكنك القيام بذلك بهذه الطريقة. إليك مثال:

```python
from transformers import TapasConfig, TapasForQuestionAnswering

# you can initialize the classification heads any way you want (see docs of TapasConfig)
config = TapasConfig(num_aggregation_labels=3, average_logits_per_cell=True)
# initializing the pre-trained base sized model with our custom classification heads
model = TapasForQuestionAnswering.from_pretrained("google/tapas-base", config=config, device_map="auto")
```

يمكنك أيضاً البدء من نقطة تحقق (checkpoint) سبق ضبطها. تجدر الإشارة إلى أن نقطة التحقق المُضبوطة مسبقاً على WTQ تعاني من بعض المشكلات بسبب خسارة L2 التي تكون هشة إلى حد ما. راجع [هنا](https://github.com/google-research/tapas/issues/91#issuecomment-735719340) لمزيد من المعلومات.

للاطلاع على قائمة بجميع نقاط التفتيش المسبقة التدريب والمُحسّنة لنموذج TAPAS المتوفرة على مركز HuggingFace، راجع [هنا](https://huggingface.co/models?search=tapas).

**الخطوة 2: جهّز بياناتك في صيغة SQA**

ثانياً، بغض النظر عما اخترته أعلاه، يجب أن تستعدّ مجموعة بياناتك في صيغة [SQA](https://www.microsoft.com/en-us/download/details.aspx?id=54253). هذه الصيغة هي ملف TSV/CSV يحتوي على الأعمدة التالية:

- `id`: اختياري، معرّف زوج الجدول والسؤال، لأغراض التتبع.
- `annotator`: اختياري، معرّف الشخص الذي قام بترميز زوج الجدول والسؤال، لأغراض التوثيق.
- `position`: عدد صحيح يشير إلى ما إذا كانت السؤال الأول، الثاني، الثالث، المتعلقة بالجداول. مطلوب فقط في حالة الإعداد المحادثي (SQA). لا تحتاج إلى هذا العمود إذا كنت ستعتمد على الإشراف على WTQ/WikiSQL.
- `question`: string
- `table_file`: نص، اسم ملف csv يحتوي على البيانات الجدولية
- `answer_coordinates`: قائمة من مجموعة واحدة أو أكثر (كل مجموعة هي إحداثي خلية، أي زوج من الصف والعمود الذي يُشكّل جزءاً من الإجابة)
- `answer_text`: قائمة من نص واحد أو أكثر (كل نص يمثل قيمة خلية تشكل جزءاً من الإجابة)
- `aggregation_label`: فهرس مُشغِّل التجميع. مطلوب فقط في حالة الإشراف القوي على التجميع (حالة الإشراف على WikiSQL)
- `float_answer`: الإجابة العشرية على السؤال، إن وُجدت (np.nan إن لم توجد). مطلوبة فقط في حالة الإشراف الضعيف للتجميع (مثل WTQ وWikiSQL)

يجب أن تكون الجداول نفسها موجودة في مجلد، بحيث يكون كل جدول ملف csv منفصلاً. لاحظ أن مؤلغي خوارزمية TAPAS استخدموا سكربتات تحويل تتضمن بعض المنطق الآلي لتحويل مجموعات البيانات الأخرى (WTQ، WikiSQL) إلى صيغة SQA. يوضح المؤلف ذلك [هنا](https://github.com/google-research/tapas/issues/50#issuecomment-705465960). يمكن العثور على نسخة من هذا السكربت تعمل مع تطبيق HuggingFace [هنا](https://github.com/NielsRogge/tapas_utils). بشكل مثير للاهتمام، هذه سكربتات التحويل ليست مثالية (حيث تُملأ حقول `answer_coordinates` و`float_answer` بناءً على `answer_text`)، مما يعني أن نتائج WTQ وWikiSQL يمكن تحسينها فعلياً.

**الخطوة 3: تحويل بياناتك إلى متجهات باستخدام TapasTokenizer**

ثالثًا، بما أنك قمت بتجهيز بياناتك في هذا التنسيق TSV/CSV (والملفات CSV المقابلة التي تحتوي على البيانات الجدولية)، يمكنك بعد ذلك استخدام [TapasTokenizer](/docs/transformers/v5.23.0/ar/model_doc/tapas#transformers.TapasTokenizer) لتحويل أزواج الجدول-السؤال إلى `input_ids` و`attention_mask` و`token_type_ids` وما إلى ذلك. مرة أخرى، بناءً على أي من الحالات الثلاث اخترتها أعلاه، يتطلب [TapasForQuestionAnswering](/docs/transformers/v5.23.0/ar/model_doc/tapas#transformers.TapasForQuestionAnswering) مدخلات مختلفة لتدريبه الدقيق:

| **المهمة**                           | **المداخل المطلوبة**                                                                                                 |
|------------------------------------|---------------------------------------------------------------------------------------------------------------------|
| حواري                     | `input_ids`, `attention_mask`, `token_type_ids`, `labels`                                                           |
|  الإشراف الضعيف للتجميع  | `input_ids`, `attention_mask`, `token_type_ids`, `labels`, `numeric_values`, `numeric_values_scale`, `float_answer` |
| إشراف قوي للتجميع | `input ids`, `attention mask`, `token type ids`, `labels`, `aggregation_labels`                                     |

ينشئ [TapasTokenizer](/docs/transformers/v5.23.0/ar/model_doc/tapas#transformers.TapasTokenizer) الحقول `labels` و`numeric_values` و`numeric_values_scale` بناءً على العمودين `answer_coordinates` و`answer_text` في ملف TSV. أما `float_answer` و`aggregation_labels` فتوجد مسبقاً في ملف TSV الخاص بالخطوة 2. إليك مثالاً:

```py
from transformers import TapasTokenizer
import pandas as pd

model_name = "google/tapas-base"
tokenizer = TapasTokenizer.from_pretrained(model_name)

data = {"Actors": ["Brad Pitt", "Leonardo Di Caprio", "George Clooney"], "Number of movies": ["87", "53", "69"]}
queries = [
    "What is the name of the first actor?",
    "How many movies has George Clooney played in?",
    "What is the total number of movies?",
]
answer_coordinates = [[(0, 0)], [(2, 1)], [(0, 1), (1, 1), (2, 1)]]
answer_text = [["Brad Pitt"], ["69"], ["209"]]
table = pd.DataFrame.from_dict(data)
inputs = tokenizer(
    table=table,
    queries=queries,
    answer_coordinates=answer_coordinates,
    answer_text=answer_text,
    padding="max_length",
    return_tensors="pt",
)
inputs
{'input_ids': tensor([[ ]]), 'attention_mask': tensor([[...]]), 'token_type_ids': tensor([[[...]]]),
'numeric_values': tensor([[ ]]), 'numeric_values_scale: tensor([[ ]]), labels: tensor([[ ]])}
```

لاحظ أن [TapasTokenizer](/docs/transformers/v5.23.0/ar/model_doc/tapas#transformers.TapasTokenizer) يتوقع أن تكون بيانات الجدول **نصية فقط**. يمكنك استخدام `.astype(str)` على إطار البيانات لتحويله إلى بيانات نصية فقط. وبالطبع، هذا يعرض فقط كيفية ترميز مثال تدريب واحد. يُنصح بإنشاء محمّل بيانات (dataloader) للتكرار على الدفعات:

```python
import pandas as pd
import torch

tsv_path = "your_path_to_the_tsv_file"
table_csv_path = "your_path_to_a_directory_containing_all_csv_files"

class TableDataset(torch.utils.data.Dataset):
    def __init__(self, data, tokenizer):
        self.data = data
        self.tokenizer = tokenizer

    def __getitem__(self, idx):
        item = data.iloc[idx]
        table = pd.read_csv(table_csv_path + item.table_file).astype(
            str
        )  # be sure to make your table data text only
        encoding = self.tokenizer(
            table=table,
            queries=item.question,
            answer_coordinates=item.answer_coordinates,
            answer_text=item.answer_text,
            truncation=True,
            padding="max_length",
            return_tensors="pt",
        )
        # remove the batch dimension which the tokenizer adds by default
        encoding = {key: val.squeeze(0) for key, val in encoding.items()}
        # add the float_answer which is also required (weak supervision for aggregation case)
        encoding["float_answer"] = torch.tensor(item.float_answer)
        return encoding

    def __len__(self):
        return len(self.data)

data = pd.read_csv(tsv_path, sep="\t")
train_dataset = TableDataset(data, tokenizer)
train_dataloader = torch.utils.data.DataLoader(train_dataset, batch_size=32)
```

لاحظ أنه هنا، نقوم بتشفير كل زوج من الجدول والسؤال بشكل مستقل. وهذا مقبول طالما أن مجموعة البيانات الخاصة بك **غير محادثة**. في حال كانت مجموعة بياناتك تتضمن أسئلة محادثة (كما هو الحال في SQA)، فيجب عليك أولاً تجميع `queries` و`answer_coordinates` و`answer_text` لكل جدول (بترتيب مؤشر `position`) وتشفير كل جدول مع أسئلته دفعة واحدة. سيضمن ذلك ضبط أنواع الرموز `prev_labels` بشكل صحيح (انظر توثيق [TapasTokenizer](/docs/transformers/v5.23.0/ar/model_doc/tapas#transformers.TapasTokenizer)). راجع [هذا الدفتر](https://github.com/NielsRogge/Transformers-Tutorials/blob/master/TAPAS/Fine_tuning_TapasForQuestionAnswering_on_SQA.ipynb) لمزيد من المعلومات.

**الخطوة 4: تدريب (ضبط) النموذج

يمكنك بعد ذلك ضبط [TapasForQuestionAnswering](/docs/transformers/v5.23.0/ar/model_doc/tapas#transformers.TapasForQuestionAnswering) على النحو التالي (موضح هنا لحالة الإشراف الضعيف لحالة التجميع):

```python
from transformers import AdamW, TapasConfig, TapasForQuestionAnswering

# this is the default WTQ configuration
config = TapasConfig(
    num_aggregation_labels=4,
    use_answer_as_supervision=True,
    answer_loss_cutoff=0.664694,
    cell_selection_preference=0.207951,
    huber_loss_delta=0.121194,
    init_cell_selection_weights_to_zero=True,
    select_one_column=True,
    allow_empty_column_selection=False,
    temperature=0.0352513,
)
model = TapasForQuestionAnswering.from_pretrained("google/tapas-base", config=config, device_map="auto")

optimizer = AdamW(model.parameters(), lr=5e-5)

model.train()
for epoch in range(2):  # loop over the dataset multiple times
    for batch in train_dataloader:
        # get the inputs;
        input_ids = batch["input_ids"]
        attention_mask = batch["attention_mask"]
        token_type_ids = batch["token_type_ids"]
        labels = batch["labels"]
        numeric_values = batch["numeric_values"]
        numeric_values_scale = batch["numeric_values_scale"]
        float_answer = batch["float_answer"]

        # zero the parameter gradients
        optimizer.zero_grad()

        # forward + backward + optimize
        outputs = model(
            input_ids=input_ids,
            attention_mask=attention_mask,
            token_type_ids=token_type_ids,
            labels=labels,
            numeric_values=numeric_values,
            numeric_values_scale=numeric_values_scale,
            float_answer=float_answer,
        )
        loss = outputs.loss
        loss.backward()
        optimizer.step()
```

## الاستخدام: الاستدلال

هنا نوضح كيفية استخدام [TapasForQuestionAnswering](/docs/transformers/v5.23.0/ar/model_doc/tapas#transformers.TapasForQuestionAnswering) للاستدلال (أي إجراء تنبؤات على بيانات جديدة). للاستدلال، يجب تقديم `input_ids` و`attention_mask` و`token_type_ids` (والتي يمكنك الحصول عليها باستخدام [TapasTokenizer](/docs/transformers/v5.23.0/ar/model_doc/tapas#transformers.TapasTokenizer)) إلى النموذج للحصول على القيم اللوجستية. بعد ذلك، يمكنك استخدام الطريقة المريحة `~models.tapas.tokenization_tapas.convert_logits_to_predictions` لتحويل هذه القيم إلى إحداثيات متوقعة وفهارس تجميع اختيارية.

ومع ذلك، لاحظ أن الاستدلال **مختلف** اعتمادًا على ما إذا كانت البيئة محادثة أم لا. في بيئة غير محادثة، يمكن إجراء الاستدلال بالتوازي على جميع أزواج الجدول والسؤال في الدفعة. إليك مثال على ذلك:

```py
from transformers import TapasTokenizer, TapasForQuestionAnswering
import pandas as pd

model_name = "google/tapas-base-finetuned-wtq"
model = TapasForQuestionAnswering.from_pretrained(model_name, device_map="auto")
tokenizer = TapasTokenizer.from_pretrained(model_name)

data = {"Actors": ["Brad Pitt", "Leonardo Di Caprio", "George Clooney"], "Number of movies": ["87", "53", "69"]}
queries = [
    "What is the name of the first actor?",
    "How many movies has George Clooney played in?",
    "What is the total number of movies?",
]
table = pd.DataFrame.from_dict(data)
inputs = tokenizer(table=table, queries=queries, padding="max_length", return_tensors="pt").to(model.device)
outputs = model(**inputs)
predicted_answer_coordinates, predicted_aggregation_indices = tokenizer.convert_logits_to_predictions(
    inputs, outputs.logits.detach(), outputs.logits_aggregation.detach()
)

# let's print out the results:
id2aggregation = {0: "NONE", 1: "SUM", 2: "AVERAGE", 3: "COUNT"}
aggregation_predictions_string = [id2aggregation[x] for x in predicted_aggregation_indices]

answers = []
for coordinates in predicted_answer_coordinates:
    if len(coordinates) == 1:
        # only a single cell:
        answers.append(table.iat[coordinates[0]])
    else:
        # multiple cells
        cell_values = []
        for coordinate in coordinates:
            cell_values.append(table.iat[coordinate])
        answers.append(", ".join(cell_values))

display(table)
print("")
for query, answer, predicted_agg in zip(queries, answers, aggregation_predictions_string):
    print(query)
    if predicted_agg == "NONE":
        print("Predicted answer: " + answer)
    else:
        print("Predicted answer: " + predicted_agg + " > " + answer)
What is the name of the first actor?
Predicted answer: Brad Pitt
How many movies has George Clooney played in?
Predicted answer: COUNT > 69
What is the total number of movies?
Predicted answer: SUM > 87, 53, 69
```

في حالة الإعداد التفاعلي، يجب تقديم كل زوج من الجدول والسؤال إلى النموذج **بشكل متسلسل**، بحيث يمكن استبدال أنواع الرموز `prev_labels` بالرموز `labels` المتوقعة من زوج الجدول والسؤال السابق. مرة أخرى، يمكن العثور على مزيد من المعلومات في [هذا الدفتر](https://github.com/NielsRogge/Transformers-Tutorials/blob/master/TAPAS/Fine_tuning_TapasForQuestionAnswering_on_SQA.ipynb).

## الموارد

- [دليل مهمة تصنيف النصوص](../tasks/sequence_classification)
- [دليل مهمة نمذجة اللغة المقنّعة](../tasks/masked_language_modeling)

## المخرجات الخاصة بـ TAPAS[[transformers.models.tapas.modeling_tapas.TableQuestionAnsweringOutput]]

#### transformers.models.tapas.modeling_tapas.TableQuestionAnsweringOutput[[transformers.models.tapas.modeling_tapas.TableQuestionAnsweringOutput]]

```python
transformers.models.tapas.modeling_tapas.TableQuestionAnsweringOutput(loss: typing.Optional[torch.Tensor] = None, logits: typing.Optional[torch.Tensor] = None, logits_aggregation: typing.Optional[torch.Tensor] = None, hidden_states: tuple[torch.Tensor] | None = None, attentions: tuple[torch.Tensor] | None = None)
```

[المصدر](https://github.com/huggingface/transformers/blob/v5.23.0/src/transformers/models/tapas/modeling_tapas.py#L49)

**المعاملات:**

loss (`torch.Tensor` من الشكل `(1,)`، *اختياري*، يُعاد عند توفير `labels` (وإمكانًا `answer`، `aggregation_labels`، `numeric_values` و`numeric_values_scale`)) : إجمالي الخسارة كمجموع خسارة احتمال السجل لاختيار الخلايا الهرمية و(اختياريًا) خسارة الانحدار شبه المُشرف و(اختياريًا) الخسارة المُشرفة للتجميعات.

logits (`torch.Tensor` من الشكل `(batch_size, sequence_length)`) : درجات التنبؤ لرأس اختيار الخلايا، لكل رمز.

logits_aggregation (`torch.Tensor`، *اختياري*، من الشكل `(batch_size, num_aggregation_labels)`) : درجات التنبؤ لرأس التجميع، لكل مشغّل تجميع.

hidden_states (`tuple[torch.Tensor]`، *اختياري*، يُعاد عند تمرير `output_hidden_states=True` أو عند تعيين `config.output_hidden_states=True`) : مجموعة من `torch.Tensor` (واحد لإخراج الطبقات المضمنة إذا كان النموذج يحتوي على طبقة تضمين، + واحد لإخراج كل طبقة) بأبعاد `(batch_size, sequence_length, hidden_size)`. حالات مخفية للنموذج عند إخراج كل طبقة بالإضافة إلى مخرجات التضمين الأولية الاختيارية.

attentions (`tuple[torch.Tensor]`، *اختياري*، يُعاد عند تمرير `output_attentions=True` أو عند تعيين `config.output_attentions=True`) : مجموعة من `torch.Tensor` (واحدة لكل طبقة) بأبعاد `(batch_size, num_heads, sequence_length, sequence_length)`. أوزان الانتباه بعد تطبيق softmax على الانتباه، وتُستخدم لحساب المتوسط المرجح في رؤوس الانتباه الذاتي.

نوع المخرجات لـ [TapasForQuestionAnswering](/docs/transformers/v5.23.0/ar/model_doc/tapas#transformers.TapasForQuestionAnswering).

## TapasConfig[[transformers.TapasConfig]]

#### transformers.TapasConfig[[transformers.TapasConfig]]

```python
transformers.TapasConfig(transformers_version: str | None = None, architectures: list[str] | None = None, output_hidden_states: bool | None = False, return_dict: bool | None = True, dtype: str | torch.dtype | None = None, chunk_size_feed_forward: int = 0, is_encoder_decoder: bool = False, id2label: dict[int, str] | dict[str, str] | None = None, label2id: dict[str, int] | dict[str, str] | None = None, problem_type: Literal['regression', 'single_label_classification', 'multi_label_classification'] | None = None, vocab_size: int = 30522, hidden_size: int = 768, num_hidden_layers: int = 12, num_attention_heads: int = 12, intermediate_size: int = 3072, hidden_act: str = 'gelu', hidden_dropout_prob: float | int = 0.1, attention_probs_dropout_prob: float | int = 0.1, max_position_embeddings: int = 1024, type_vocab_sizes: list[int] | tuple[int, ...] = (3, 256, 256, 2, 256, 256, 10), initializer_range: float = 0.02, layer_norm_eps: float = 1e-12, pad_token_id: int | None = 0, bos_token_id: int | None = None, eos_token_id: int | list[int] | None = None, positive_label_weight: float = 10.0, num_aggregation_labels: int = 0, aggregation_loss_weight: float = 1.0, use_answer_as_supervision: bool | None = None, answer_loss_importance: float = 1.0, use_normalized_answer_loss: bool = False, huber_loss_delta: float | None = None, temperature: float = 1.0, aggregation_temperature: float = 1.0, use_gumbel_for_cells: bool = False, use_gumbel_for_aggregation: bool = False, average_approximation_function: str = 'ratio', cell_selection_preference: float | None = None, answer_loss_cutoff: float | int | None = None, max_num_rows: int = 64, max_num_columns: int = 32, average_logits_per_cell: bool = False, select_one_column: bool = True, allow_empty_column_selection: bool = False, init_cell_selection_weights_to_zero: bool = False, reset_position_index_per_cell: bool = True, disable_per_token_loss: bool = False, aggregation_labels: dict | None = None, no_aggregation_label_index: int | None = None, is_decoder: bool = False, add_cross_attention: bool = False, tie_word_embeddings: bool = True)
```

[المصدر](https://github.com/huggingface/transformers/blob/v5.23.0/src/transformers/models/tapas/configuration_tapas.py#L32)

**المعاملات:**

vocab_size (`int`، *اختياري*، القيمة الافتراضية `30522`) : حجم مفردات النموذج. يحدد عدد الرموز المختلفة التي يمكن تمثيلها بواسطة `input_ids`.

hidden_size (`int`، *اختياري*، القيمة الافتراضية `768`) : بُعد التمثيلات المخفية.

num_hidden_layers (`int`، *اختياري*، القيمة الافتراضية `12`) : عدد الطبقات المخفية في مُفكِّك Transformer.

num_attention_heads (`int`، *اختياري*، القيمة الافتراضية `12`) : عدد رؤوس الانتباه في كل طبقة انتباه داخل مُفكِّك Transformer.

intermediate_size (`int`، *اختياري*، القيمة الافتراضية `3072`) : بُعد تمثيلات MLP.

hidden_act (`str`، *اختياري*، القيمة الافتراضية `gelu`) : دالة التنشيط غير الخطية (دالة أو نص) في المُفكِّك. على سبيل المثال، `"gelu"`، `"relu"`، `"silu"`، وما إلى ذلك.

hidden_dropout_prob (`Union[float, int]`، *اختياري*، القيمة الافتراضية `0.1`) : احتمال الإسقاط (dropout) لجميع الطبقات المتصلة بالكامل في التضمينات (embeddings) والمُشفِّر (encoder) والمُجمِّع (pooler).

attention_probs_dropout_prob (`Union[float, int]`، *اختياري*، القيمة الافتراضية `0.1`) : نسبة الإسقاط (dropout) لاحتمالات الانتباه.

max_position_embeddings (`int`، *اختياري*، الافتراضي هو `1024`) : أقصى طول تسلسل قد يُستخدم به هذا النموذج.

type_vocab_sizes (`list[int]`، *اختياري*، القيمة الافتراضية `[3, 256, 256, 2, 256, 256, 10]`) : أحجام مفردات `token_type_ids` المُمررة عند استدعاء [TapasModel](/docs/transformers/v5.23.0/ar/model_doc/tapas#transformers.TapasModel).

initializer_range (`float`، *اختياري*، القيمة الافتراضية `0.02`) : الانحراف المعياري لـ truncated_normal_initializer المستخدم في تهيئة جميع مصفوفات الأوزان.

layer_norm_eps (`float`، *اختياري*، القيمة الافتراضية `1e-12`) : قيمة الإيبسلون المستخدمة في طبقات تطبيع الطبقة.

pad_token_id (`int`، *اختياري*، القيمة الافتراضية `0`) : معرّف الرمز المستخدم للتعبئة في المفردات.

bos_token_id (`int`, *اختياري*) : معرّف الرمز المستخدم لبدء البث في المفردات.

eos_token_id (`Union[int, list[int]]`، *اختياري*) : معرّف الرمز المستخدم لنهاية البث في المفردات.

positive_label_weight (`float`، *اختياري*، القيمة الافتراضية 10.0) : الوزن الخاص بالتسميات الإيجابية.

num_aggregation_labels (`int`، *اختياري*، القيمة الافتراضية 0) : عدد مشغّلات التجميع التي سيتم التنبؤ بها.

aggregation_loss_weight (`float`، *اختياري*، القيمة الافتراضية 1.0) : وزن الأهمية لخسارة التجميع.

use_answer_as_supervision (`bool`، *اختياري*) : ما إذا كان سيتم استخدام الإجابة كإشراف وحيد لمجموعات الأمثلة.

answer_loss_importance (`float`، *اختياري*، القيمة الافتراضية 1.0) : وزن الأهمية لخسارة الانحدار.

use_normalized_answer_loss (`bool`، *اختياري*، القيمة الافتراضية `False`) : ما إذا كان سيتم تطبيع خسارة الإجابة (answer loss) باستخدام القيمة القصوى للقيمة المتوقعة والقيمة المتوقعة.

huber_loss_delta (`float`، *اختياري*) : معامل دلتا المستخدم لحساب خسارة الانحدار.

temperature (`float`، *اختياري*، القيمة الافتراضية 1.0) : القيمة المستخدمة للتحكم في (أو تغيير) انحراف احتمالات سجلات الخلايا.

aggregation_temperature (`float`، *اختياري*، القيمة الافتراضية 1.0) : يُقيّم نتائج التجميع (aggregation logits) للتحكم في انحراف الاحتمالات.

use_gumbel_for_cells (`bool`، *اختياري*، الافتراضي `False`) : ما إذا كان سيتم تطبيق Gumbel-Softmax على اختيار الخلايا.

use_gumbel_for_aggregation (`bool`، *اختياري*، الافتراضي `False`) : ما إذا كان سيتم تطبيق Gumbel-Softmax على اختيار التجميع.

average_approximation_function (`string`، *اختياري*، الافتراضي `"ratio"`) : الطريقة المستخدمة لحساب المتوسط المتوقع للخلايا في حالة الإشراف الضعيف. أحد `"ratio"` أو `"first_order"` أو `"second_order"`.

cell_selection_preference (`float`, *اختياري*) : التفضيل لاختيار الخلايا في الحالات الغامضة. ينطبق فقط في حالة الإشراف الضعيف للتجميع (WTQ، WikiSQL). إذا كانت الكتلة الإجمالية لاحتمالات التجميع (باستثناء عامل "NONE") أعلى من هذا المعامل فائق، فإن التجميع يُتنبأ بمثال.

answer_loss_cutoff (`float`، *اختياري*) : تجاهل الأمثلة التي يكون فيها خسارة الإجابة أكبر من حدّ القطع.

max_num_rows (`int`، *اختياري*، القيمة الافتراضية 64) : الحد الأقصى لعدد الصفوف.

max_num_columns (`int`، *اختياري*، القيمة الافتراضية 32) : الحد الأقصى لعدد الأعمدة.

average_logits_per_cell (`bool`، *اختياري*، الافتراضي `False`) : ما إذا كان سيتم حساب متوسط القيم اللوجستية (logits) لكل خلية.

select_one_column (`bool`، *اختياري*، الافتراضي `True`) : ما إذا كان سيتم تقييد النموذج لاختيار الخلايا من عمود واحد فقط.

allow_empty_column_selection (`bool`، *اختياري*، الافتراضي `False`) : ما إذا كان يُسمح بعدم اختيار أي عمود.

init_cell_selection_weights_to_zero (`bool`، *اختياري*، القيمة الافتراضية `False`) : ما إذا كان سيتم تهيئة أوزان اختيار الخلايا إلى 0 بحيث تكون الاحتمالات الأولية 50%.

reset_position_index_per_cell (`bool`، *اختياري*، القيمة الافتراضية `True`) : ما إذا كان يجب إعادة تعيين فهارس المواقع في كل خلية (أي استخدام تضمينات المواقع النسبية).

disable_per_token_loss (`bool`، *اختياري*، الافتراضي `False`) : ما إذا كان سيتم تعطيل أي إشراف (قوي أو ضعيف) على الخلايا.

aggregation_labels (`dict[int, label]`، *اختياري*) : تسميات التجميع المستخدمة لتجميع النتائج. على سبيل المثال، تحتوي نماذج WTQ على تسميات تجميع التالية: `{0: "NONE", 1: "SUM", 2: "AVERAGE", 3: "COUNT"}`

no_aggregation_label_index (`int`, *اختياري*) : إذا كانت تسميات التجميع معرّفة وكان أحد هذه التسميات يمثل "لا يوجد تجميع"، فيجب تعيين هذا الحقل إلى فهرس تلك التسمية. على سبيل المثال، تحتوي نماذج WTQ على تسمية التجميع "NONE" عند الفهرس 0، لذا يجب تعيين القيمة إلى 0 لهذه النماذج.

is_decoder (`bool`، *اختياري*، الافتراضي `False`) : ما إذا كان النموذج يُستخدم كمُفكِّك أم لا. إذا كان `False`، يُستخدم النموذج كمُشفِّر.

add_cross_attention (`bool`, *اختياري*, الافتراضي هو `False`) : ما إذا كان يجب إضافة طبقات الانتباه المتقاطع إلى النموذج.

tie_word_embeddings (`bool`، *اختياري*، القيمة الافتراضية `True`) : ما إذا كان يجب ربط ترميزات الأوزان وفقاً لخريطة `tied_weights_keys` الخاصة بالنموذج.

هذه فئة الإعدادات المخزنة لإعدادات نموذج TapasModel. تُستخدم لاستحداث نموذج Tapas وفقًا للحجج المحددة، مع تعريف بنية النموذج. إن استحداث إعدادات باستخدام القيم الافتراضية سيُنتج إعدادات مشابهة لتلك الخاصة بـ [google/tapas-base-finetuned-sqa](https://huggingface.co/google/tapas-base-finetuned-sqa)

ترث كائنات الإعداد من [PreTrainedConfig](/docs/transformers/v5.23.0/ar/main_classes/configuration#transformers.PreTrainedConfig) ويمكن استخدامها للتحكم في مخرجات النموذج. اقرأ التوثيق الخاص بـ [PreTrainedConfig](/docs/transformers/v5.23.0/ar/main_classes/configuration#transformers.PreTrainedConfig) لمزيد من المعلومات.

مثال:

```python
>>> from transformers import TapasModel, TapasConfig

>>> # Initializing a default (SQA) Tapas configuration
>>> configuration = TapasConfig()
>>> # Initializing a model from the configuration
>>> model = TapasModel(configuration)
>>> # Accessing the model configuration
>>> configuration = model.config
```

## TapasTokenizer[[transformers.TapasTokenizer]]

#### transformers.TapasTokenizer[[transformers.TapasTokenizer]]

```python
transformers.TapasTokenizer(vocab_file, do_lower_case = True, do_basic_tokenize = True, never_split = None, unk_token = '[UNK]', sep_token = '[SEP]', pad_token = '[PAD]', cls_token = '[CLS]', mask_token = '[MASK]', empty_token = '[EMPTY]', tokenize_chinese_chars = True, strip_accents = None, cell_trim_length: int = -1, max_column_id: int | None = None, max_row_id: int | None = None, strip_column_names: bool = False, update_answer_coordinates: bool = False, min_question_length = None, max_question_length = None, model_max_length: int = 512, additional_special_tokens: list[str] | None = None, clean_up_tokenization_spaces = True, **kwargs)
```

[المصدر](https://github.com/huggingface/transformers/blob/v5.23.0/src/transformers/models/tapas/tokenization_tapas.py#L149)

**المعاملات:**

vocab_file (`str`) : ملف يحتوي على المفردات.

do_lower_case (`bool`، *اختياري*، القيمة الافتراضية `True`) : ما إذا كان سيتم تحويل المدخلات إلى أحرف صغيرة عند تقسيم النص إلى رموز.

do_basic_tokenize (`bool`, *اختياري*, الافتراضي `True`) : ما إذا كان سيتم تنفيذ التقطيع الأساسي قبل WordPiece.

never_split (`Iterable`، *اختياري*) : مجموعة من الرموز التي لن يتم تقسيمها أبداً أثناء الترميز. لا يكون له تأثير إلا عندما `do_basic_tokenize=True`

unk_token (`str`، *اختياري*، القيمة الافتراضية `"[UNK]"`) : رمز المجهول. الرمز غير الموجود في المفردات لا يمكن تحويله إلى معرّف، فيُستبدل بهذا الرمز.

sep_token (`str`، *اختياري*، القيمة الافتراضية `"[SEP]"`) : رمز الفاصل، الذي يُستخدم عند بناء تسلسل من عدة تسلسلات، على سبيل المثال تسلسلان لتصنيف التسلسل، أو نص وسؤال للإجابة على الأسئلة. كما يُستخدم كآخر رمز في تسلسل مبني باستخدام الرموز الخاصة.

pad_token (`str`، *اختياري*، الافتراضي هو `"[PAD]"`) : الرمز المستخدم للتعبئة، على سبيل المثال عند تجميع تسلسلات ذات أطوال مختلفة.

cls_token (`str`، *اختياري*، القيمة الافتراضية `"[CLS]"`) : رمز التصنيف الذي يُستخدم عند إجراء تصنيف التسلسل (تصنيف التسلسل بأكمله بدلاً من التصنيف لكل رمز على حدة). وهو الرمز الأول في التسلسل عند بناؤه باستخدام الرموز الخاصة.

mask_token (`str`، *اختياري*، القيمة الافتراضية `"[MASK]"`) : الرمز المستخدم لإخفاء القيم. هذا هو الرمز المستخدم عند تدريب هذا النموذج باستخدام نمذجة اللغة المقنّعة. وهو الرمز الذي سيحاول النموذج التنبؤ به.

empty_token (`str`، *اختياري*، القيمة الافتراضية `"[EMPTY]"`) : الرمز المستخدم لقيم الخلايا الفارغة في الجدول. وتشمل قيم الخلايا الفارغة "" و"n/a" و"nan" و"؟".

tokenize_chinese_chars (`bool`، *اختياري*، القيمة الافتراضية `True`) : ما إذا كان سيتم توكنيزي (tokenize) الأحرف الصينية. يُرجى على الأرجح تعطيل هذا الخيار للغة اليابانية (انظر هذا [المشكلة](https://github.com/huggingface/transformers/issues/328)).

strip_accents (`bool`، *اختياري*) : ما إذا كان يجب إزالة جميع العلامات الصوتية. إذا لم يُحدَّد هذا الخيار، فسيتم تحديده بناءً على قيمة `lowercase` (كما في BERT الأصلي).

cell_trim_length (`int`، *اختياري*، القيمة الافتراضية -1) : إذا كانت > 0: تقصّ الخلايا بحيث يكون طولها <= هذه القيمة. كما يُعطّل تقصير الخلايا الإضافي، لذا يجب استخدامه مع ضبط `truncation` على `True`.

max_column_id (`int`, *اختياري*) : المعرّف الأقصى للعمود الذي سيتم استخراجه.

max_row_id (`int`, *اختياري*) : المعرّف الأقصى للصف الذي سيتم استخراجه.

strip_column_names (`bool`، *اختياري*، الافتراضي `False`) : ما إذا كان يجب إضافة نصوص فارغة بدلاً من أسماء الأعمدة.

update_answer_coordinates (`bool`، *اختياري*، الافتراضي `False`) : ما إذا كان يجب إعادة حساب إحداثيات الإجابة من نص الإجابة.

min_question_length (`int`، *اختياري*) : الحد الأدنى لطول كل سؤال بوحدة الرموز (سيتم تخطيه في حال عدم الوفاء بهذا الشرط).

max_question_length (`int`، *اختياري*) : الحد الأقصى لطول كل سؤال بوحدة الرموز (سيتم تخطيه في حال تجاوز هذا الحد).

clean_up_tokenization_spaces (`bool`، *اختياري*، الافتراضي هو `True`) : ما إذا كان سيتم تنظيف المسافات بعد فك الترميز، ويتضمن التنظيف إزالة أي عناصر غير مرغوبة مثل المسافات الزائدة.

إنشاء مُرمِّز TAPAS. مبني على WordPiece. يُمهّد جدولًا وجملة واحدة أو أكثر ذات صلة لاستخدامها في نماذج TAPAS.

يرث هذا المُجزِّئ من [PreTrainedTokenizer](/docs/transformers/v5.23.0/ar/main_classes/tokenizer#transformers.PythonBackend) الذي يحتوي على معظم الطرق الرئيسية. ينبغي للمستخدمين الرجوع إلى هذه الفئة الأصلية لمزيد من المعلومات حول تلك الطرق. ينشئ [TapasTokenizer](/docs/transformers/v5.23.0/ar/model_doc/tapas#transformers.TapasTokenizer) عدة معرّفات لنوع الرمز لتشفير البنية الجدولية. وللتدقيق أكثر، فإنه يضيف 7 معرّفات لنوع الرمز، بالترتيب التالي: `segment_ids`، `column_ids`، `row_ids`، `prev_labels`، `column_ranks`، `inv_column_ranks` و`numeric_relations`:

- segment_ids: تُحدد ما إذا كان الرمز (token) ينتمي إلى السؤال (0) أو الجدول (1). القيمة 0 للرموز الخاصة والحشو (padding).
- column_ids: تُحدد العمود الذي ينتمي إليه الرمز في الجدول (بدءًا من 1). تكون قيمته 0 لجميع رموز السؤال والرموز الخاصة ورموز الحشو.
- row_ids: تُشير إلى الصف الذي ينتمي إليه الرمز في الجدول (بدءًا من 1). تكون قيمتها 0 لجميع رموز السؤال والرموز الخاصة والحشو. كما تكون 0 لرموز رؤوس الأعمدة.
- prev_labels: تُشير إلى ما إذا كان الرمز (token) جزءًا من إجابة السؤال السابق (1) أم لا (0). مفيدة في الإعدادات الحوارية (مثل SQA).
- column_ranks: يُظهر ترتيب رمز الجدول بالنسبة إلى عمود، إن كان ذلك ممكنًا. على سبيل المثال، إذا كان لديك عمود "عدد الأفلام" بقيم 87 و53 و69، فإن ترتيبات الأعمدة لهذه الرموز هي 3 و1 و2 على التوالي. القيمة 0 لجميع رموز السؤال والرموز الخاصة والحشو.
- inv_column_ranks: يُظهر الترتيب العكسي لرمز جدول بالنسبة إلى عمود، إن كان ذلك ممكنًا. على سبيل المثال، إذا كان لديك عمود "عدد الأفلام" بقيم 87 و53 و69، فإن الترتيبات العكسية للأعمدة لهذه الرموز هي 1 و3 و2 على التوالي. القيمة 0 لجميع رموز الأسئلة والرموز الخاصة والحشو.
- numeric_relations: تُظهر العلاقات الرقمية بين السؤال ورموز الجدول. القيمة 0 لجميع رموز السؤال والرموز الخاصة والحشو.

يُنفّذ [TapasTokenizer](/docs/transformers/v5.23.0/ar/model_doc/tapas#transformers.TapasTokenizer) عملية الترميز من البداية إلى النهاية على جدول وجُمل مرتبطة به: تقسيم علامات الترقيم وتقسيم الكلمات (wordpiece).

#### __call__[[transformers.TapasTokenizer.__call__]]

```python
__call__(table: typing.Union[ForwardRef('pd.DataFrame'), str, list[str], NoneType], queries: str | list[str] | list[int] | list[list[str]] | list[list[int]] | None = None, answer_coordinates: list[tuple] | list[list[tuple]] | None = None, answer_text: list[str] | list[list[str]] | None = None, add_special_tokens: bool = True, padding: bool | str | transformers.utils.generic.PaddingStrategy = False, truncation: bool | str | transformers.models.tapas.tokenization_tapas.TapasTruncationStrategy = False, max_length: int | None = None, 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)
```

[المصدر](https://github.com/huggingface/transformers/blob/v5.23.0/src/transformers/models/tapas/tokenization_tapas.py#L518)

**المعاملات:**

table (`pd.DataFrame` أو `str` أو `list[str]`) : جدول يحتوي على بيانات جدولية. لاحظ أن جميع قيم الخلايا يجب أن تكون نصية. استخدم *.astype(str)* على إطار بيانات Pandas لتحويله إلى نص. عند تمرير نص أو قائمة من النصوص، سيتم تفسيرها كاستعلامات مع جدول فارغ (لدعم اختبارات المرمّزات العامة).

queries (`str` أو `list[str]`) : سؤال أو مجموعة أسئلة متعلقة بجدول يُراد ترميزه. لاحظ أنه في حالة وجود مجموعة، يجب أن تشير جميع الأسئلة إلى **نفس** الجدول.

answer_coordinates (`list[Tuple]` أو `list[list[Tuple]]`، *اختياري*) : إحداثيات الإجابة لكل زوج جدول-سؤال في الدفعة. في حال تم تقديم زوج جدول-سؤال واحد فقط، يجب أن تكون answer_coordinates قائمة واحدة تحتوي على زوج واحد أو أكثر من الأزواج. يجب أن يكون كل زوج من الأزواج عبارة عن زوج (row_index, column_index). الصف الأول للبيانات (وليس صف ترويسة الأعمدة) له فهرس 0. العمود الأول له فهرس 0. في حال تم تقديم دفعة من أزواج الجدول-السؤال، يجب أن تكون answer_coordinates قائمة من قوائم الأزواج (حيث تتوافق كل قائمة مع زوج جدول-سؤال واحد).

answer_text (`list[str]` أو `list[list[str]]`، *اختياري*) : نص الإجابة لكل زوج من الجدول والسؤال في الدفعة. في حال تم تقديم زوج واحد فقط من الجدول والسؤال، يجب أن يكون answer_text قائمة واحدة تحتوي على نص واحد أو أكثر. يجب أن يكون كل نص هو نص الإجابة المقابل لإحداثيات الإجابة. في حال تم تقديم دفعة من أزواج الجدول والسؤال، يجب أن تكون answer_coordinates قائمة من قوائم النصوص (حيث تتوافق كل قائمة مع زوج واحد من الجدول والسؤال).

add_special_tokens (`bool`، *اختياري*، الافتراضي `True`) : ما إذا كان سيتم ترميز التسلسلات باستخدام الرموز الخاصة الخاصة بنموذجها أم لا.

padding (`bool` أو `str` أو [PaddingStrategy](/docs/transformers/v5.23.0/ar/internal/file_utils#transformers.utils.PaddingStrategy)، *اختياري*، القيمة الافتراضية `False`) : يُفعّل التحكم في الحشو. يقبل القيم التالية:  - `True` أو `'longest'`: الحشو حتى أطول تسلسل في الدفعة (أو بدون حشو إذا تم تقديم تسلسل واحد فقط). - `'max_length'`: الحشو حتى الحد الأقصى للطول المحدد بواسطة الحجة `max_length` أو حتى الحد الأقصى المقبول لطول الإدخال للنموذج إذا لم تُقدَّم تلك الحجة. - `False` أو `'do_not_pad'` (الافتراضي): بدون حشو (أي، يمكنه إخراج دفعة تحتوي على تسلسلات بطول مختلف).

truncation (`bool` أو `str` أو `TapasTruncationStrategy`، *اختياري*، القيمة الافتراضية `False`) : يُفعّل التحكم في القص. يقبل القيم التالية:  - `True` أو `'drop_rows_to_fit'`: يُقصّ النص إلى الحد الأقصى للطول المحدد عبر الحجة `max_length`، أو إلى الحد الأقصى المقبول لطول الإدخال للنموذج إذا لم تُقدَّم تلك الحجة. يتم القص صفًا تلو الآخر، مع إزالة الصفوف من الجدول. - `False` أو `'do_not_truncate'` (الافتراضي): لا يتم القص (أي، يمكن إخراج دفعة تحتوي على تسلسلات أطول من الحد الأقصى المقبول لحجم الإدخال للنموذج).

max_length (`int`, *اختياري*) : يتحكم في الحد الأقصى للطول الذي سيستخدمه أحد معاملات القص/الحشو. إذا تُرك غير مضبوط أو ضُبط على `None`، فسيتم استخدام الحد الأقصى للطول المحدد مسبقًا للنموذج إذا كان أحد معاملات القص/الحشو يتطلب حدًا أقصى للطول. إذا لم يكن للنموذج حد أقصى محدد لطول الإدخال (مثل XLNet)، فسيتم تعطيل القص/الحشو إلى حد أقصى للطول.

is_split_into_words (`bool`، *اختياري*، القيمة الافتراضية `False`) : ما إذا كانت المدخلات مُجزّأة مسبقًا (مثل تقسيمها إلى كلمات) أم لا. إذا تم ضبطها على `True`، يفترض المُجزّئ أن المدخلات مُقسّمة مسبقًا إلى كلمات (على سبيل المثال، عن طريق تقسيمها على المسافات) وسيُجزّئها. هذا مفيد في مهام تحديد الكيانات الاسمية أو تصنيف الرموز.

pad_to_multiple_of (`int`, *اختياري*) : إذا تم تعيينه، سيتم توسيط التسلسل إلى مضاعف للقيمة المُقدَّمة. وهذا مفيد بشكل خاص لتمكين استخدام نوى التينسور (Tensor Cores) على أجهزة NVIDIA التي تتمتع بقابلية معالجة `>= 7.5` (Volta).

return_tensors (`str` أو [TensorType](/docs/transformers/v5.23.0/ar/internal/file_utils#transformers.TensorType)، *اختياري*) : إذا تم تعيينه، فسيُرجع تينسورات بدلاً من قائمة من الأعداد الصحيحة بلغة بايثون. القيم المقبولة هي: - `'pt'`: يُرجع كائنات `torch.Tensor` من PyTorch. - `'np'`: يُرجع كائنات `np.ndarray` من Numpy.

الطريقة الرئيسية لتجزئة (tokenization) وتجهيز تسلسل واحد أو عدة تسلسلات مرتبطة بجدول للنموذج.

#### convert_logits_to_predictions[[transformers.TapasTokenizer.convert_logits_to_predictions]]

```python
convert_logits_to_predictions(data, logits, logits_agg = None, cell_classification_threshold = 0.5)
```

[المصدر](https://github.com/huggingface/transformers/blob/v5.23.0/src/transformers/models/tapas/tokenization_tapas.py#L1885)

**المعاملات:**

data (`dict`) : قاموس يربط الميزات بقيمها الفعلية. يجب إنشاؤه باستخدام [TapasTokenizer](/docs/transformers/v5.23.0/ar/model_doc/tapas#transformers.TapasTokenizer).

logits (`torch.Tensor` من الشكل `(batch_size, sequence_length)`) : متجه يحتوي على القيم اللوجستية (logits) على مستوى الرموز.

logits_agg (`torch.Tensor` من الشكل `(batch_size, num_aggregation_labels)`، *اختياري*) : متجه يحتوي على قيم الاحتمال (logits) للتجميع.

cell_classification_threshold (`float`، *اختياري*، القيمة الافتراضية 0.5) : العتبة المستخدمة لاختيار الخلايا. سيتم اختيار جميع خلايا الجدول التي تكون احتمالاتها أكبر من هذه العتبة.

**يعيد:** `tuple` يتكوّن من عناصر مختلفة اعتمادًا على المدخلات

- predicted_answer_coordinates (`list[list[[tuple]]` بطول `batch_size`): إحداثيات الإجابة المتوقعة على شكل قائمة من قوائم من الأ_tuples. يحتوي كل عنصر في القائمة على إحداثيات الإجابة المتوقعة لمثال واحد في الدفعة، على شكل قائمة من الأ_tuples. كل tuple هو خلية، أي (مؤشر الصف، مؤشر العمود).
- predicted_aggregation_indices (`list[int]` بطول `batch_size`، *اختياري*، يُعاد عند تقديم `logits_aggregation`): فهارس مشغّلات التجميع المتوقعة لرأس التجميع.

يحوّل القيم logits الخاصة بـ [TapasForQuestionAnswering](/docs/transformers/v5.23.0/ar/model_doc/tapas#transformers.TapasForQuestionAnswering) إلى إحداثيات الإجابة المتوقعة الفعلية وفهارس التجميع الاختيارية.

يمكن العثور على التنفيذ الأصلي، الذي تستند إليه هذه الدالة، [هنا](https://github.com/google-research/tapas/blob/4908213eb4df7aa988573350278b44c4dbe3f71b/tapas/experiments/prediction_utils.py#L288).

#### save_vocabulary[[transformers.TapasTokenizer.save_vocabulary]]

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

[المصدر](https://github.com/huggingface/transformers/blob/v5.23.0/src/transformers/models/tapas/tokenization_tapas.py#L386)

## TapasModel[[transformers.TapasModel]]

#### transformers.TapasModel[[transformers.TapasModel]]

```python
transformers.TapasModel(config: TapasConfig, add_pooling_layer = True)
```

[المصدر](https://github.com/huggingface/transformers/blob/v5.23.0/src/transformers/models/tapas/modeling_tapas.py#L510)

**المعاملات:**

config ([TapasConfig](/docs/transformers/v5.23.0/ar/model_doc/tapas#transformers.TapasConfig)) : فئة إعدادات النموذج التي تحتوي على جميع معاملات النموذج. عند التهيئة باستخدام ملف إعدادات، لا يتم تحميل الأوزان المرتبطة بالنموذج، بل الإعدادات فقط. راجع طريقة [from_pretrained()](/docs/transformers/v5.23.0/ar/main_classes/model#transformers.PreTrainedModel.from_pretrained) لتحميل أوزان النموذج.

add_pooling_layer (`bool`، *اختياري*، القيمة الافتراضية `True`) : ما إذا كان يجب إضافة طبقة تجميع

نموذج Tapas الأساسي الذي يُخرج حالات مخفية خام دون أي رأس محدد في الأعلى.

يرث هذا النموذج من [PreTrainedModel](/docs/transformers/v5.23.0/ar/main_classes/model#transformers.PreTrainedModel). راجع توثيق الفئة الأصلية لمعرفة الطرق العامة التي تنفذها المكتبة لجميع نماذجها (مثل التنزيل أو الحفظ، وتغيير حجم تضمينات الإدخال، وقص الرؤوس، وما إلى ذلك).

هذا النموذج هو أيضاً فئة فرعية من [torch.nn.Module](https://pytorch.org/docs/stable/nn.html#torch.nn.Module) في PyTorch. استخدمه كوحدة PyTorch عادية، وارجع إلى توثيق PyTorch لكل ما يتعلق بالاستخدام العام والسلوك.

#### forward[[transformers.TapasModel.forward]]

```python
forward(input_ids: typing.Optional[torch.LongTensor] = None, attention_mask: typing.Optional[torch.Tensor] = None, token_type_ids: typing.Optional[torch.LongTensor] = None, position_ids: typing.Optional[torch.LongTensor] = None, inputs_embeds: typing.Optional[torch.Tensor] = None, encoder_hidden_states: typing.Optional[torch.Tensor] = None, encoder_attention_mask: typing.Optional[torch.Tensor] = None, output_attentions: bool | None = None, output_hidden_states: bool | None = None, return_dict: bool | None = None, **kwargs)
```

[المصدر](https://github.com/huggingface/transformers/blob/v5.23.0/src/transformers/models/tapas/modeling_tapas.py#L543)

**المعاملات:**

input_ids (`torch.LongTensor` من الشكل `(batch_size, sequence_length)`، *اختياري*) : فهارس رموز تسلسل الإدخال في قاموس الكلمات. سيتم تجاهل الحشو افتراضيًا. يمكن الحصول على الفهارس باستخدام [AutoTokenizer](/docs/transformers/v5.23.0/ar/model_doc/auto#transformers.AutoTokenizer). راجع [PreTrainedTokenizer.encode()](/docs/transformers/v5.23.0/ar/internal/tokenization_utils#transformers.PreTrainedTokenizerBase.encode) و [PreTrainedTokenizer.__call__()](/docs/transformers/v5.23.0/ar/internal/tokenization_utils#transformers.PreTrainedTokenizerBase.__call__) للتفاصيل. [ما هي معرّفات الإدخال؟](../glossary#input-ids)

attention_mask (`torch.Tensor` من الشكل `(batch_size, sequence_length)`، *اختياري*) : قناع لتجنب تنفيذ الانتباه على فهارس رموز الحشو. قيم القناع المختارة من `[0, 1]`: - 1 للرموز التي **ليست مقنّعة**، - 0 للرموز التي **مقنّعة**.  [ما هي أقنعة الانتباه؟](../glossary#attention-mask)

token_type_ids (`torch.LongTensor` من الشكل `(batch_size, sequence_length, 7)`، *اختياري*) : فهارس الرموز التي ترمّز البنية الجدولية. يمكن الحصول على الفهارس باستخدام [AutoTokenizer](/docs/transformers/v5.23.0/ar/model_doc/auto#transformers.AutoTokenizer). راجع هذه الفئة لمزيد من المعلومات.  [ما هي معرّفات أنواع الرموز؟](../glossary#token-type-ids)

position_ids (`torch.LongTensor` من الشكل `(batch_size, sequence_length)`، *اختياري*) : فهارس مواضع رموز كل تسلسل إدخال في تضمينات المواضع. إذا تم تعيين `reset_position_index_per_cell` الخاص بـ [TapasConfig](/docs/transformers/v5.23.0/ar/model_doc/tapas#transformers.TapasConfig) إلى `True`، فسيتم استخدام تضمينات المواضع النسبية. يتم اختيارها من النطاق `[0, config.max_position_embeddings - 1]`.  [ما هي معرّفات المواضع؟](../glossary#position-ids)

inputs_embeds (`torch.Tensor` من الشكل `(batch_size, sequence_length, hidden_size)`، *اختياري*) : بدلاً من تمرير `input_ids`، يمكنك اختيار تمرير تمثيل مضمّن مباشرةً. هذا مفيد إذا كنت ترغب في الحصول على مزيد من التحكم في كيفية تحويل فهارس `input_ids` إلى المتجهات المرتبطة بها، مقارنةً بمصفوفة البحث المضمّنة الداخلية للنموذج.

encoder_hidden_states (`torch.Tensor` بأبعاد `(batch_size, sequence_length, hidden_size)`، *اختياري*) : تسلسل من الحالات المخفية عند مخرجات الطبقة الأخيرة من المُشفِّر. يُستخدم في الانتباه المتقاطع إذا كان النموذج مُهيأً كمُفكِّك.

encoder_attention_mask (`torch.Tensor` من الشكل `(batch_size, sequence_length)`، *اختياري*) : قناع لتجنُّب تنفيذ الانتباه على فهارس رموز الحشو في مدخلات المُشفِّر. يُستخدم هذا القناع في الانتباه المتقاطع إذا كان النموذج مُهيَّأً كمُفكِّك. قيم القناع المختارة من `[0, 1]`: - 1 للرموز التي **ليست مقنَّعة**، - 0 للرموز التي **مقنَّعة**.

output_attentions (`bool`، *اختياري*) : ما إذا كان سيتم إرجاع مصفوفات الانتباه لجميع طبقات الانتباه. راجع `attentions` ضمن المصفوفات المُرجعة لمزيد من التفاصيل.

output_hidden_states (`bool`, *اختياري*) : ما إذا كان سيتم إرجاع الحالات المخفية لجميع الطبقات. راجع `hidden_states` ضمن الموترات المُرجعة لمزيد من التفاصيل.

return_dict (`bool`، *اختياري*) : ما إذا كان سيتم إرجاع [ModelOutput](/docs/transformers/v5.23.0/ar/main_classes/output#transformers.utils.ModelOutput) بدلاً من tuple عادي.

**يعيد:** [BaseModelOutputWithPooling](/docs/transformers/v5.23.0/ar/main_classes/output#transformers.modeling_outputs.BaseModelOutputWithPooling) أو `tuple(torch.Tensor)`

[BaseModelOutputWithPooling](/docs/transformers/v5.23.0/ar/main_classes/output#transformers.modeling_outputs.BaseModelOutputWithPooling) أو مجموعة من `torch.Tensor` (إذا تم تمرير `return_dict=False` أو عندما يكون `config.return_dict=False`) تتكون من عناصر مختلفة اعتماداً على الإعداد ([TapasConfig](/docs/transformers/v5.23.0/ar/model_doc/tapas#transformers.TapasConfig)) والمدخلات.

تتجاوز طريقة [TapasModel](/docs/transformers/v5.23.0/ar/model_doc/tapas#transformers.TapasModel) الخاصة بالتقديم (forward) الطريقة الخاصة `__call__`.

على الرغم من أنه يجب تعريف وصفة المرور الأمامي داخل هذه الدالة، إلا أنه ينبغي استدعاء كائن `Module` بدلاً من هذه الدالة، لأن الكائن يتولى تنفيذ خطوات المعالجة المسبقة والمعالجة اللاحقة، بينما تتجاهل الدالة هذه الخطوات بصمت.

- **last_hidden_state** (`torch.Tensor` من الشكل `(batch_size, sequence_length, hidden_size)`) -- تسلسل من حالات الإخفاء (hidden-states) عند مخرج الطبقة الأخيرة من النموذج.
- **pooler_output** (`torch.Tensor` من الشكل `(batch_size, hidden_size)`) -- حالة الطبقة المخفية الأخيرة للرمز الأول في التسلسل (رمز التصنيف) بعد المعالجة الإضافية عبر الطبقات المستخدمة في مهمة ما قبل التدريب المساعدة. على سبيل المثال، بالنسبة لعائلة نماذج BERT، تُرجع هذه الخاصية رمز التصنيف بعد معالجته عبر طبقة خطية ودالة تفعيل tanh. يتم تدريب أوزان الطبقة الخطية من هدف التنبؤ بالجملة التالية (التصنيف) أثناء ما قبل التدريب.
- **hidden_states** (`tuple(torch.Tensor)`، *اختياري*، يُعاد عند تمرير `output_hidden_states=True` أو عند تعيين `config.output_hidden_states=True`) -- مجموعة من `torch.Tensor` (واحدة لمخرجات التضمينات، إذا كان النموذج يحتوي على طبقة تضمين، + واحدة لمخرجات كل طبقة) بأبعاد `(batch_size, sequence_length, hidden_size)`.

  حالات النموذج المخفية عند مخرج كل طبقة بالإضافة إلى مخرجات التضمين الأولي الاختيارية.
- **attentions** (`tuple(torch.Tensor)`، *اختياري*، يُعاد عند تمرير `output_attentions=True` أو عند تعيين `config.output_attentions=True`) -- مجموعة من `torch.Tensor` (واحدة لكل طبقة) بأبعاد `(batch_size, num_heads, sequence_length, sequence_length)`.

  أوزان الانتباه بعد تطبيق دالة softmax على الانتباه، وتُستخدم لحساب المتوسط الموزون في رؤوس الانتباه الذاتي.

أمثلة:

```python
>>> from transformers import AutoTokenizer, TapasModel
>>> import pandas as pd

>>> tokenizer = AutoTokenizer.from_pretrained("google/tapas-base")
>>> model = TapasModel.from_pretrained("google/tapas-base")

>>> data = {
...     "Actors": ["Brad Pitt", "Leonardo Di Caprio", "George Clooney"],
...     "Age": ["56", "45", "59"],
...     "Number of movies": ["87", "53", "69"],
... }
>>> table = pd.DataFrame.from_dict(data)
>>> queries = ["How many movies has George Clooney played in?", "How old is Brad Pitt?"]

>>> inputs = tokenizer(table=table, queries=queries, padding="max_length", return_tensors="pt")
>>> outputs = model(**inputs)

>>> last_hidden_states = outputs.last_hidden_state
```

## TapasForMaskedLM[[transformers.TapasForMaskedLM]]

#### transformers.TapasForMaskedLM[[transformers.TapasForMaskedLM]]

```python
transformers.TapasForMaskedLM(config: TapasConfig)
```

[المصدر](https://github.com/huggingface/transformers/blob/v5.23.0/src/transformers/models/tapas/modeling_tapas.py#L660)

**المعاملات:**

config ([TapasConfig](/docs/transformers/v5.23.0/ar/model_doc/tapas#transformers.TapasConfig)) : فئة إعدادات النموذج التي تحتوي على جميع معاملات النموذج. عند التهيئة باستخدام ملف إعدادات، لا يتم تحميل الأوزان المرتبطة بالنموذج، بل الإعدادات فقط. راجع طريقة [from_pretrained()](/docs/transformers/v5.23.0/ar/main_classes/model#transformers.PreTrainedModel.from_pretrained) لتحميل أوزان النموذج.

نموذج Tapas مع رأس `language modeling` في الأعلى."

يرث هذا النموذج من [PreTrainedModel](/docs/transformers/v5.23.0/ar/main_classes/model#transformers.PreTrainedModel). راجع توثيق الفئة الأصلية لمعرفة الطرق العامة التي تنفذها المكتبة لجميع نماذجها (مثل التنزيل أو الحفظ، وتغيير حجم تضمينات الإدخال، وقص الرؤوس، وما إلى ذلك).

هذا النموذج هو أيضاً فئة فرعية من [torch.nn.Module](https://pytorch.org/docs/stable/nn.html#torch.nn.Module) في PyTorch. استخدمه كوحدة PyTorch عادية، وارجع إلى توثيق PyTorch لكل ما يتعلق بالاستخدام العام والسلوك.

#### forward[[transformers.TapasForMaskedLM.forward]]

```python
forward(input_ids: typing.Optional[torch.LongTensor] = None, attention_mask: typing.Optional[torch.Tensor] = None, token_type_ids: typing.Optional[torch.LongTensor] = None, position_ids: typing.Optional[torch.LongTensor] = None, inputs_embeds: typing.Optional[torch.Tensor] = None, encoder_hidden_states: typing.Optional[torch.Tensor] = None, encoder_attention_mask: typing.Optional[torch.Tensor] = None, labels: typing.Optional[torch.LongTensor] = None, output_attentions: bool | None = None, output_hidden_states: bool | None = None, return_dict: bool | None = None, **kwargs)
```

[المصدر](https://github.com/huggingface/transformers/blob/v5.23.0/src/transformers/models/tapas/modeling_tapas.py#L684)

**المعاملات:**

input_ids (`torch.LongTensor` من الشكل `(batch_size, sequence_length)`، *اختياري*) : فهارس رموز تسلسل الإدخال في قاموس الكلمات. سيتم تجاهل الحشو افتراضيًا. يمكن الحصول على الفهارس باستخدام [AutoTokenizer](/docs/transformers/v5.23.0/ar/model_doc/auto#transformers.AutoTokenizer). راجع [PreTrainedTokenizer.encode()](/docs/transformers/v5.23.0/ar/internal/tokenization_utils#transformers.PreTrainedTokenizerBase.encode) و [PreTrainedTokenizer.__call__()](/docs/transformers/v5.23.0/ar/internal/tokenization_utils#transformers.PreTrainedTokenizerBase.__call__) للتفاصيل. [ما هي معرّفات الإدخال؟](../glossary#input-ids)

attention_mask (`torch.Tensor` من الشكل `(batch_size, sequence_length)`، *اختياري*) : قناع لتجنب تنفيذ الانتباه على فهارس رموز الحشو. قيم القناع المختارة من `[0, 1]`: - 1 للرموز التي **ليست مقنّعة**، - 0 للرموز التي **مقنّعة**.  [ما هي أقنعة الانتباه؟](../glossary#attention-mask)

token_type_ids (`torch.LongTensor` من الشكل `(batch_size, sequence_length, 7)`، *اختياري*) : فهارس الرموز التي ترمّز البنية الجدولية. يمكن الحصول على الفهارس باستخدام [AutoTokenizer](/docs/transformers/v5.23.0/ar/model_doc/auto#transformers.AutoTokenizer). راجع هذه الفئة لمزيد من المعلومات.  [ما هي معرّفات أنواع الرموز؟](../glossary#token-type-ids)

position_ids (`torch.LongTensor` من الشكل `(batch_size, sequence_length)`، *اختياري*) : فهارس مواضع رموز كل تسلسل إدخال في تضمينات المواضع. إذا تم تعيين `reset_position_index_per_cell` الخاص بـ [TapasConfig](/docs/transformers/v5.23.0/ar/model_doc/tapas#transformers.TapasConfig) إلى `True`، فسيتم استخدام تضمينات المواضع النسبية. يتم اختيارها من النطاق `[0, config.max_position_embeddings - 1]`.  [ما هي معرّفات المواضع؟](../glossary#position-ids)

inputs_embeds (`torch.Tensor` من الشكل `(batch_size, sequence_length, hidden_size)`، *اختياري*) : بدلاً من تمرير `input_ids`، يمكنك اختيار تمرير تمثيل مضمّن مباشرةً. هذا مفيد إذا كنت ترغب في الحصول على مزيد من التحكم في كيفية تحويل فهارس `input_ids` إلى المتجهات المرتبطة بها، مقارنةً بمصفوفة البحث المضمّنة الداخلية للنموذج.

encoder_hidden_states (`torch.Tensor` بأبعاد `(batch_size, sequence_length, hidden_size)`، *اختياري*) : تسلسل من الحالات المخفية عند مخرجات الطبقة الأخيرة من المُشفِّر. يُستخدم في الانتباه المتقاطع إذا كان النموذج مُهيأً كمُفكِّك.

encoder_attention_mask (`torch.Tensor` من الشكل `(batch_size, sequence_length)`، *اختياري*) : قناع لتجنُّب تنفيذ الانتباه على فهارس رموز الحشو في مدخلات المُشفِّر. يُستخدم هذا القناع في الانتباه المتقاطع إذا كان النموذج مُهيَّأً كمُفكِّك. قيم القناع المختارة من `[0, 1]`: - 1 للرموز التي **ليست مقنَّعة**، - 0 للرموز التي **مقنَّعة**.

labels (`torch.LongTensor` من الشكل `(batch_size, sequence_length)`، *اختياري*) : التسميات لحساب خسارة نمذجة اللغة المقنّعة. يجب أن تكون الفهارس ضمن `[-100, 0, ..., config.vocab_size]` (انظر `input_ids` docstring). يتم تجاهل الرموز التي تكون فهارسها مضبوطة على `-100` (مقنّعة)، ولا تُحسب الخسارة إلا للرموز التي تسمياتها ضمن `[0, ..., config.vocab_size]`.

output_attentions (`bool`، *اختياري*) : ما إذا كان سيتم إرجاع مصفوفات الانتباه لجميع طبقات الانتباه. راجع `attentions` ضمن المصفوفات المُرجعة لمزيد من التفاصيل.

output_hidden_states (`bool`, *اختياري*) : ما إذا كان سيتم إرجاع الحالات المخفية لجميع الطبقات. راجع `hidden_states` ضمن الموترات المُرجعة لمزيد من التفاصيل.

return_dict (`bool`، *اختياري*) : ما إذا كان سيتم إرجاع [ModelOutput](/docs/transformers/v5.23.0/ar/main_classes/output#transformers.utils.ModelOutput) بدلاً من tuple عادي.

**يعيد:** [MaskedLMOutput](/docs/transformers/v5.23.0/ar/main_classes/output#transformers.modeling_outputs.MaskedLMOutput) أو `tuple(torch.Tensor)`

[MaskedLMOutput](/docs/transformers/v5.23.0/ar/main_classes/output#transformers.modeling_outputs.MaskedLMOutput) أو مجموعة من `torch.Tensor` (إذا تم تمرير `return_dict=False` أو عندما يكون `config.return_dict=False`) تتكون من عناصر مختلفة اعتماداً على الإعداد ([TapasConfig](/docs/transformers/v5.23.0/ar/model_doc/tapas#transformers.TapasConfig)) والمدخلات.

تتجاوز طريقة [TapasForMaskedLM](/docs/transformers/v5.23.0/ar/model_doc/tapas#transformers.TapasForMaskedLM) الخاصة بالتقديم (forward) الطريقة الخاصة `__call__`.

على الرغم من أنه يجب تعريف وصفة المرور الأمامي داخل هذه الدالة، إلا أنه ينبغي استدعاء كائن `Module` بدلاً من هذه الدالة، لأن الكائن يتولى تنفيذ خطوات المعالجة المسبقة والمعالجة اللاحقة، بينما تتجاهل الدالة هذه الخطوات بصمت.

- **loss** (`torch.Tensor` من الشكل `(1,)`، *اختياري*، يُعاد عند توفير `labels`) -- خسارة نمذجة اللغة المقنّعة (MLM).
- **logits** (`torch.Tensor` من الشكل `(batch_size, sequence_length, config.vocab_size)`) -- درجات التنبؤ لرأس نمذجة اللغة (درجات لكل رمز في المفردات قبل SoftMax).
- **hidden_states** (`tuple(torch.Tensor)`، *اختياري*، يُعاد عند تمرير `output_hidden_states=True` أو عند تعيين `config.output_hidden_states=True`) -- مجموعة من `torch.Tensor` (واحدة لمخرجات التضمينات، إذا كان النموذج يحتوي على طبقة تضمين، + واحدة لمخرجات كل طبقة) بأبعاد `(batch_size, sequence_length, hidden_size)`.

  حالات النموذج المخفية عند مخرج كل طبقة بالإضافة إلى مخرجات التضمين الأولي الاختيارية.
- **attentions** (`tuple(torch.Tensor)`، *اختياري*، يُعاد عند تمرير `output_attentions=True` أو عند تعيين `config.output_attentions=True`) -- مجموعة من `torch.Tensor` (واحدة لكل طبقة) بأبعاد `(batch_size, num_heads, sequence_length, sequence_length)`.

  أوزان الانتباه بعد تطبيق دالة softmax على الانتباه، وتُستخدم لحساب المتوسط الموزون في رؤوس الانتباه الذاتي.

أمثلة:

```python
>>> from transformers import AutoTokenizer, TapasForMaskedLM
>>> import pandas as pd

>>> tokenizer = AutoTokenizer.from_pretrained("google/tapas-base")
>>> model = TapasForMaskedLM.from_pretrained("google/tapas-base")

>>> data = {
...     "Actors": ["Brad Pitt", "Leonardo Di Caprio", "George Clooney"],
...     "Age": ["56", "45", "59"],
...     "Number of movies": ["87", "53", "69"],
... }
>>> table = pd.DataFrame.from_dict(data)

>>> inputs = tokenizer(
...     table=table, queries="How many [MASK] has George [MASK] played in?", return_tensors="pt"
... )
>>> labels = tokenizer(
...     table=table, queries="How many movies has George Clooney played in?", return_tensors="pt"
... )["input_ids"]

>>> outputs = model(**inputs, labels=labels)
>>> logits = outputs.logits
```

## TapasForSequenceClassification[[transformers.TapasForSequenceClassification]]

#### transformers.TapasForSequenceClassification[[transformers.TapasForSequenceClassification]]

```python
transformers.TapasForSequenceClassification(config: TapasConfig)
```

[المصدر](https://github.com/huggingface/transformers/blob/v5.23.0/src/transformers/models/tapas/modeling_tapas.py#L1119)

**المعاملات:**

config ([TapasConfig](/docs/transformers/v5.23.0/ar/model_doc/tapas#transformers.TapasConfig)) : فئة إعدادات النموذج التي تحتوي على جميع معاملات النموذج. عند التهيئة باستخدام ملف إعدادات، لا يتم تحميل الأوزان المرتبطة بالنموذج، بل الإعدادات فقط. راجع طريقة [from_pretrained()](/docs/transformers/v5.23.0/ar/main_classes/model#transformers.PreTrainedModel.from_pretrained) لتحميل أوزان النموذج.

نموذج Tapas مع رأس تصنيف تسلسل في الأعلى (طبقة خطية فوق المخرجات المجمعة)، على سبيل المثال لمهام الاستلزام على الجداول، مثل TabFact (Chen et al., 2020).

يرث هذا النموذج من [PreTrainedModel](/docs/transformers/v5.23.0/ar/main_classes/model#transformers.PreTrainedModel). راجع توثيق الفئة الأصلية لمعرفة الطرق العامة التي تنفذها المكتبة لجميع نماذجها (مثل التنزيل أو الحفظ، وتغيير حجم تضمينات الإدخال، وقص الرؤوس، وما إلى ذلك).

هذا النموذج هو أيضاً فئة فرعية من [torch.nn.Module](https://pytorch.org/docs/stable/nn.html#torch.nn.Module) في PyTorch. استخدمه كوحدة PyTorch عادية، وارجع إلى توثيق PyTorch لكل ما يتعلق بالاستخدام العام والسلوك.

#### forward[[transformers.TapasForSequenceClassification.forward]]

```python
forward(input_ids: typing.Optional[torch.LongTensor] = None, attention_mask: typing.Optional[torch.Tensor] = None, token_type_ids: typing.Optional[torch.LongTensor] = None, position_ids: typing.Optional[torch.LongTensor] = None, inputs_embeds: typing.Optional[torch.Tensor] = None, labels: typing.Optional[torch.LongTensor] = None, output_attentions: bool | None = None, output_hidden_states: bool | None = None, return_dict: bool | None = None, **kwargs)
```

[المصدر](https://github.com/huggingface/transformers/blob/v5.23.0/src/transformers/models/tapas/modeling_tapas.py#L1131)

**المعاملات:**

input_ids (`torch.LongTensor` من الشكل `(batch_size, sequence_length)`، *اختياري*) : فهارس رموز تسلسل الإدخال في قاموس الكلمات. سيتم تجاهل الحشو افتراضيًا. يمكن الحصول على الفهارس باستخدام [AutoTokenizer](/docs/transformers/v5.23.0/ar/model_doc/auto#transformers.AutoTokenizer). راجع [PreTrainedTokenizer.encode()](/docs/transformers/v5.23.0/ar/internal/tokenization_utils#transformers.PreTrainedTokenizerBase.encode) و [PreTrainedTokenizer.__call__()](/docs/transformers/v5.23.0/ar/internal/tokenization_utils#transformers.PreTrainedTokenizerBase.__call__) للتفاصيل. [ما هي معرّفات الإدخال؟](../glossary#input-ids)

attention_mask (`torch.Tensor` من الشكل `(batch_size, sequence_length)`، *اختياري*) : قناع لتجنب تنفيذ الانتباه على فهارس رموز الحشو. قيم القناع المختارة من `[0, 1]`: - 1 للرموز التي **ليست مقنّعة**، - 0 للرموز التي **مقنّعة**.  [ما هي أقنعة الانتباه؟](../glossary#attention-mask)

token_type_ids (`torch.LongTensor` من الشكل `(batch_size, sequence_length, 7)`، *اختياري*) : فهارس الرموز التي ترمّز البنية الجدولية. يمكن الحصول على الفهارس باستخدام [AutoTokenizer](/docs/transformers/v5.23.0/ar/model_doc/auto#transformers.AutoTokenizer). راجع هذه الفئة لمزيد من المعلومات.  [ما هي معرّفات أنواع الرموز؟](../glossary#token-type-ids)

position_ids (`torch.LongTensor` من الشكل `(batch_size, sequence_length)`، *اختياري*) : فهارس مواضع رموز كل تسلسل إدخال في تضمينات المواضع. إذا تم تعيين `reset_position_index_per_cell` الخاص بـ [TapasConfig](/docs/transformers/v5.23.0/ar/model_doc/tapas#transformers.TapasConfig) إلى `True`، فسيتم استخدام تضمينات المواضع النسبية. يتم اختيارها من النطاق `[0, config.max_position_embeddings - 1]`.  [ما هي معرّفات المواضع؟](../glossary#position-ids)

inputs_embeds (`torch.Tensor` من الشكل `(batch_size, sequence_length, hidden_size)`، *اختياري*) : بدلاً من تمرير `input_ids`، يمكنك اختيار تمرير تمثيل مضمّن مباشرةً. هذا مفيد إذا كنت ترغب في الحصول على مزيد من التحكم في كيفية تحويل فهارس `input_ids` إلى المتجهات المرتبطة بها، مقارنةً بمصفوفة البحث المضمّنة الداخلية للنموذج.

labels (`torch.LongTensor` من الشكل `(batch_size,)`، *اختياري*) : تسميات لحساب خسارة تصنيف/انحدار التسلسل. يجب أن تكون الفهارس ضمن `[0, ..., config.num_labels - 1]`. إذا كان `config.num_labels == 1` يتم حساب خسارة الانحدار (خسارة متوسط المربع)، وإذا كان `config.num_labels > 1` يتم حساب خسارة التصنيف (الإنتروبيا المتقاطعة). ملاحظة: يُطلق عليها اسم "classification_class_index" في التنفيذ الأصلي.

output_attentions (`bool`، *اختياري*) : ما إذا كان سيتم إرجاع مصفوفات الانتباه لجميع طبقات الانتباه. راجع `attentions` ضمن المصفوفات المُرجعة لمزيد من التفاصيل.

output_hidden_states (`bool`, *اختياري*) : ما إذا كان سيتم إرجاع الحالات المخفية لجميع الطبقات. راجع `hidden_states` ضمن الموترات المُرجعة لمزيد من التفاصيل.

return_dict (`bool`، *اختياري*) : ما إذا كان سيتم إرجاع [ModelOutput](/docs/transformers/v5.23.0/ar/main_classes/output#transformers.utils.ModelOutput) بدلاً من tuple عادي.

**يعيد:** [SequenceClassifierOutput](/docs/transformers/v5.23.0/ar/main_classes/output#transformers.modeling_outputs.SequenceClassifierOutput) أو `tuple(torch.Tensor)`

[SequenceClassifierOutput](/docs/transformers/v5.23.0/ar/main_classes/output#transformers.modeling_outputs.SequenceClassifierOutput) أو مجموعة مرتبة من `torch.Tensor` (إذا تم تمرير `return_dict=False` أو عندما يكون `config.return_dict=False`) وتتضمن عناصر مختلفة اعتماداً على الإعداد ([TapasConfig](/docs/transformers/v5.23.0/ar/model_doc/tapas#transformers.TapasConfig)) والمدخلات.

تُعيد طريقة [TapasForSequenceClassification](/docs/transformers/v5.23.0/ar/model_doc/tapas#transformers.TapasForSequenceClassification) الخاصة بالتقديم (forward) تعريف الطريقة الخاصة `__call__`.

على الرغم من أنه يجب تعريف وصفة المرور الأمامي داخل هذه الدالة، إلا أنه ينبغي استدعاء كائن `Module` بدلاً من هذه الدالة، لأن الكائن يتولى تنفيذ خطوات المعالجة المسبقة والمعالجة اللاحقة، بينما تتجاهل الدالة هذه الخطوات بصمت.

- **loss** (`torch.Tensor` من الشكل `(1,)`, *اختياري*، يُعاد عند تقديم `labels`) -- خسارة التصنيف (أو الانحدار إذا كان config.num_labels==1).
- **logits** (`torch.Tensor` من الشكل `(batch_size, config.num_labels)`) -- درجات التصنيف (أو الانحدار إذا كان config.num_labels==1) (قبل SoftMax).
- **hidden_states** (`tuple(torch.Tensor)`، *اختياري*، يُعاد عند تمرير `output_hidden_states=True` أو عند تعيين `config.output_hidden_states=True`) -- مجموعة من `torch.Tensor` (واحدة لمخرجات التضمينات، إذا كان النموذج يحتوي على طبقة تضمين، + واحدة لمخرجات كل طبقة) بأبعاد `(batch_size, sequence_length, hidden_size)`.

  حالات النموذج المخفية عند مخرج كل طبقة بالإضافة إلى مخرجات التضمين الأولي الاختيارية.
- **attentions** (`tuple(torch.Tensor)`، *اختياري*، يُعاد عند تمرير `output_attentions=True` أو عند تعيين `config.output_attentions=True`) -- مجموعة من `torch.Tensor` (واحدة لكل طبقة) بأبعاد `(batch_size, num_heads, sequence_length, sequence_length)`.

  أوزان الانتباه بعد تطبيق دالة softmax على الانتباه، وتُستخدم لحساب المتوسط الموزون في رؤوس الانتباه الذاتي.

أمثلة:

```python
>>> from transformers import AutoTokenizer, TapasForSequenceClassification
>>> import torch
>>> import pandas as pd

>>> tokenizer = AutoTokenizer.from_pretrained("google/tapas-base-finetuned-tabfact")
>>> model = TapasForSequenceClassification.from_pretrained("google/tapas-base-finetuned-tabfact")

>>> data = {
...     "Actors": ["Brad Pitt", "Leonardo Di Caprio", "George Clooney"],
...     "Age": ["56", "45", "59"],
...     "Number of movies": ["87", "53", "69"],
... }
>>> table = pd.DataFrame.from_dict(data)
>>> queries = [
...     "There is only one actor who is 45 years old",
...     "There are 3 actors which played in more than 60 movies",
... ]

>>> inputs = tokenizer(table=table, queries=queries, padding="max_length", return_tensors="pt")
>>> labels = torch.tensor([1, 0])  # 1 means entailed, 0 means refuted

>>> outputs = model(**inputs, labels=labels)
>>> loss = outputs.loss
>>> logits = outputs.logits
```

## TapasForQuestionAnswering[[transformers.TapasForQuestionAnswering]]

#### transformers.TapasForQuestionAnswering[[transformers.TapasForQuestionAnswering]]

```python
transformers.TapasForQuestionAnswering(config: TapasConfig)
```

[المصدر](https://github.com/huggingface/transformers/blob/v5.23.0/src/transformers/models/tapas/modeling_tapas.py#L781)

**المعاملات:**

config ([TapasConfig](/docs/transformers/v5.23.0/ar/model_doc/tapas#transformers.TapasConfig)) : فئة إعدادات النموذج التي تحتوي على جميع معاملات النموذج. عند التهيئة باستخدام ملف إعدادات، لا يتم تحميل الأوزان المرتبطة بالنموذج، بل الإعدادات فقط. راجع طريقة [from_pretrained()](/docs/transformers/v5.23.0/ar/main_classes/model#transformers.PreTrainedModel.from_pretrained) لتحميل أوزان النموذج.

نموذج Tapas مزوّد برأس لاختيار الخلايا ورأس اختياري للتجميع في الأعلى، مخصص لمهام الإجابة عن الأسئلة على الجداول (طبقات خطية فوق مخرجات الحالات المخفية لحساب `logits` و`logits_aggregation` الاختياري)، مثل مهام SQA وWTQ أو المهام المُشرفة عليها من WikiSQL.

يرث هذا النموذج من [PreTrainedModel](/docs/transformers/v5.23.0/ar/main_classes/model#transformers.PreTrainedModel). راجع توثيق الفئة الأصلية لمعرفة الطرق العامة التي تنفذها المكتبة لجميع نماذجها (مثل التنزيل أو الحفظ، وتغيير حجم تضمينات الإدخال، وقص الرؤوس، وما إلى ذلك).

هذا النموذج هو أيضاً فئة فرعية من [torch.nn.Module](https://pytorch.org/docs/stable/nn.html#torch.nn.Module) في PyTorch. استخدمه كوحدة PyTorch عادية، وارجع إلى توثيق PyTorch لكل ما يتعلق بالاستخدام العام والسلوك.

#### forward[[transformers.TapasForQuestionAnswering.forward]]

```python
forward(input_ids: typing.Optional[torch.LongTensor] = None, attention_mask: typing.Optional[torch.Tensor] = None, token_type_ids: typing.Optional[torch.LongTensor] = None, position_ids: typing.Optional[torch.LongTensor] = None, inputs_embeds: typing.Optional[torch.Tensor] = None, table_mask: typing.Optional[torch.LongTensor] = None, labels: typing.Optional[torch.LongTensor] = None, aggregation_labels: typing.Optional[torch.LongTensor] = None, float_answer: typing.Optional[torch.Tensor] = None, numeric_values: typing.Optional[torch.Tensor] = None, numeric_values_scale: typing.Optional[torch.Tensor] = None, output_attentions: bool | None = None, output_hidden_states: bool | None = None, return_dict: bool | None = None, **kwargs)
```

[المصدر](https://github.com/huggingface/transformers/blob/v5.23.0/src/transformers/models/tapas/modeling_tapas.py#L804)

**المعاملات:**

input_ids (`torch.LongTensor` من الشكل `(batch_size, sequence_length)`، *اختياري*) : فهارس رموز تسلسل الإدخال في قاموس الكلمات. سيتم تجاهل الحشو افتراضيًا. يمكن الحصول على الفهارس باستخدام [AutoTokenizer](/docs/transformers/v5.23.0/ar/model_doc/auto#transformers.AutoTokenizer). راجع [PreTrainedTokenizer.encode()](/docs/transformers/v5.23.0/ar/internal/tokenization_utils#transformers.PreTrainedTokenizerBase.encode) و [PreTrainedTokenizer.__call__()](/docs/transformers/v5.23.0/ar/internal/tokenization_utils#transformers.PreTrainedTokenizerBase.__call__) للتفاصيل. [ما هي معرّفات الإدخال؟](../glossary#input-ids)

attention_mask (`torch.Tensor` من الشكل `(batch_size, sequence_length)`، *اختياري*) : قناع لتجنب تنفيذ الانتباه على فهارس رموز الحشو. قيم القناع المختارة من `[0, 1]`: - 1 للرموز التي **ليست مقنّعة**، - 0 للرموز التي **مقنّعة**.  [ما هي أقنعة الانتباه؟](../glossary#attention-mask)

token_type_ids (`torch.LongTensor` من الشكل `(batch_size, sequence_length, 7)`، *اختياري*) : فهارس الرموز التي ترمّز البنية الجدولية. يمكن الحصول على الفهارس باستخدام [AutoTokenizer](/docs/transformers/v5.23.0/ar/model_doc/auto#transformers.AutoTokenizer). راجع هذه الفئة لمزيد من المعلومات.  [ما هي معرّفات أنواع الرموز؟](../glossary#token-type-ids)

position_ids (`torch.LongTensor` من الشكل `(batch_size, sequence_length)`، *اختياري*) : فهارس مواضع رموز كل تسلسل إدخال في تضمينات المواضع. إذا تم تعيين `reset_position_index_per_cell` الخاص بـ [TapasConfig](/docs/transformers/v5.23.0/ar/model_doc/tapas#transformers.TapasConfig) إلى `True`، فسيتم استخدام تضمينات المواضع النسبية. يتم اختيارها من النطاق `[0, config.max_position_embeddings - 1]`.  [ما هي معرّفات المواضع؟](../glossary#position-ids)

inputs_embeds (`torch.Tensor` من الشكل `(batch_size, sequence_length, hidden_size)`، *اختياري*) : بدلاً من تمرير `input_ids`، يمكنك اختيار تمرير تمثيل مضمّن مباشرةً. هذا مفيد إذا كنت ترغب في الحصول على مزيد من التحكم في كيفية تحويل فهارس `input_ids` إلى المتجهات المرتبطة بها، مقارنةً بمصفوفة البحث المضمّنة الداخلية للنموذج.

table_mask (`torch.LongTensor` من الشكل `(batch_size, seq_length)`، *اختياري*) : قناع للجدول. يُحدد أي الرموز تنتمي إلى الجدول (1). رموز الأسئلة، رؤوس الجدول، والتعبئة تساوي 0.

labels (`torch.LongTensor` من الشكل `(batch_size, seq_length)`، *اختياري*) : تسميات لكل رمز لحساب خسارة اختيار الخلايا الهرمي. يرمّز هذا مواضع الإجابة الظاهرة في الجدول. يمكن الحصول عليه باستخدام [AutoTokenizer](/docs/transformers/v5.23.0/ar/model_doc/auto#transformers.AutoTokenizer). - 1 للرموز التي هي **جزء من الإجابة**، - 0 للرموز التي **ليست جزءًا من الإجابة**.

aggregation_labels (`torch.LongTensor` من الشكل `(batch_size, )`، *اختياري*) : فهرس دالة التجميع لكل مثال في الدفعة لحساب خسارة التجميع. يجب أن تكون الفهارس ضمن `[0, ..., config.num_aggregation_labels - 1]`. مطلوب فقط في حالة الإشراف القوي على التجميع (الإشراف عبر WikiSQL).

float_answer (`torch.Tensor` من الشكل `(batch_size, )`، *اختياري*) : إجابة رقمية (Float) لكل مثال في الدفعة. اضبطها على *float('nan')* لأسئلة اختيار الخلايا. مطلوبة فقط في حالة الإشراف الضعيف (WTQ) لحساب القناع المجمّع وخسارة الانحدار.

numeric_values (`torch.Tensor` من الشكل `(batch_size, seq_length)`، *اختياري*) : القيم الرقمية لكل رمز، وNaN للرموز التي ليست قيمًا رقمية. يمكن الحصول عليها باستخدام [AutoTokenizer](/docs/transformers/v5.23.0/ar/model_doc/auto#transformers.AutoTokenizer). لا يُطلب ذلك إلا في حالة الإشراف الضعيف للتجميع (WTQ) لحساب خسارة الانحدار.

numeric_values_scale (`torch.Tensor` من الشكل `(batch_size, seq_length)`، *اختياري*) : مقياس القيم الرقمية لكل رمز. يمكن الحصول عليه باستخدام [AutoTokenizer](/docs/transformers/v5.23.0/ar/model_doc/auto#transformers.AutoTokenizer). مطلوب فقط في حالة الإشراف الضعيف للتجميع (WTQ) لحساب خسارة الانحدار.

output_attentions (`bool`، *اختياري*) : ما إذا كان سيتم إرجاع مصفوفات الانتباه لجميع طبقات الانتباه. راجع `attentions` ضمن المصفوفات المُرجعة لمزيد من التفاصيل.

output_hidden_states (`bool`, *اختياري*) : ما إذا كان سيتم إرجاع الحالات المخفية لجميع الطبقات. راجع `hidden_states` ضمن الموترات المُرجعة لمزيد من التفاصيل.

return_dict (`bool`، *اختياري*) : ما إذا كان سيتم إرجاع [ModelOutput](/docs/transformers/v5.23.0/ar/main_classes/output#transformers.utils.ModelOutput) بدلاً من tuple عادي.

**يعيد:** [TableQuestionAnsweringOutput](/docs/transformers/v5.23.0/ar/model_doc/tapas#transformers.models.tapas.modeling_tapas.TableQuestionAnsweringOutput) أو `tuple(torch.Tensor)`

[TableQuestionAnsweringOutput](/docs/transformers/v5.23.0/ar/model_doc/tapas#transformers.models.tapas.modeling_tapas.TableQuestionAnsweringOutput) أو مجموعة مرتبة من `torch.Tensor` (إذا تم تمرير `return_dict=False` أو عندما يكون `config.return_dict=False`) وتتضمن عناصر مختلفة اعتماداً على الإعداد ([TapasConfig](/docs/transformers/v5.23.0/ar/model_doc/tapas#transformers.TapasConfig)) والمدخلات.

تتجاوز طريقة [TapasForQuestionAnswering](/docs/transformers/v5.23.0/ar/model_doc/tapas#transformers.TapasForQuestionAnswering) الخاصة بالتقديم (forward) الطريقة الخاصة `__call__`.

على الرغم من أنه يجب تعريف وصفة المرور الأمامي داخل هذه الدالة، إلا أنه ينبغي استدعاء كائن `Module` بدلاً من هذه الدالة، لأن الكائن يتولى تنفيذ خطوات المعالجة المسبقة والمعالجة اللاحقة، بينما تتجاهل الدالة هذه الخطوات بصمت.

- **loss** (`torch.Tensor` من الشكل `(1,)`، *اختياري*، يُعاد عند توفير `labels` (وإمكانًا `answer`، `aggregation_labels`، `numeric_values` و`numeric_values_scale`)) -- إجمالي الخسارة كمجموع خسارة احتمال السجل لاختيار الخلايا الهرمية و(اختياريًا) خسارة الانحدار شبه المُشرف و(اختياريًا) الخسارة المُشرفة للتجميعات.
- **logits** (`torch.Tensor` من الشكل `(batch_size, sequence_length)`) -- درجات التنبؤ لرأس اختيار الخلايا، لكل رمز.
- **logits_aggregation** (`torch.Tensor`، *اختياري*، من الشكل `(batch_size, num_aggregation_labels)`) -- درجات التنبؤ لرأس التجميع، لكل مشغّل تجميع.
- **hidden_states** (`tuple[torch.Tensor]`، *اختياري*، يُعاد عند تمرير `output_hidden_states=True` أو عند تعيين `config.output_hidden_states=True`) -- مجموعة (Tuple) من `torch.Tensor` (واحدة لكل من مخرجات الطبقات المضمنة، إذا كان النموذج يحتوي على طبقة تضمين، + واحدة لكل من مخرجات كل طبقة) بأبعاد `(batch_size, sequence_length, hidden_size)`.

  حالات النموذج المخفية عند مخرج كل طبقة بالإضافة إلى مخرجات التضمين الأولي الاختيارية.
- **attentions** (`tuple[torch.Tensor]`، *اختياري*، يُعاد عند تمرير `output_attentions=True` أو عند تعيين `config.output_attentions=True`) -- مجموعة من `torch.Tensor` (واحدة لكل طبقة) بأبعاد `(batch_size, num_heads, sequence_length, sequence_length)`.

  أوزان الانتباه بعد تطبيق دالة softmax على الانتباه، وتُستخدم لحساب المتوسط الموزون في رؤوس الانتباه الذاتي.

أمثلة:

```python
>>> from transformers import AutoTokenizer, TapasForQuestionAnswering
>>> import pandas as pd

>>> tokenizer = AutoTokenizer.from_pretrained("google/tapas-base-finetuned-wtq")
>>> model = TapasForQuestionAnswering.from_pretrained("google/tapas-base-finetuned-wtq")

>>> data = {
...     "Actors": ["Brad Pitt", "Leonardo Di Caprio", "George Clooney"],
...     "Age": ["56", "45", "59"],
...     "Number of movies": ["87", "53", "69"],
... }
>>> table = pd.DataFrame.from_dict(data)
>>> queries = ["How many movies has George Clooney played in?", "How old is Brad Pitt?"]

>>> inputs = tokenizer(table=table, queries=queries, padding="max_length", return_tensors="pt")
>>> outputs = model(**inputs)

>>> logits = outputs.logits
>>> logits_aggregation = outputs.logits_aggregation
```

