Datasets documentation
الفئات الرئيسية
الفئات الرئيسية
DatasetInfo
فئة datasets.DatasetInfo
< source >( description: str = <factory>citation: str = <factory>homepage: str = <factory>license: str = <factory>features: typing.Optional[datasets.features.features.Features] = Nonepost_processed: typing.Optional[datasets.info.PostProcessedInfo] = Nonesupervised_keys: typing.Optional[datasets.info.SupervisedKeysData] = Nonebuilder_name: typing.Optional[str] = Nonedataset_name: typing.Optional[str] = Noneconfig_name: typing.Optional[str] = Noneversion: typing.Union[str, datasets.utils.version.Version, NoneType] = Nonesplits: typing.Optional[datasets.splits.SplitDict] = Nonedownload_checksums: typing.Optional[dict] = Nonedownload_size: typing.Optional[int] = Nonepost_processing_size: typing.Optional[int] = Nonedataset_size: typing.Optional[int] = Nonesize_in_bytes: typing.Optional[int] = None )
المعاملات
- description (
str) — وصف للمجموعة. - citation (
str) — استشهاد BibTeX للمجموعة. - homepage (
str) — رابط (URL) إلى الصفحة الرئيسية الرسمية للبيانات. - license (
str) — رخصة مجموعة البيانات. يمكن أن تكون اسم الرخصة أو فقرة تحتوي على شروط الرخصة. - features (Features، اختياري) — الميزات المستخدمة لتحديد أنواع أعمدة مجموعة البيانات.
- post_processed (
PostProcessedInfo، اختياري) — مُتروك. معلومات حول الموارد الخاصة بمعالجة لاحقة محتملة لمجموعة بيانات. على سبيل المثال، يمكن أن تحتوي على معلومات حول فهرس. - supervised_keys (
SupervisedKeysData، اختياري) — يحدد الميزة المدخلة والوسم للتعلم الإشرافي إذا كان ذلك ينطبق على مجموعة البيانات (موروث من TFDS). - builder_name (
str، اختياري) — اسم فئة فرعية منGeneratorBasedBuilderالمستخدمة لإنشاء مجموعة البيانات. وهو أيضًا النسخة بصيغة snake_case من اسم فئة منشئ مجموعة البيانات. - config_name (
str، اختياري) — اسم الإعداد المشتق من BuilderConfig. - version (
strأو Version، اختياري) — إصدار مجموعة البيانات. - splits (
dict، اختياري) — التعيين بين اسم التقسيم والميتاداتا. - download_checksums (
dict, اختياري) — التعيين بين عنوان URL لتنزيل جداول التحقق من سلامة مجموعة البيانات والميتاداتا المقابلة. - download_size (
int، اختياري) — حجم الملفات التي سيتم تنزيلها لتوليد مجموعة البيانات، بالبايت. - post_processing_size (
int، اختياري) — مُتروك. حجم مجموعة البيانات بالبايت بعد المعالجة اللاحقة، إن وُجدت. - dataset_size (
int، اختياري) — الحجم الإجمالي بالبايت لجداول Arrow الخاصة بجميع التقسيمات. - size_in_bytes (
int، اختياري) — الحجم الإجمالي بالبايت لجميع الملفات المرتبطة بالبيانات (الملفات المُحمّلة + ملفات Arrow). - **config_kwargs (حجج إضافية بالكلمات المفتاحية) — حجج بالكلمات المفتاحية تُمرَّر إلى BuilderConfig وتُستخدم في DatasetBuilder.
معلومات حول مجموعة بيانات.
DatasetInfo يوثّق مجموعات البيانات، بما في ذلك اسمها وإصدارها وميزاتها.
راجع معاملات المنشئ والخصائص للحصول على قائمة كاملة.
ليست جميع الحقول معروفة عند الإنشاء وقد يتم تحديثها لاحقًا.
from_directory
< source >( dataset_info_dir: strstorage_options: typing.Optional[dict] = None )
أنشئ DatasetInfo من ملف JSON الموجود في dataset_info_dir.
تحديث هذه الدالة جميع الحقول المولّدة ديناميكيًا (num_examples، hash، وقت الإنشاء،…) الخاصة بـ DatasetInfo.
سيؤدي هذا إلى تجاوز جميع البيانات الوصفية السابقة.
write_to_directory
< source >( dataset_info_dirpretty_print = Falsestorage_options: typing.Optional[dict] = None )
اكتب DatasetInfo والرخصة (إن وُجدت) كملفات JSON في dataset_info_dir.
مجموعة البيانات
تُنفّذ الفئة الأساسية Dataset مجموعة بيانات مدعومة بجدول Apache Arrow.
فئة datasets.Dataset
< source >( arrow_table: Tableinfo: typing.Optional[datasets.info.DatasetInfo] = Nonesplit: typing.Optional[datasets.splits.NamedSplit] = Noneindices_table: typing.Optional[datasets.table.Table] = Nonefingerprint: typing.Optional[str] = None )
مجموعة بيانات مدعومة بجدول Arrow.
add_column
< source >( name: strcolumn: typing.Union[list, numpy.ndarray]new_fingerprint: typing.Optional[str] = Nonefeature: typing.Union[dict, list, tuple, datasets.features.features.Value, datasets.features.features.ClassLabel, datasets.features.translation.Translation, datasets.features.translation.TranslationVariableLanguages, datasets.features.features.LargeList, datasets.features.features.List, datasets.features.features.Array2D, datasets.features.features.Array3D, datasets.features.features.Array4D, datasets.features.features.Array5D, datasets.features.audio.Audio, datasets.features.image.Image, datasets.features.mesh.Mesh, datasets.features.video.Video, datasets.features.pdf.Pdf, datasets.features.nifti.Nifti, datasets.features.bio_sequence.BioSequence, datasets.features.bio_structure.BioStructure, NoneType] = None )
إضافة عمود إلى Dataset.
أُضيف في 1.7
add_item
< source >( item: dictnew_fingerprint: typing.Optional[str] = None )
إضافة عنصر إلى Dataset.
أُضيف في 1.7
مثال:
>>> from datasets import load_dataset
>>> ds = load_dataset("cornell-movie-review-data/rotten_tomatoes", split="validation")
>>> new_review = {'label': 0, 'text': 'this movie is the absolute worst thing I have ever seen'}
>>> ds = ds.add_item(new_review)
>>> ds[-1]
{'label': 0, 'text': 'this movie is the absolute worst thing I have ever seen'}from_file
< source >( filename: strinfo: typing.Optional[datasets.info.DatasetInfo] = Nonesplit: typing.Optional[datasets.splits.NamedSplit] = Noneindices_filename: typing.Optional[str] = Nonein_memory: bool = False )
المعاملات
- filename (
str) — اسم ملف مجموعة البيانات. - info (
DatasetInfo، اختياري) — معلومات عن مجموعة البيانات، مثل الوصف والاستشهاد وما إلى ذلك. - split (
NamedSplit, اختياري) — اسم تقسيم مجموعة البيانات. - indices_filename (
str, اختياري) — أسماء ملفات الفهارس. - in_memory (
bool، الافتراضيFalse) — ما إذا كان سيتم نسخ البيانات في الذاكرة.
أنشئ كائن Dataset مدعوماً بجدول Arrow في المسار filename.
from_buffer
< source >( buffer: Bufferinfo: typing.Optional[datasets.info.DatasetInfo] = Nonesplit: typing.Optional[datasets.splits.NamedSplit] = Noneindices_buffer: typing.Optional[pyarrow.lib.Buffer] = None )
أنشئ كائن Dataset مدعوماً بذاكرة Arrow.
from_pandas
< source >( df: DataFramefeatures: typing.Optional[datasets.features.features.Features] = Noneinfo: typing.Optional[datasets.info.DatasetInfo] = Nonesplit: typing.Optional[datasets.splits.NamedSplit] = Nonepreserve_index: typing.Optional[bool] = None )
المعاملات
- df (
pandas.DataFrame) — إطار بيانات يحتوي على مجموعة البيانات. - features (Features، اختياري) — مميزات مجموعة البيانات.
- info (
DatasetInfo، اختياري) — معلومات عن مجموعة البيانات، مثل الوصف والاستشهاد وما إلى ذلك. - split (
NamedSplit, اختياري) — اسم تقسيم مجموعة البيانات. - preserve_index (
bool، اختياري) — ما إذا كان سيتم تخزين الفهرس كعمود إضافي في مجموعة البيانات الناتجة. القيمة الافتراضيةNoneستخزّن الفهرس كعمود، باستثناءRangeIndexالذي يُخزَّن كبيانات وصفية فقط. استخدمpreserve_index=Trueلإجباره على التخزين كعمود.
قم بتحويل pandas.DataFrame إلى pyarrow.Table لإنشاء Dataset.
تُستنتج أنواع الأعمدة في جدول Arrow الناتج من أنواع البيانات (dtypes) الخاصة بـ pandas.Series داخل DataFrame. في حالة السلاسل غير الكائنية (non-object Series)، يُترجم نوع NumPy إلى ما يعادله في Arrow. أما في حالة object، فيجب تخمين نوع البيانات من خلال فحص الكائنات Python الموجودة في هذا السلسلة.
انتبه إلى أن سلسلة من نوع object لا تحمل معلومات كافية دائمًا للتوصل إلى نوع Arrow ذي معنى. في حال تعذّر استنتاج النوع، على سبيل المثال لأن إطار البيانات طوله 0 أو لأن السلسلة تحتوي فقط على كائنات None/nan، يتم تعيين النوع إلى null. يمكن تجنّب هذا السلوك من خلال بناء ميزات صريحة وتوريدها إلى هذه الدالة.
Important: a dataset created with from_pandas() lives in memory and therefore doesn’t have an associated cache directory. This may change in the future, but in the meantime if you want to reduce memory usage you should write it back on disk and reload using e.g. save_to_disk / load_from_disk.
from_dict
< source >( mapping: dictfeatures: typing.Optional[datasets.features.features.Features] = Noneinfo: typing.Optional[datasets.info.DatasetInfo] = Nonesplit: typing.Optional[datasets.splits.NamedSplit] = Noneon_mixed_types: typing.Optional[typing.Literal['use_json']] = None )
المعاملات
- mapping (
Mapping) — تعيين السلاسل النصية إلى مصفوفات أو قوائم بايثون. - features (Features، اختياري) — مميزات مجموعة البيانات.
- info (
DatasetInfo، اختياري) — معلومات عن مجموعة البيانات، مثل الوصف والاستشهاد وما إلى ذلك. - split (
NamedSplit, اختياري) — اسم تقسيم مجموعة البيانات. - on_mixed_types (
Literal["use_json"], اختياري, القيمة الافتراضية هيNone) — إذا كانت القيمة "use_json"، يتم استخدام نوع Json() للحقول ذات الأنواع المختلطة، أي الحقول غير المهيكلة التي تحتوي على بيانات بدون مخطط مسبق التعريف. في هذه الحالة، يُضبط الحقل ذو النوع المختلط على Json().يتيح هذا تحميل قوائم تحتوي على مزيج من النصوص/الأعداد الصحيحة/الأعداد العشرية، على سبيل المثال، أو قواميس ذات أنواع قيم عشوائية.
أُضيف في 4.7.0
تحويل dict إلى pyarrow.Table لإنشاء Dataset.
Important: a dataset created with from_dict() lives in memory and therefore doesn’t have an associated cache directory. This may change in the future, but in the meantime if you want to reduce memory usage you should write it back on disk and reload using e.g. save_to_disk / load_from_disk.
أمثلة:
احصل على مجموعة بيانات من قاموس يحتوي على قائمة واحدة لكل عمود:
>>> ds = Dataset.from_dict({"text": ["hello there !", "general kenobi !"]})مرّر الميزات لتحديد أنواع الأعمدة، على سبيل المثال لبيانات الصور:
>>> features = Features({"image": Image()})
>>> ds = Dataset.from_dict({"image": ["path/to/image.png"]}, features=features)تستند مجموعات البيانات إلى Arrow وهو تنسيق أعمدة، ولذلك يتوقع أن يكون لكل مثال نفس النوع والأنواع الفرعية، وأن تكون القواميس ذات نفس المفاتيح وأنواع القيم. عند تحميل مجموعة بيانات، يظهر خطأ إذا كانت الحقول ذات أنواع غير متطابقة، وتُملأ الحقول الناقصة في القواميس بقيمة None بحيث تمتلك جميع القواميس نفس المفاتيح وأنواع القيم.
لتجنّب ذلك والسماح بأنواع مختلطة دون أخطاء، يمكنك استخدام on_mixed_types="use_json" أو تحديد features= مع نوع Json:
>>> ds = Dataset.from_dict({"a": [0, "foo", {"subfield": "bar"}]})
Traceback (most recent call last):
...
File "pyarrow/error.pxi", line 92, in pyarrow.lib.check_status
pyarrow.lib.ArrowInvalid: Could not convert 'foo' with type str: tried to convert to int64
>>> ds = Dataset.from_dict({"a": [0, "foo", {"subfield": "bar"}]}, on_mixed_types="use_json")
>>> ds.features
{'a': Json()}
>>> list(ds["a"])
[0, "foo", {"subfield": "bar"}]
>>> features = Features({"a": Json()})
>>> ds = Dataset.from_dict({"a": [0, "foo", {"subfield": "bar"}]}, features=features)
>>> ds.features
{'a': Json()}
>>> list(ds["a"])
[0, "foo", {"subfield": "bar"}]يُفيد هذا أيضًا في حالة قوائم من القواميس ذات مفاتيح وقيم عشوائية، لتجنب ملء الحقول الناقصة بقيمة None:
>>> ds = Dataset.from_dict({"a": [[{"b": 0}, {"c": 0}]]})
>>> ds.features
{'a': List({'b': Value('int64'), 'c': Value('int64')})}
>>> list(ds["a"])
[[{'b': 0, 'c': None}, {'b': None, 'c': 0}]] # missing fields are filled with None
>>> features = Features({"a": List(Json())})
>>> ds = Dataset.from_dict({"a": [[{"b": 0}, {"c": 0}]]}, features=features)
>>> ds.features
{'a': List(Json())}
>>> list(ds["a"])
[[{'b': 0}, {'c': 0}]] # OK
>>> ds = Dataset.from_dict({"a": [[{"b": 0}, {"c": 0}]]}, on_mixed_types="use_json")
>>> ds.features
{'a': List(Json())}
>>> list(ds["a"])
[[{'b': 0}, {'c': 0}]] # OKمثال آخر مع بيانات استدعاء الأدوات:
>>> messages = [
... {"role": "user", "content": "Turn on the living room lights and play my electronic music playlist."},
... {"role": "assistant", "tool_calls": [
... {"type": "function", "function": {
... "name": "control_light",
... "arguments": {"room": "living room", "state": "on"}
... }},
... {"type": "function", "function": {
... "name": "play_music",
... "arguments": {"playlist": "electronic"} # mixed-type here since keys ["playlist"] and ["room", "state"] are different
... }}]
... },
... {"role": "tool", "name": "control_light", "content": "The lights in the living room are now on."},
... {"role": "tool", "name": "play_music", "content": "The music is now playing."},
... {"role": "assistant", "content": "Done!"}
... ]
>>> ds = Dataset.from_dict({"messages": [messages]}, on_mixed_types="use_json")
>>> ds.features
{'messages': List({'role': Value('string'), 'content': Value('string'), 'tool_calls': List(Json()), 'name': Value('string')})}
>>> ds[0]["messages"][1]["tool_calls"][0]["function"]["arguments"]
{"room": "living room", "state": "on"}from_list
< source >( mapping: listfeatures: typing.Optional[datasets.features.features.Features] = Noneinfo: typing.Optional[datasets.info.DatasetInfo] = Nonesplit: typing.Optional[datasets.splits.NamedSplit] = Noneon_mixed_types: typing.Optional[typing.Literal['use_json']] = None )
المعاملات
- mapping (
List[dict]) — قائمة من خرائط تُحوّل السلاسل النصية إلى قيم الصفوف. - features (
Features، اختياري) — ميزات مجموعة البيانات. - info (
DatasetInfo، اختياري) — معلومات عن مجموعة البيانات، مثل الوصف والاستشهاد وما إلى ذلك. - split (
NamedSplit, اختياري) — اسم تقسيم مجموعة البيانات. - on_mixed_types (
Literal["use_json"], اختياري, القيمة الافتراضية هيNone) — إذا كانت القيمة "use_json"، يتم استخدام نوع Json() للحقول ذات الأنواع المختلطة، أي الحقول غير المهيكلة التي تحتوي على بيانات بدون مخطط مسبق التعريف. في هذه الحالة، يُضبط الحقل ذو النوع المختلط على Json().يتيح هذا تحميل قوائم تحتوي على مزيج من النصوص/الأعداد الصحيحة/الأعداد العشرية، على سبيل المثال، أو قواميس ذات أنواع قيم عشوائية.
أُضيف في 4.7.0
تحويل قائمة من القواميس إلى pyarrow.Table لإنشاء Dataset`.
لاحظ أن مفاتيح الإدخال الأول ستُستخدم لتحديد أعمدة مجموعة البيانات، بغض النظر عما يُمرر إلى features.
Important: a dataset created with from_list() lives in memory and therefore doesn’t have an associated cache directory. This may change in the future, but in the meantime if you want to reduce memory usage you should write it back on disk and reload using e.g. save_to_disk / load_from_disk.
أمثلة:
احصل على مجموعة بيانات من قائمة تحتوي على الأمثلة:
>>> ds = Dataset.from_list([{"text": "hello there !"}, {"text": "general kenobi !"}]})مرّر الميزات لتحديد أنواع الأعمدة، على سبيل المثال لبيانات الصور:
>>> features = Features({"image": Image()})
>>> ds = Dataset.from_list([{"image": "path/to/image.png"}], features=features)تستند مجموعات البيانات إلى Arrow وهو تنسيق أعمدة، ولذلك يتوقع أن يكون لكل مثال نفس النوع والأنواع الفرعية، وأن تكون القواميس ذات نفس المفاتيح وأنواع القيم. عند تحميل مجموعة بيانات، يظهر خطأ إذا كانت الحقول ذات أنواع غير متطابقة، وتُملأ الحقول الناقصة في القواميس بقيمة None بحيث تمتلك جميع القواميس نفس المفاتيح وأنواع القيم.
لتجنّب ذلك والسماح بأنواع مختلطة دون أخطاء، يمكنك استخدام on_mixed_types="use_json" أو تحديد features= مع نوع Json:
>>> ds = Dataset.from_list([{"a": 0}, {"a": "foo"}, {"a": {"subfield": "bar"}}])
Traceback (most recent call last):
...
File "pyarrow/error.pxi", line 92, in pyarrow.lib.check_status
pyarrow.lib.ArrowInvalid: Could not convert 'foo' with type str: tried to convert to int64
>>> ds = Dataset.from_list([{"a": 0}, {"a": "foo"}, {"a": {"subfield": "bar"}}], on_mixed_types="use_json")
>>> ds.features
{'a': Json()}
>>> list(ds["a"])
[0, "foo", {"subfield": "bar"}]
>>> features = Features({"a": Json()})
>>> ds = Dataset.from_list([{"a": 0}, {"a": "foo"}, {"a": {"subfield": "bar"}}], features=features)
>>> ds.features
{'a': Json()}
>>> list(ds["a"])
[0, "foo", {"subfield": "bar"}]يُفيد هذا أيضًا في حالة قوائم من القواميس ذات مفاتيح وقيم عشوائية، لتجنب ملء الحقول الناقصة بقيمة None:
>>> ds = Dataset.from_list([{"a": [{"b": 0}, {"c": 0}]}])
>>> ds.features
{'a': List({'b': Value('int64'), 'c': Value('int64')})}
>>> list(ds["a"])
[[{'b': 0, 'c': None}, {'b': None, 'c': 0}]] # missing fields are filled with None
>>> features = Features({"a": List(Json())})
>>> ds = Dataset.from_list([{"a": [{"b": 0}, {"c": 0}]}], features=features)
>>> ds.features
{'a': List(Json())}
>>> list(ds["a"])
[[{'b': 0}, {'c': 0}]] # OK
>>> ds = Dataset.from_list([{"a": [{"b": 0}, {"c": 0}]}], on_mixed_types="use_json")
>>> ds.features
{'a': List(Json())}
>>> list(ds["a"])
[[{'b': 0}, {'c': 0}]] # OKمثال آخر مع بيانات استدعاء الأدوات:
>>> messages = [
... {"role": "user", "content": "Turn on the living room lights and play my electronic music playlist."},
... {"role": "assistant", "tool_calls": [
... {"type": "function", "function": {
... "name": "control_light",
... "arguments": {"room": "living room", "state": "on"}
... }},
... {"type": "function", "function": {
... "name": "play_music",
... "arguments": {"playlist": "electronic"} # mixed-type here since keys ["playlist"] and ["room", "state"] are different
... }}]
... },
... {"role": "tool", "name": "control_light", "content": "The lights in the living room are now on."},
... {"role": "tool", "name": "play_music", "content": "The music is now playing."},
... {"role": "assistant", "content": "Done!"}
... ]
>>> ds = Dataset.from_list([{"messages": messages}], on_mixed_types="use_json")
>>> ds.features
{'messages': List({'role': Value('string'), 'content': Value('string'), 'tool_calls': List(Json()), 'name': Value('string')})}
>>> ds[0]["messages"][1]["tool_calls"][0]["function"]["arguments"]
{"room": "living room", "state": "on"}from_generator
< source >( generator: typing.Callablefeatures: typing.Optional[datasets.features.features.Features] = Nonecache_dir: str = Nonekeep_in_memory: bool = Falsegen_kwargs: typing.Optional[dict] = Nonenum_proc: typing.Optional[int] = Nonesplit: NamedSplit = NamedSplit('train')fingerprint: typing.Optional[str] = None**kwargs )
المعاملات
- generator ( —
Callable): دالة مولِّدyieldsأمثلة. - features (Features، اختياري) — مميزات مجموعة البيانات.
- cache_dir (
str، اختياري، الافتراضي"~/.cache/huggingface/datasets") — المجلد الذي يُخزَّن فيه البيانات مؤقتًا. - keep_in_memory (
bool، القيمة الافتراضيةFalse) — ما إذا كان سيتم نسخ البيانات في الذاكرة. - gen_kwargs(
dict, اختياري) — حجج الكلمات المفتاحية التي سيتم تمريرها إلى الدالة القابلة للاستدعاءgenerator. يمكنك تحديد مجموعة بيانات مقسمة إلى أجزاء عن طريق تمرير قائمة الأجزاء فيgen_kwargsوإعدادnum_procأكبر من 1. - num_proc (
int, اختياري, الافتراضي هوNone) — عدد العمليات عند تنزيل مجموعة البيانات وتوليدها محليًا. يكون هذا مفيدًا إذا كانت مجموعة البيانات مكوّنة من ملفات متعددة. يتم تعطيل المعالجة متعددة العمليات افتراضيًا. إذاnum_procكان أكبر من واحد، فيجب أن تكون جميع قيم القوائم فيgen_kwargsمن نفس الطول. سيتم تقسيم هذه القيم بين استدعاءات المولّد. سيكون عدد الشرائح هو الحد الأدنى بين أقصر قائمة فيgen_kwargsوnum_proc.أُضيف في 2.7.0
- split (NamedSplit, الافتراضي هو
Split.TRAIN) — اسم الجزء الذي سيُسند إلى مجموعة البيانات.أُضيف في 2.21.0
- fingerprint (
str, اختياري) — بصمة تُستخدم لتوليد معرّف مجموعة البيانات. بشكل افتراضيfingerprintتُتولَّد البصمة عن طريق تجزئة دالة المولّد وجميع المعاملات، وقد يكون ذلك بطيئًا إذا كانت تستخدم كائنات كبيرة مثل نماذج الذكاء الاصطناعي.أُضيف في 4.3.0
- **kwargs (معلمات إضافية بالكلمات المفتاحية) —
معلمات بالكلمات المفتاحية تُمرَّر إلى :
GeneratorConfig.
إنشاء مجموعة بيانات من مولّد.
حمّل البيانات من المولّد، واحفظها مؤقتًا على القرص بتنسيق Arrow، ثم أعد مجموعة البيانات (Dataset) من بيانات Arrow المخزّنة على القرص عبر خرائط الذاكرة (memory-mapped).
جدول Apache Arrow الذي يدعم مجموعة البيانات.
مثال:
>>> from datasets import load_dataset
>>> ds = load_dataset("cornell-movie-review-data/rotten_tomatoes", split="validation")
>>> ds.data
MemoryMappedTable
text: string
label: int64
----
text: [["compassionately explores the seemingly irreconcilable situation between conservative christian parents and their estranged gay and lesbian children .","the soundtrack alone is worth the price of admission .","rodriguez does a splendid job of racial profiling hollywood style--casting excellent latin actors of all ages--a trend long overdue .","beneath the film's obvious determination to shock at any cost lies considerable skill and determination , backed by sheer nerve .","bielinsky is a filmmaker of impressive talent .","so beautifully acted and directed , it's clear that washington most certainly has a new career ahead of him if he so chooses .","a visual spectacle full of stunning images and effects .","a gentle and engrossing character study .","it's enough to watch huppert scheming , with her small , intelligent eyes as steady as any noir villain , and to enjoy the perfectly pitched web of tension that chabrol spins .","an engrossing portrait of uncompromising artists trying to create something original against the backdrop of a corporate music industry that only seems to care about the bottom line .",...,"ultimately , jane learns her place as a girl , softens up and loses some of the intensity that made her an interesting character to begin with .","ah-nuld's action hero days might be over .","it's clear why deuces wild , which was shot two years ago , has been gathering dust on mgm's shelf .","feels like nothing quite so much as a middle-aged moviemaker's attempt to surround himself with beautiful , half-naked women .","when the precise nature of matthew's predicament finally comes into sharp focus , the revelation fails to justify the build-up .","this picture is murder by numbers , and as easy to be bored by as your abc's , despite a few whopping shootouts .","hilarious musical comedy though stymied by accents thick as mud .","if you are into splatter movies , then you will probably have a reasonably good time with the salton sea .","a dull , simple-minded and stereotypical tale of drugs , death and mind-numbing indifference on the inner-city streets .","the feature-length stretch . . . strains the show's concept ."]]
label: [[1,1,1,1,1,1,1,1,1,1,...,0,0,0,0,0,0,0,0,0,0]]ملفات الكاش التي تحتوي على جدول Apache Arrow الذي يدعم مجموعة البيانات.
مثال:
>>> from datasets import load_dataset
>>> ds = load_dataset("cornell-movie-review-data/rotten_tomatoes", split="validation")
>>> ds.cache_files
[{'filename': '/root/.cache/huggingface/datasets/rotten_tomatoes_movie_review/default/1.0.0/40d411e45a6ce3484deed7cc15b82a53dad9a72aafd9f86f8f227134bec5ca46/rotten_tomatoes_movie_review-validation.arrow'}]عدد الأعمدة في مجموعة البيانات.
عدد الصفوف في مجموعة البيانات (نفس Dataset.len()).
أسماء الأعمدة في مجموعة البيانات.
شكل مجموعة البيانات (عدد الأعمدة، عدد الصفوف).
فريد
< source >( column: str ) → list
المعاملات
- column (
str) — اسم العمود (قائمة بأسماء الأعمدة باستخدام column_names).
يعيد
list
قائمة العناصر الفريدة في العمود المحدد.
إرجاع قائمة بالعناصر الفريدة في عمود.
يتم تنفيذ ذلك في الخلفية منخفضة المستوى، ولذلك فهو سريع للغاية.
تسطيح
< source >( new_fingerprint: typing.Optional[str] = Nonemax_depth = 16 ) → Dataset
تسطيح الجدول. يتم تسطيح كل عمود من نوع struct إلى عمود واحد لكل حقل في البنية. تُترك الأعمدة الأخرى دون تغيير.
مثال:
>>> from datasets import load_dataset
>>> ds = load_dataset("rajpurkar/squad", split="train")
>>> ds.features
{'id': Value('string'),
'title': Value('string'),
'context': Value('string'),
'question': Value('string'),
'answers': {'text': List(Value('string')),
'answer_start': List(Value('int32'))}}
>>> ds = ds.flatten()
>>> ds
Dataset({
features: ['id', 'title', 'context', 'question', 'answers.text', 'answers.answer_start'],
num_rows: 87599
})cast
< source >( features: Featuresbatch_size: typing.Optional[int] = 1000keep_in_memory: bool = Falseload_from_cache_file: typing.Optional[bool] = Nonecache_file_name: typing.Optional[str] = Nonewriter_batch_size: typing.Optional[int] = 1000num_proc: typing.Optional[int] = None ) → Dataset
المعاملات
- features (Features) —
ميزات جديدة لتحويل مجموعة البيانات إليها.
يجب أن تتطابق أسماء الحقول في الميزات مع أسماء الأعمدة الحالية.
كما يجب أن يكون نوع البيانات قابلاً للتحويل من نوع إلى آخر.
للتحويل غير البسيط، مثل
str<->ClassLabel، يجب عليك استخدام map() لتحديث مجموعة البيانات. - batch_size (
int، القيمة الافتراضية1000) — عدد الأمثلة في كل دفعة تُقدَّم إلى cast. إذا كانbatch_size <= 0أوbatch_size == None، فتمنح مجموعة البيانات كاملةً كدفعة واحدة إلى cast. - keep_in_memory (
bool، القيمة الافتراضيةFalse) — ما إذا كان سيتم نسخ البيانات في الذاكرة. - load_from_cache_file (
bool، القيمة الافتراضيةTrueإذا كانت التخزين المؤقت مفعّلة) — إذا أمكن تحديد ملف تخزين مؤقت يحفظ الحساب الحالي لـfunction، فاستخدمه بدلاً من إعادة الحساب. - cache_file_name (
str، اختياري، القيمة الافتراضيةNone) — يُحدد اسم المسار لملف التخزين المؤقت. يُستخدم لتخزين نتائج الحساب بدلاً من اسم ملف التخزين المؤقت المولّد تلقائيًا. - writer_batch_size (
int، القيمة الافتراضية1000) — عدد الصفوف في عملية الكتابة الواحدة لكاتب ملف الكاش. تُعد هذه القيمة توازنًا جيدًا بين استهلاك الذاكرة أثناء المعالجة وسرعة المعالجة. تؤدي القيمة الأعلى إلى تقليل عمليات البحث أثناء المعالجة، بينما تستهلك القيمة الأقل ذاكرة مؤقتة أقل أثناء تشغيل map(). - num_proc (
int، اختياري، القيمة الافتراضيةNone) — عدد العمليات المستخدمة في المعالجة المتعددة. افتراضيًا، لا يتم استخدام المعالجة المتعددة.
يعيد
نسخة من مجموعة البيانات مع الميزات المُحوَّلة.
قم بتحويل مجموعة البيانات إلى مجموعة جديدة من الميزات.
مثال:
>>> from datasets import load_dataset, ClassLabel, Value
>>> ds = load_dataset("cornell-movie-review-data/rotten_tomatoes", split="validation")
>>> ds.features
{'label': ClassLabel(names=['neg', 'pos']),
'text': Value('string')}
>>> new_features = ds.features.copy()
>>> new_features['label'] = ClassLabel(names=['bad', 'good'])
>>> new_features['text'] = Value('large_string')
>>> ds = ds.cast(new_features)
>>> ds.features
{'label': ClassLabel(names=['bad', 'good']),
'text': Value('large_string')}cast_column
< source >( column: strfeature: typing.Union[dict, list, tuple, datasets.features.features.Value, datasets.features.features.ClassLabel, datasets.features.translation.Translation, datasets.features.translation.TranslationVariableLanguages, datasets.features.features.LargeList, datasets.features.features.List, datasets.features.features.Array2D, datasets.features.features.Array3D, datasets.features.features.Array4D, datasets.features.features.Array5D, datasets.features.audio.Audio, datasets.features.image.Image, datasets.features.mesh.Mesh, datasets.features.video.Video, datasets.features.pdf.Pdf, datasets.features.nifti.Nifti, datasets.features.bio_sequence.BioSequence, datasets.features.bio_structure.BioStructure]new_fingerprint: typing.Optional[str] = None )
قم بتحويل العمود إلى ميزة للتحليل.
مثال:
>>> from datasets import load_dataset, ClassLabel
>>> ds = load_dataset("cornell-movie-review-data/rotten_tomatoes", split="validation")
>>> ds.features
{'label': ClassLabel(names=['neg', 'pos']),
'text': Value('string')}
>>> ds = ds.cast_column('label', ClassLabel(names=['bad', 'good']))
>>> ds.features
{'label': ClassLabel(names=['bad', 'good']),
'text': Value('string')}remove_columns
< source >( column_names: typing.Union[str, list[str]]new_fingerprint: typing.Optional[str] = None ) → Dataset
المعاملات
- column_names (
Union[str, List[str]]) — اسم العمود أو الأعمدة المراد حذفها. - new_fingerprint (
str، اختياري) — البصمة الجديدة للمجموعة بعد التحويل. إذا كانتNone، تُحسب البصمة الجديدة باستخدام تجزئة (hash) للبصمة السابقة وحوافز التحويل.
يعيد
نسخة من كائن مجموعة البيانات دون الأعمدة المراد إزالتها.
إزالة عمود واحد أو عدة أعمدة من مجموعة البيانات والميزات المرتبطة بها.
يمكنك أيضًا إزالة عمود باستخدام map() مع remove_columns لكن الطريقة الحالية لا تنسخ بيانات الأعمدة المتبقية وبالتالي فهي أسرع.
مثال:
>>> from datasets import load_dataset
>>> ds = load_dataset("cornell-movie-review-data/rotten_tomatoes", split="validation")
>>> ds = ds.remove_columns('label')
Dataset({
features: ['text'],
num_rows: 1066
})
>>> ds = ds.remove_columns(column_names=ds.column_names) # Removing all the columns returns an empty dataset with the `num_rows` property set to 0
Dataset({
features: [],
num_rows: 0
})rename_column
< source >( original_column_name: strnew_column_name: strnew_fingerprint: typing.Optional[str] = None ) → Dataset
المعاملات
- original_column_name (
str) — اسم العمود الذي سيتم تغيير اسمه. - new_column_name (
str) — الاسم الجديد للعمود. - new_fingerprint (
str، اختياري) — البصمة الجديدة للمجموعة بعد التحويل. إذا كانتNone، تُحسب البصمة الجديدة باستخدام تجزئة (hash) للبصمة السابقة وحوافز التحويل.
يعيد
نسخة من مجموعة البيانات مع إعادة تسمية للعمود.
إعادة تسمية عمود في مجموعة البيانات، ونقل الميزات المرتبطة بالعمود الأصلي إلى تحت اسم العمود الجديد.
rename_columns
< source >( column_mapping: dictnew_fingerprint: typing.Optional[str] = None ) → Dataset
المعاملات
- column_mapping (
Dict[str, str]) — خريطة للأعمدة لإعادة تسميتها بأسمائها الجديدة - new_fingerprint (
str، اختياري) — البصمة الجديدة للمجموعة بعد التحويل. إذا كانتNone، تُحسب البصمة الجديدة باستخدام تجزئة (hash) للبصمة السابقة وحوافز التحويل.
يعيد
نسخة من مجموعة البيانات مع إعادة تسمية الأعمدة
أعد تسمية عدة أعمدة في مجموعة البيانات، وانقل الميزات المرتبطة بالأعمدة الأصلية إلى الأسماء الجديدة للأعمدة.
select_columns
< source >( column_names: typing.Union[str, list[str]]new_fingerprint: typing.Optional[str] = None ) → Dataset
المعاملات
- column_names (
Union[str, List[str]]) — اسم العمود أو الأعمدة التي يجب الاحتفاظ بها. - new_fingerprint (
str، اختياري) — البصمة الجديدة للمجموعة بعد التحويل. إذا كانتNone، تُحسب البصمة الجديدة باستخدام تجزئة (hash) للبصمة السابقة، وحوامل التحويل.
يعيد
نسخة من كائن مجموعة البيانات تتكون فقط من الأعمدة المحددة.
حدد عمودًا واحدًا أو عدة أعمدة في مجموعة البيانات والميزات المرتبطة بها.
class_encode_column
< source >( column: strinclude_nulls: bool = False )
المعاملات
- column (
str) — اسم العمود الذي سيتم تحويله (يمكنك عرض جميع أسماء الأعمدة باستخدام column_names) - include_nulls (
bool, القيمة الافتراضية هيFalse) — ما إذا كان يجب تضمين القيم الفارغة في تسميات الفئات. إذا كانتTrue, سيتم ترميز القيم الفارغة على أنها"None"تسمية فئة.أُضيف في 1.14.2
يُحوّل العمود المُعطى إلى ClassLabel ويحدّث الجدول.
مثال:
>>> from datasets import load_dataset
>>> ds = load_dataset("google/boolq", split="validation")
>>> ds.features
{'answer': Value('bool'),
'passage': Value('string'),
'question': Value('string')}
>>> ds = ds.class_encode_column('answer')
>>> ds.features
{'answer': ClassLabel(num_classes=2, names=['False', 'True']),
'passage': Value('string'),
'question': Value('string')}عدد الصفوف في مجموعة البيانات.
تكرار على الأمثلة.
إذا تم ضبط تنسيق باستخدام Dataset.set_format() فسيتم إرجاع الصفوف بالتنسيق المحدد.
iter
< source >( batch_size: intdrop_last_batch: bool = False )
تكرار عبر الدفعات ذات الحجم batch_size.
إذا تم ضبط تنسيق باستخدام [~datasets.Dataset.set_format]، فسيتم إرجاع الصفوف بالتنسيق المحدد.
formatted_as
< source >( type: typing.Optional[str] = Nonecolumns: typing.Optional[list] = Noneoutput_all_columns: bool = False**format_kwargs )
المعاملات
- type (
str، اختياري) — نوع المخرجات المختار من بين[None, 'numpy', 'torch', 'tensorflow', 'jax', 'arrow', 'pandas', 'polars']. يعنيNoneأن getitem“ يعيد كائنات بايثون (الافتراضي). - columns (
List[str]، اختياري) — الأعمدة التي سيتم تنسيقها في المخرجات.Noneتعني أن__getitem__يعيد جميع الأعمدة (الافتراضي). - output_all_columns (
bool، القيمة الافتراضيةFalse) — احتفظ بالأعمدة غير المنسّقة أيضًا في المخرجات (ككائنات بايثون). - **format_kwargs (معلمات إضافية) —
معلمات تُمرَّر إلى دالة التحويل مثل
np.arrayأوtorch.tensorأوtensorflow.ragged.constant.
يُستخدم في عبارة with. اضبط صيغة إرجاع __getitem__ (النوع والأعمدة).
set_format
< source >( type: typing.Optional[str] = Nonecolumns: typing.Optional[list] = Noneoutput_all_columns: bool = False**format_kwargs )
المعاملات
- type (
str، اختياري) — نوع المخرجات المختار من بين[None, 'numpy', 'torch', 'tensorflow', 'jax', 'arrow', 'pandas', 'polars']. يعنيNoneأن__getitem__يعيد كائنات بايثون (الافتراضي). - columns (
List[str]، اختياري) — الأعمدة التي سيتم تنسيقها في المخرجات.Noneتعني أن__getitem__يعيد جميع الأعمدة (الافتراضي). - output_all_columns (
bool، القيمة الافتراضيةFalse) — احتفظ بالأعمدة غير المنسّقة أيضًا في المخرجات (ككائنات بايثون). - **format_kwargs (معلمات إضافية) —
معلمات تُمرَّر إلى دالة التحويل مثل
np.arrayأوtorch.tensorأوtensorflow.ragged.constant.
حدد صيغة إرجاع __getitem__ (النوع والأعمدة). يتم تطبيق تنسيق البيانات بشكل فوري.
يُستخدم النوع type (مثل “numpy”) لتنسيق الدفعات عند استخدام __getitem__.
كما يمكن استخدام تحويلات مخصصة للتنسيق باستخدام set_transform().
من الممكن استدعاء map() بعد استدعاء set_format. بما أن map قد يضيف أعمدة جديدة، فإن قائمة الأعمدة المنسّقة
يتم تحديثه. في هذه الحالة، إذا قمت بتطبيق map على مجموعة بيانات لإضافة عمود جديد، فسيتم تنسيق هذا العمود على النحو التالي:
new formatted columns = (all columns - previously unformatted columns)مثال:
>>> from datasets import load_dataset
>>> from transformers import AutoTokenizer
>>> ds = load_dataset("cornell-movie-review-data/rotten_tomatoes", split="validation")
>>> tokenizer = AutoTokenizer.from_pretrained("bert-base-cased")
>>> ds = ds.map(lambda x: tokenizer(x['text'], truncation=True, padding=True), batched=True)
>>> ds.set_format(type='numpy', columns=['text', 'label'])
>>> ds.format
{'type': 'numpy',
'format_kwargs': {},
'columns': ['text', 'label'],
'output_all_columns': False}set_transform
< source >( transform: typing.Optional[typing.Callable]columns: typing.Optional[list] = Noneoutput_all_columns: bool = False )
المعاملات
- transform (
Callable، اختياري) — تحويل تنسيق مُعرَّف من قِبل المستخدم، يستبدل التنسيق المُعرَّف بواسطة set_format(). دالة التنسيق هي دالة قابلة للاستدعاء تستقبل دفعة (على شكلdict) كمدخل وتعيد دفعة. تُطبَّق هذه الدالة مباشرة قبل إرجاع الكائنات في__getitem__. - columns (
List[str]، اختياري) — الأعمدة التي سيتم تنسيقها في المخرجات. إذا تم تحديدها، فإن دفعة الإدخال الخاصة بالتحويل تحتوي فقط على تلك الأعمدة. - output_all_columns (
bool، القيمة الافتراضيةFalse) — احتفظ بالأعمدة غير المنسّقة أيضًا في المخرجات (ككائنات بايثون). إذا تم ضبطها على True، فسيتم الاحتفاظ بالأعمدة غير المنسّقة الأخرى مع مخرجات التحويل.
حدد صيغة إرجاع __getitem__ باستخدام هذا التحويل. يُطبَّق التحويل على الفور على الدفعات عند استدعاء __getitem__.
كما هو الحال مع set_format()، يمكن إعادة تعيين ذلك باستخدام reset_format().
مثال:
>>> from datasets import load_dataset
>>> from transformers import AutoTokenizer
>>> ds = load_dataset("cornell-movie-review-data/rotten_tomatoes", split="validation")
>>> tokenizer = AutoTokenizer.from_pretrained('bert-base-uncased')
>>> def encode(batch):
... return tokenizer(batch['text'], padding=True, truncation=True, return_tensors='pt')
>>> ds.set_transform(encode)
>>> ds[0]
{'attention_mask': tensor([1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1]),
'input_ids': tensor([ 101, 29353, 2135, 15102, 1996, 9428, 20868, 2890, 8663, 6895,
20470, 2571, 3663, 2090, 4603, 3017, 3008, 1998, 2037, 24211,
5637, 1998, 11690, 2336, 1012, 102]),
'token_type_ids': tensor([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0])}إعادة تعيين صيغة إرجاع __getitem__ إلى كائنات بايثون وجميع الأعمدة.
نفس self.set_format()
مثال:
>>> from datasets import load_dataset
>>> from transformers import AutoTokenizer
>>> ds = load_dataset("cornell-movie-review-data/rotten_tomatoes", split="validation")
>>> tokenizer = AutoTokenizer.from_pretrained("bert-base-cased")
>>> ds = ds.map(lambda x: tokenizer(x['text'], truncation=True, padding=True), batched=True)
>>> ds.set_format(type='numpy', columns=['input_ids', 'token_type_ids', 'attention_mask', 'label'])
>>> ds.format
{'columns': ['input_ids', 'token_type_ids', 'attention_mask', 'label'],
'format_kwargs': {},
'output_all_columns': False,
'type': 'numpy'}
>>> ds.reset_format()
>>> ds.format
{'columns': ['text', 'label', 'input_ids', 'token_type_ids', 'attention_mask'],
'format_kwargs': {},
'output_all_columns': False,
'type': None}with_format
< source >( type: typing.Optional[str] = Nonecolumns: typing.Optional[list] = Noneoutput_all_columns: bool = False**format_kwargs )
المعاملات
- type (
str، اختياري) — نوع المخرجات المختار من بين[None, 'numpy', 'torch', 'tensorflow', 'jax', 'arrow', 'pandas', 'polars']. يعنيNoneأن__getitem__يعيد كائنات بايثون (الافتراضي). - columns (
List[str]، اختياري) — الأعمدة التي سيتم تنسيقها في المخرجات.Noneتعني أن__getitem__يعيد جميع الأعمدة (الافتراضي). - output_all_columns (
bool، القيمة الافتراضيةFalse) — احتفظ بالأعمدة غير المنسّقة أيضًا في المخرجات (ككائنات بايثون). - **format_kwargs (معلمات إضافية) —
معلمات تُمرَّر إلى دالة التحويل مثل
np.arrayأوtorch.tensorأوtensorflow.ragged.constant.
حدد صيغة إرجاع __getitem__ (النوع والأعمدة). يتم تطبيق تنسيق البيانات على الفور.
يُستخدم النوع type (مثل “numpy”) لتنسيق الدفعات عند استخدام __getitem__.
من الممكن أيضًا استخدام تحويلات مخصصة للتنسيق باستخدام with_transform().
على عكس set_format()، تُعيد with_format كائن Dataset جديدًا.
مثال:
>>> from datasets import load_dataset
>>> from transformers import AutoTokenizer
>>> ds = load_dataset("cornell-movie-review-data/rotten_tomatoes", split="validation")
>>> tokenizer = AutoTokenizer.from_pretrained("bert-base-cased")
>>> ds = ds.map(lambda x: tokenizer(x['text'], truncation=True, padding=True), batched=True)
>>> ds.format
{'columns': ['text', 'label', 'input_ids', 'token_type_ids', 'attention_mask'],
'format_kwargs': {},
'output_all_columns': False,
'type': None}
>>> ds = ds.with_format("torch")
>>> ds.format
{'columns': ['text', 'label', 'input_ids', 'token_type_ids', 'attention_mask'],
'format_kwargs': {},
'output_all_columns': False,
'type': 'torch'}
>>> ds[0]
{'text': 'compassionately explores the seemingly irreconcilable situation between conservative christian parents and their estranged gay and lesbian children .',
'label': tensor(1),
'input_ids': tensor([ 101, 18027, 16310, 16001, 1103, 9321, 178, 11604, 7235, 6617,
1742, 2165, 2820, 1206, 6588, 22572, 12937, 1811, 2153, 1105,
1147, 12890, 19587, 6463, 1105, 15026, 1482, 119, 102, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0]),
'token_type_ids': tensor([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]),
'attention_mask': tensor([1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0])}with_transform
< source >( transform: typing.Optional[typing.Callable]columns: typing.Optional[list] = Noneoutput_all_columns: bool = False )
المعاملات
- transform (
Callable,optional) — تحويل تنسيق مُعرَّف من قِبل المستخدم، يستبدل التنسيق المُعرَّف بواسطة set_format(). دالة التنسيق هي دالة قابلة للاستدعاء تستقبل دفعة (على شكلdict) كمدخل وتعيد دفعة. تُطبَّق هذه الدالة مباشرة قبل إرجاع الكائنات في__getitem__. - columns (
List[str],optional) — الأعمدة التي سيتم تنسيقها في المخرجات. إذا تم تحديدها، فإن دفعة الإدخال الخاصة بالتحويل تحتوي فقط على تلك الأعمدة. - output_all_columns (
bool، القيمة الافتراضيةFalse) — احتفظ بالأعمدة غير المنسّقة أيضًا في المخرجات (ككائنات بايثون). إذا تم ضبطها علىTrue، فسيتم الاحتفاظ بالأعمدة غير المنسّقة الأخرى مع مخرجات التحويل.
حدد صيغة إرجاع __getitem__ باستخدام هذا التحويل. يُطبَّق التحويل على الفور على الدفعات عند استدعاء __getitem__.
كما هو الحال مع set_format()، يمكن إعادة تعيين هذا باستخدام reset_format().
على عكس set_transform()، تُعيد with_transform كائن Dataset جديدًا.
مثال:
>>> from datasets import load_dataset
>>> from transformers import AutoTokenizer
>>> ds = load_dataset("cornell-movie-review-data/rotten_tomatoes", split="validation")
>>> tokenizer = AutoTokenizer.from_pretrained("bert-base-cased")
>>> def encode(example):
... return tokenizer(example["text"], padding=True, truncation=True, return_tensors='pt')
>>> ds = ds.with_transform(encode)
>>> ds[0]
{'attention_mask': tensor([1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1]),
'input_ids': tensor([ 101, 18027, 16310, 16001, 1103, 9321, 178, 11604, 7235, 6617,
1742, 2165, 2820, 1206, 6588, 22572, 12937, 1811, 2153, 1105,
1147, 12890, 19587, 6463, 1105, 15026, 1482, 119, 102]),
'token_type_ids': tensor([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0])}يمكن استخدامه لمؤشر الأعمدة (بأسماء نصية) أو الصفوف (بمؤشر صحيح أو قابل للتكرار من المؤشرات أو القيم المنطقية).
قم بتنظيف جميع ملفات الكاش في مجلد كاش مجموعة البيانات، باستثناء ملف الكاش المستخدم حاليًا إن وُجد.
انتبه عند تنفيذ هذا الأمر إلى عدم وجود عملية أخرى تستخدم ملفات الكاش الأخرى في الوقت الحالي.
map
< source >( function: typing.Optional[typing.Callable] = Nonewith_indices: bool = Falsewith_rank: bool = Falseinput_columns: typing.Union[str, list[str], NoneType] = Nonebatched: bool = Falsebatch_size: typing.Optional[int] = 1000drop_last_batch: bool = Falseremove_columns: typing.Union[str, list[str], NoneType] = Nonekeep_in_memory: bool = Falseload_from_cache_file: typing.Optional[bool] = Nonecache_file_name: typing.Optional[str] = Nonewriter_batch_size: typing.Optional[int] = 1000features: typing.Optional[datasets.features.features.Features] = Nonedisable_nullable: bool = Falsefn_kwargs: typing.Optional[dict] = Nonenum_proc: typing.Optional[int] = Nonesuffix_template: str = '_{rank:05d}_of_{num_proc:05d}'new_fingerprint: typing.Optional[str] = Nonedesc: typing.Optional[str] = Nonetry_original_type: typing.Optional[bool] = Trueon_mixed_types: typing.Optional[typing.Literal['use_json']] = 'use_json' )
المعاملات
- function (
Callable) — دالة تحمل أحد التواقيع التالية:function(example: Dict[str, Any]) -> Dict[str, Any]إذا كانbatched=Falseوwith_indices=Falseوwith_rank=Falsefunction(example: Dict[str, Any], *extra_args) -> Dict[str, Any]إذا كانbatched=Falseوwith_indices=Trueو/أوwith_rank=True(حجة إضافية واحدة لكل منهما)function(batch: Dict[str, List]) -> Dict[str, List]إذا كانbatched=Trueوwith_indices=Falseوwith_rank=Falsefunction(batch: Dict[str, List], *extra_args) -> Dict[str, List]إذا كانbatched=Trueوwith_indices=Trueو/أوwith_rank=True(حجة إضافية واحدة لكل منهما)
للاستخدام المتقدم، يمكن للدالة أيضاً أن تُرجع
pyarrow.Table. إذا كانت الدالة غير متزامنة، فإنmapستنفّذ دالتك بالتوازي. علاوة على ذلك، إذا كانت دالتك لا تُرجع شيئاً (None)، فإنmapستنفّذ دالتك وتُرجع مجموعة البيانات دون تغيير. إذا لم تُوفَّر دالة، فسيتم افتراض دالة الهوية:lambda x: x. - with_indices (
bool، القيمة الافتراضيةFalse) — توفير فهارس أمثلة إلىfunction. لاحظ أنه في هذه الحالة يجب أن تكون التوقيع الخاص بـfunctionهوdef function(example, idx[, rank]): .... - with_rank (
bool، القيمة الافتراضيةFalse) — توفير ترتيب العملية إلىfunction. لاحظ أنه في هذه الحالة يجب أن تكون التوقيع الخاص بـfunctionهوdef function(example[, idx], rank): .... - input_columns (
Optional[Union[str, List[str]]]، القيمة الافتراضيةNone) — الأعمدة التي سيتم تمريرها إلىfunctionكحجج موضعية. إذا كانتNone، يتم تمريرdictيربط جميع الأعمدة المنسّقة كحجة واحدة. - batched (
bool، الافتراضيFalse) — تقديم دفعة من الأمثلة إلىfunction. - batch_size (
int، اختياري، القيمة الافتراضية1000) — عدد الأمثلة في كل دفعة تُقدَّم إلىfunctionإذا كانbatched=True. إذا كانbatch_size <= 0أوbatch_size == None، فتمنح مجموعة البيانات كاملةً كدفعة واحدة إلىfunction. - drop_last_batch (
bool، القيمة الافتراضيةFalse) — ما إذا كان يجب تجاهل الدفعة الأخيرة الأصغر من batch_size بدلاً من معالجتها بواسطة الدالة. - remove_columns (
Optional[Union[str, List[str]]])، القيمة الافتراضيةNone— إزالة مجموعة من الأعمدة أثناء تنفيذ عملية الخرائط (mapping). سيتم إزالة الأعمدة قبل تحديث الأمثلة بمخرجاتfunction، أي إذا كانfunctionيضيف أعمدة بأسماء موجودة فيremove_columns، فسيتم الاحتفاظ بهذه الأعمدة. - keep_in_memory (
bool، القيمة الافتراضيةFalse) — احتفظ بالبيانات في الذاكرة بدلاً من كتابتها في ملف مؤقت. - load_from_cache_file (
Optional[bool]، القيمة الافتراضية هيTrueإذا كان التخزين المؤقت مفعلاً) — إذا أمكن تحديد ملف تخزين مؤقت يحفظ الحساب الحالي لـfunction، فاستخدمه بدلاً من إعادة الحساب. - cache_file_name (
str، اختياري، القيمة الافتراضيةNone) — يُحدد اسم المسار لملف التخزين المؤقت. يُستخدم لتخزين نتائج الحساب بدلاً من اسم ملف التخزين المؤقت المولّد تلقائيًا. - writer_batch_size (
int، القيمة الافتراضية1000) — عدد الصفوف في عملية الكتابة الواحدة لكاتب ملف الكاش. تُعد هذه القيمة توازنًا جيدًا بين استهلاك الذاكرة أثناء المعالجة وسرعة المعالجة. تؤدي القيمة الأعلى إلى تقليل عمليات البحث أثناء المعالجة، بينما تستهلك القيمة الأقل ذاكرة مؤقتة أقل أثناء تشغيلmap. - features (
Optional[datasets.Features]، الافتراضيNone) — استخدم كائن Features محددًا لتخزين ملف الكاش بدلاً من الملف المولَّد تلقائيًا. - disable_nullable (
bool، القيمة الافتراضيةFalse) — يمنع القيم الفارغة في الجدول. - fn_kwargs (
Dict، اختياري، القيمة الافتراضيةNone) — حجج الكلمات المفتاحية التي سيتم تمريرها إلىfunction. - num_proc (
int, اختياري, القيمة الافتراضية هيNone) — عدد العمليات المستخدمة للمعالجة المتعددة. إذا كانت القيمة None أو 0، فلن تُستخدم المعالجة المتعددة وسيتم تنفيذ العملية في العملية الرئيسية. إذا كانت القيمة أكبر من 1، فسيتم استخدام عملية عاملة واحدة أو عدة عمليات لمعالجة البيانات بالتوازي. ملاحظة: يجب أن تكون الدالة المُمرَّرة إلى map() قابلة للتسلسل (picklable) لكي تعمل المعالجة المتعددة بشكل صحيح (أي، يُفضَّل استخدام الدوال المعرفة في المستوى الأعلى من الوحدة، وليس داخل دالة أو فئة أخرى).- إذا كانت
Noneأو0، فلا يُستخدم تعدد العمليات، وتُنفَّذ العملية في العملية الرئيسية. - If greater than
1, one or multiple worker processes are used to process data in parallel. Note: The function passed tomap()must be picklable for multiprocessing to work correctly (i.e., prefer functions defined at the top level of a module, not inside another function or class). suffixtemplate (str): Ifcache_file_nameis specified, then this suffix will be added at the end of the base name of each. Defaults to `”{rank:05d}of{num_proc:05d}”. For example, ifcache_file_nameis "processed.arrow", then forrank=1andnum_proc=4, the resulting file would be“processed_00001_of_00004.arrow”` for the default suffix.
- إذا كانت
- new_fingerprint (
str، اختياري، القيمة الافتراضيةNone) — البصمة الجديدة للمجموعة البيانات بعد التحويل. إذا كانتNone، تُحسب البصمة الجديدة باستخدام تجزئة (hash) للبصمة السابقة، وحوامل التحويل. - desc (
str، اختياري، القيمة الافتراضيةNone) — وصف ذو معنى يُعرض إلى جانب شريط التقدم أثناء خرائط الأمثلة. - try_original_type (
Optional[bool]، القيمة الافتراضيةTrue) — حاول الحفاظ على أنواع الأعمدة الأصلية (مثل int32 -> int32). اضبطها على False إذا كنت تريد دائمًا استنتاج أنواع جديدة. - on_mixed_types (
Literal["use_json"], اختياري, القيمة الافتراضية هيNone) — إذا كانت القيمة "use_json"، يتم استخدام نوع Json() للحقول ذات الأنواع المختلطة، أي الحقول غير المهيكلة التي تحتوي على بيانات بدون مخطط مسبق التعريف. في هذه الحالة، يُضبط الحقل ذو النوع المختلط على Json().يتيح هذا تحميل قوائم تحتوي على مزيج من النصوص/الأعداد الصحيحة/الأعداد العشرية، على سبيل المثال، أو قواميس ذات أنواع قيم عشوائية.
أُضيف في 4.7.0
تطبيق دالة على جميع الأمثلة في الجدول (فرديةً أو على شكل دفعات) وتحديث الجدول. إذا كانت دالتك تُرجع عمودًا موجودًا مسبقًا، فإنها تُعيد كتابته.
يمكنك تحديد ما إذا كان ينبغي تجميع الدالة أم لا باستخدام معامل batched:
- إذا كانت
False، فإن الدالة تستقبل مثالًا واحدًا ويجب أن تُرجع مثالًا واحدًا. المثال هو قاموس، مثل{"text": "Hello there !"}. - إذا كان
Trueوbatch_sizeيساوي 1، فإن الدالة تستقبل دفعة تحتوي على مثال واحد كمدخلات ويمكنها إرجاع دفعة تحتوي على مثال واحد أو أكثر. الدفعة هي قاموس، على سبيل المثال دفعة تحتوي على مثال واحد هي{"text": ["Hello there !"]}. - إذا كان
Trueوbatch_sizeهوn > 1، فإن الدالة تستقبل دفعة منnأمثلة كمدخلات، ويمكن أن تعيد دفعة تحتوي علىnأمثلة، أو على عدد عشوائي من الأمثلة. لاحظ أن الدفعة الأخيرة قد تحتوي على أقل منnأمثلة. الدفعة هي قاموس، على سبيل المثال، دفعة منnأمثلة هي{"text": ["Hello there !"] * n}.
إذا كانت الدالة غير متزامنة، فإن map ستنفّذ دالتك بالتوازي، مع حد أقصى يبلغ ألف استدعاء متزامن.
يُوصى باستخدام asyncio.Semaphore في دالتك إذا كنت ترغب في تحديد الحد الأقصى لعدد العمليات التي يمكن تنفيذها في الوقت نفسه.
مثال:
>>> from datasets import load_dataset
>>> ds = load_dataset("cornell-movie-review-data/rotten_tomatoes", split="validation")
>>> def add_prefix(example):
... example["text"] = "Review: " + example["text"]
... return example
>>> ds = ds.map(add_prefix)
>>> ds[0:3]["text"]
['Review: compassionately explores the seemingly irreconcilable situation between conservative christian parents and their estranged gay and lesbian children .',
'Review: the soundtrack alone is worth the price of admission .',
'Review: rodriguez does a splendid job of racial profiling hollywood style--casting excellent latin actors of all ages--a trend long overdue .']
# process a batch of examples
>>> ds = ds.map(lambda example: tokenizer(example["text"]), batched=True)
# set number of processors
>>> ds = ds.map(add_prefix, num_proc=4)فلتر
< source >( function: typing.Optional[typing.Callable] = Nonewith_indices: bool = Falsewith_rank: bool = Falseinput_columns: typing.Union[str, list[str], NoneType] = Nonebatched: bool = Falsebatch_size: typing.Optional[int] = 1000keep_in_memory: bool = Falseload_from_cache_file: typing.Optional[bool] = Nonecache_file_name: typing.Optional[str] = Nonewriter_batch_size: typing.Optional[int] = 1000fn_kwargs: typing.Optional[dict] = Nonenum_proc: typing.Optional[int] = Nonesuffix_template: str = '_{rank:05d}_of_{num_proc:05d}'new_fingerprint: typing.Optional[str] = Nonedesc: typing.Optional[str] = None )
المعاملات
- function (
Callable) — دالة قابلة للاستدعاء (Callable) تحمل أحد التواقيع التالية:function(example: Dict[str, Any]) -> boolإذا كانbatched=Falseوwith_indices=Falseوwith_rank=Falsefunction(example: Dict[str, Any], *extra_args) -> boolإذا كانbatched=Falseوwith_indices=Trueو/أوwith_rank=True(حجة إضافية واحدة لكل منهما)function(batch: Dict[str, List]) -> List[bool]إذا كانbatched=Trueوwith_indices=Falseوwith_rank=Falsefunction(batch: Dict[str, List], *extra_args) -> List[bool]إذا كانbatched=Trueوwith_indices=Trueو/أوwith_rank=True(حجة إضافية واحدة لكل منهما)
إذا كانت الدالة غير متزامنة، فسيُنفّذ
filterدالتك بالتوازي. إذا لم تُوفَّر دالة، فإن القيمة الافتراضية هي دالة تُرجع دائمًاTrue:lambda x: True. - with_indices (
bool، القيمة الافتراضيةFalse) — توفير فهارس أمثلة إلىfunction. لاحظ أنه في هذه الحالة يجب أن تكون التوقيع الخاص بـfunctionهوdef function(example, idx[, rank]): .... - with_rank (
bool، القيمة الافتراضيةFalse) — توفير ترتيب العملية إلىfunction. لاحظ أنه في هذه الحالة يجب أن تكون التوقيع الخاص بـfunctionهوdef function(example[, idx], rank): .... - input_columns (
strأوList[str]، اختياري) — الأعمدة التي سيتم تمريرها إلىfunctionكحجج موضعية. إذا كانتNone، يتم تمريرdictيربط جميع الأعمدة المنسّقة كحجة واحدة. - batched (
bool، الافتراضيFalse) — تقديم دفعة من الأمثلة إلىfunction. - batch_size (
int، اختياري، القيمة الافتراضية1000) — عدد الأمثلة في كل دفعة تُمرَّر إلىfunctionإذا كانbatched = True. إذا كانbatched = False، يتم تمرير مثال واحد لكل دفعة إلىfunction. إذا كانbatch_size <= 0أوbatch_size == None، يتم تقديم مجموعة البيانات الكاملة كدفعة واحدة إلىfunction. - keep_in_memory (
bool، القيمة الافتراضيةFalse) — احتفظ بالبيانات في الذاكرة بدلاً من كتابتها في ملف مؤقت. - load_from_cache_file (
Optional[bool]، القيمة الافتراضية هيTrueإذا كان التخزين المؤقت مفعلاً) — إذا أمكن تحديد ملف تخزين مؤقت يحفظ الحساب الحالي لـfunction، فاستخدمه بدلاً من إعادة الحساب. - cache_file_name (
str، اختياري) — يُحدد اسم المسار لملف التخزين المؤقت. يُستخدم لتخزين نتائج الحساب بدلاً من اسم ملف التخزين المؤقت المولّد تلقائيًا. - writer_batch_size (
int، القيمة الافتراضية1000) — عدد الصفوف في عملية الكتابة الواحدة لكاتب ملف الكاش. تُعد هذه القيمة توازنًا جيدًا بين استهلاك الذاكرة أثناء المعالجة وسرعة المعالجة. تؤدي القيمة الأعلى إلى تقليل عمليات البحث أثناء المعالجة، بينما تستهلك القيمة الأقل ذاكرة مؤقتة أقل أثناء تشغيلmap. - fn_kwargs (
dict، اختياري) — حجج الكلمات المفتاحية التي سيتم تمريرها إلىfunction. - num_proc (
int, اختياري, القيمة الافتراضية هيNone) — عدد العمليات المستخدمة للمعالجة المتعددة. إذا كانت القيمة None أو 0، فلن تُستخدم المعالجة المتعددة وسيتم تنفيذ العملية في العملية الرئيسية. إذا كانت القيمة أكبر من 1، فسيتم استخدام عملية عاملة واحدة أو عدة عمليات عاملة لمعالجة البيانات بالتوازي. ملاحظة: يجب أن تكون الدالة المُمرَّرة إلى map() قابلة للتسلسل (picklable) لكي تعمل المعالجة المتعددة بشكل صحيح (أي، يُفضَّل استخدام الدوال المُعرَّفة في المستوى الأعلى من الوحدة، وليس داخل دالة أو فئة أخرى).- إذا كانت
Noneأو0، فلا يُستخدم تعدد العمليات، وتُنفَّذ العملية في العملية الرئيسية. - إذا كان أكبر من
1، تُستخدم عملية عامل واحدة أو عدة عمليات عامل لمعالجة البيانات بالتوازي. ملاحظة: يجب أن تكون الدالة المُمرَّرة إلىmap()قابلة للتسلسل (picklable) حتى يعمل تعدد العمليات بشكل صحيح (أي، يُفضَّل استخدام الدوال المُعرَّفة في المستوى الأعلى من الوحدة، وليس داخل دالة أو فئة أخرى).
- إذا كانت
- suffix_template (
str) — إذا تم تحديدcache_file_name، فسيتم إضافة هذا البادئة في نهاية الاسم الأساسي لكل ملف. على سبيل المثال، إذا كانcache_file_nameهو"processed.arrow"، فبالنسبة إلىrank = 1وnum_proc = 4، سيكون الملف الناتج"processed_00001_of_00004.arrow"للبادئة الافتراضية (الافتراضي_{rank:05d}_of_{num_proc:05d}). - new_fingerprint (
str، اختياري) — البصمة الجديدة للمجموعة بعد التحويل. إذا كانتNone، تُحسب البصمة الجديدة باستخدام تجزئة (hash) للبصمة السابقة وحوافز التحويل. - desc (
str، اختياري، القيمة الافتراضيةNone) — وصف ذو معنى يُعرض إلى جانب شريط التقدم أثناء تصفية الأمثلة.
تطبيق دالة تصفية على جميع العناصر في الجدول على دفعات وتحديث الجدول بحيث تتضمن مجموعة البيانات أمثلة فقط وفقاً لدالة التصفية.
إذا كانت الدالة غير متزامنة، فسيُنفّذ filter دالتك بالتوازي، مع حد أقصى يبلغ ألف استدعاء متزامن (قابل للضبط).
يُوصى باستخدام asyncio.Semaphore في دالتك إذا كنت ترغب في تحديد الحد الأقصى لعدد العمليات التي يمكن تنفيذها في الوقت نفسه.
select
< source >( indices: Iterablekeep_in_memory: bool = Falseindices_cache_file_name: typing.Optional[str] = Nonewriter_batch_size: typing.Optional[int] = 1000new_fingerprint: typing.Optional[str] = None )
المعاملات
- indices (
range،list،iterable،ndarrayأوSeries) — نطاق أو قائمة أو مصفوفة أحادية البُعد من فهارس صحيحة للترميز. إذا كانت الفهارس تتوافق مع نطاق متصل، يتم تقطيع جدول Arrow ببساطة. ومع ذلك، فإن تمرير قائمة من الفهارس غير المتصلة يُنشئ ترميزًا للفهارس، وهو أقل كفاءة بكثير، لكنه لا يزال أسرع من إعادة إنشاء جدول Arrow يتكون من الصفوف المطلوبة. - keep_in_memory (
bool، القيمة الافتراضيةFalse) — احتفظ بترتيب الفهارس في الذاكرة بدلاً من كتابته في ملف مؤقت. - indices_cache_file_name (
str، اختياري، القيمة الافتراضيةNone) — يُحدد اسم المسار لملف التخزين المؤقت. يُستخدم لتخزين تعيين الفهارس بدلاً من اسم ملف التخزين المؤقت المولّد تلقائيًا. - writer_batch_size (
int، القيمة الافتراضية1000) — عدد الصفوف في عملية الكتابة الواحدة لكاتب ملف الكاش. تُعد هذه القيمة توازنًا جيدًا بين استهلاك الذاكرة أثناء المعالجة وسرعة المعالجة. تؤدي القيمة الأعلى إلى تقليل عمليات البحث أثناء المعالجة، بينما تستهلك القيمة الأقل ذاكرة مؤقتة أقل أثناء تشغيلmap. - new_fingerprint (
str، اختياري، القيمة الافتراضيةNone) — البصمة الجديدة للمجموعة البيانات بعد التحويل. إذا كانتNone، تُحسب البصمة الجديدة باستخدام تجزئة (hash) للبصمة السابقة، وحوامل التحويل.
أنشئ مجموعة بيانات جديدة مع اختيار الصفوف وفقاً للقائمة/المصفوفة من الفهارس.
sort
< source >( column_names: typing.Union[str, collections.abc.Sequence[str]]reverse: typing.Union[bool, collections.abc.Sequence[bool]] = Falsenull_placement: str = 'at_end'keep_in_memory: bool = Falseload_from_cache_file: typing.Optional[bool] = Noneindices_cache_file_name: typing.Optional[str] = Nonewriter_batch_size: typing.Optional[int] = 1000new_fingerprint: typing.Optional[str] = None )
المعاملات
- column_names (
Union[str, Sequence[str]]) — أسماء الأعمدة التي سيتم الفرز بناءً عليها. - reverse (
Union[bool, Sequence[bool]]، القيمة الافتراضيةFalse) — إذا كانتTrue، يتم الفرز حسب الترتيب التنازلي بدلاً من التصاعدي. إذا تم تقديم قيمة bool واحدة، تُطبَّق القيمة على فرز جميع أسماء الأعمدة. وإلا، يجب تقديم قائمة من قيم bool بنفس الطول والترتيب مثل column_names. - null_placement (
str, الافتراضي هوat_end) — ضع قيمNoneفي البداية إذا كانat_startأوfirstأو في النهاية إذا كانat_endأوlastأُضيف في 1.14.2
- keep_in_memory (
bool، القيمة الافتراضيةFalse) — احتفظ بالفهارس المرتبة في الذاكرة بدلاً من كتابتها في ملف كاش. - load_from_cache_file (
Optional[bool]، القيمة الافتراضية هيTrueإذا كان التخزين المؤقت مفعلاً) — إذا أمكن تحديد ملف تخزين مؤقت يحفظ الفهارس المرتبة، فاستخدمه بدلاً من إعادة الحساب. - indices_cache_file_name (
str، اختياري، القيمة الافتراضيةNone) — يُحدد اسم المسار لملف التخزين المؤقت. يُستخدم لتخزين الفهارس المرتبة بدلاً من اسم ملف التخزين المؤقت المولّد تلقائيًا. - writer_batch_size (
int، القيمة الافتراضية1000) — عدد الصفوف في عملية الكتابة الواحدة لكاتب ملف الكاش. القيمة الأعلى تنتج ملفات كاش أصغر، بينما القيمة الأقل تستهلك ذاكرة مؤقتة أقل. - new_fingerprint (
str، اختياري، القيمة الافتراضيةNone) — البصمة الجديدة للمجموعة بعد التحويل. إذا كانتNone، تُحسب البصمة الجديدة باستخدام تجزئة (hash) للبصمة السابقة، وحوافز التحويل
أنشئ مجموعة بيانات جديدة مرتبة وفقاً لعمود واحد أو عدة أعمدة.
مثال:
>>> from datasets import load_dataset
>>> ds = load_dataset('cornell-movie-review-data/rotten_tomatoes', split='validation')
>>> ds['label'][:10]
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
>>> sorted_ds = ds.sort('label')
>>> sorted_ds['label'][:10]
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
>>> another_sorted_ds = ds.sort(['label', 'text'], reverse=[True, False])
>>> another_sorted_ds['label'][:10]
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1]shuffle
< source >( seed: typing.Optional[int] = Nonegenerator: typing.Optional[numpy.random._generator.Generator] = Nonekeep_in_memory: bool = Falseload_from_cache_file: typing.Optional[bool] = Noneindices_cache_file_name: typing.Optional[str] = Nonewriter_batch_size: typing.Optional[int] = 1000new_fingerprint: typing.Optional[str] = None )
المعاملات
- seed (
int, اختياري) — بذرة لتوليد BitGenerator الافتراضي إذا كانgenerator=None. إذا كانNone، فسيتم سحب إنتروبيا جديدة وغير متوقعة من نظام التشغيل. إذا تم تمريرintأوarray_like[ints]، فسيتم تمريرها إلى SeedSequence لاستنتاج حالة BitGenerator الأولية. - generator (
numpy.random.Generator، اختياري) — مولّد عشوائي من Numpy يُستخدم لحساب تبديل صفوف مجموعة البيانات. إذا كانgenerator=None(الافتراضي)، يُستخدمnp.random.default_rng(مولّد البتات الافتراضي (PCG64) في NumPy). - keep_in_memory (
bool، الافتراضيFalse) — احتفظ بالفهارس المُختلطة في الذاكرة بدلاً من كتابتها إلى ملف مؤقت. - load_from_cache_file (
Optional[bool]، القيمة الافتراضية هيTrueإذا كان التخزين المؤقت مفعلاً) — إذا أمكن تحديد ملف تخزين مؤقت يحفظ الفهارس المُخلوطة، فاستخدمه بدلاً من إعادة الحساب. - indices_cache_file_name (
str, اختياري) — يُحدد اسم المسار لملف التخزين المؤقت. يُستخدم لتخزين الفهارس المُختلطة بدلاً من اسم ملف التخزين المؤقت المُولَّد تلقائيًا. - writer_batch_size (
int، القيمة الافتراضية1000) — عدد الصفوف في عملية الكتابة الواحدة لكاتب ملف الكاش. تُعد هذه القيمة توازنًا جيدًا بين استهلاك الذاكرة أثناء المعالجة وسرعة المعالجة. تؤدي القيمة الأعلى إلى تقليل عمليات البحث أثناء المعالجة، بينما تستهلك القيمة الأقل ذاكرة مؤقتة أقل أثناء تشغيلmap. - new_fingerprint (
str، اختياري، القيمة الافتراضيةNone) — البصمة الجديدة للمجموعة البيانات بعد التحويل. إذا كانتNone، تُحسب البصمة الجديدة باستخدام تجزئة (hash) للبصمة السابقة، وحوامل التحويل.
أنشئ مجموعة بيانات جديدة حيث تكون الصفوف مُخلوطة.
يستخدم التجميع العشوائي حاليًا مولّدات الأرقام العشوائية من numpy. يمكنك إما تقديم مولّد بتات NumPy BitGenerator لاستخدامه، أو تقديم بذرة (seed) لبدء مولّد الأرقام العشوائية الافتراضي في NumPy (PCG64).
يقوم الخلط بأخذ قائمة الفهارس [0:len(my_dataset)] وخلطها لإنشاء تعيين للفهارس.
ومع ذلك، بمجرد أن يصبح لديك تعيين للفهارس في Dataset، قد يصبح الأداء أبطأ بعشر مرات.
وذلك لأن هناك خطوة إضافية للحصول على فهرس الصف الذي يجب قراءته باستخدام تعيين الفهارس، والأهم من ذلك أنك لم تعد تقرأ مقاطع متجاورة من البيانات.
للاستعادة السرعة، ستحتاج إلى إعادة كتابة مجموعة البيانات بأكملها على القرص مرة أخرى باستخدام Dataset.flatten_indices()، والذي يزيل تعيين الفهارس.
قد يستغرق ذلك وقتًا طويلاً اعتمادًا على حجم مجموعة البيانات الخاصة بك:
my_dataset[0] # fast
my_dataset = my_dataset.shuffle(seed=42)
my_dataset[0] # up to 10x slower
my_dataset = my_dataset.flatten_indices() # rewrite the shuffled dataset on disk as contiguous chunks of data
my_dataset[0] # fast againفي هذه الحالة، نوصي بالانتقال إلى IterableDataset والاستفادة من طريقة الخلط التقريبي السريع IterableDataset.shuffle().
إنه يعيد ترتيب الشرائح فقط ويضيف مخزن خلط إلى مجموعة بياناتك، مما يحافظ على سرعة مجموعة البيانات في أفضل حالاتها:
my_iterable_dataset = my_dataset.to_iterable_dataset(num_shards=128)
for example in enumerate(my_iterable_dataset): # fast
pass
shuffled_iterable_dataset = my_iterable_dataset.shuffle(seed=42, buffer_size=100)
for example in enumerate(shuffled_iterable_dataset): # as fast as before
passأنشئ Dataset جديدًا يتخطى أول n عناصر.
مثال:
>>> from datasets import load_dataset
>>> ds = load_dataset("cornell-movie-review-data/rotten_tomatoes", split="train")
>>> list(ds.take(3))
[{'label': 1,
'text': 'the rock is destined to be the 21st century's new " conan " and that he's going to make a splash even greater than arnold schwarzenegger , jean-claud van damme or steven segal .'},
{'label': 1,
'text': 'the gorgeously elaborate continuation of " the lord of the rings " trilogy is so huge that a column of words cannot adequately describe co-writer/director peter jackson's expanded vision of j . r . r . tolkien's middle-earth .'},
{'label': 1, 'text': 'effective but too-tepid biopic'}]
>>> ds = ds.skip(1)
>>> list(ds.take(3))
[{'label': 1,
'text': 'the gorgeously elaborate continuation of " the lord of the rings " trilogy is so huge that a column of words cannot adequately describe co-writer/director peter jackson's expanded vision of j . r . r . tolkien's middle-earth .'},
{'label': 1, 'text': 'effective but too-tepid biopic'},
{'label': 1,
'text': 'if you sometimes like to go to the movies to have fun , wasabi is a good place to start .'}]أنشئ Dataset جديدًا يحتوي على العناصر الـn الأولى فقط.
مثال:
>>> from datasets import load_dataset
>>> ds = load_dataset("cornell-movie-review-data/rotten_tomatoes", split="train")
>>> small_ds = ds.take(2)
>>> list(small_ds)
[{'label': 1,
'text': 'the rock is destined to be the 21st century's new " conan " and that he's going to make a splash even greater than arnold schwarzenegger , jean-claud van damme or steven segal .'},
{'label': 1,
'text': 'the gorgeously elaborate continuation of " the lord of the rings " trilogy is so huge that a column of words cannot adequately describe co-writer/director peter jackson's expanded vision of j . r . r . tolkien's middle-earth .'}]train_test_split
< source >( test_size: typing.Union[float, int, NoneType] = Nonetrain_size: typing.Union[float, int, NoneType] = Noneshuffle: bool = Truestratify_by_column: typing.Optional[str] = Noneseed: typing.Optional[int] = Nonegenerator: typing.Optional[numpy.random._generator.Generator] = Nonekeep_in_memory: bool = Falseload_from_cache_file: typing.Optional[bool] = Nonetrain_indices_cache_file_name: typing.Optional[str] = Nonetest_indices_cache_file_name: typing.Optional[str] = Nonewriter_batch_size: typing.Optional[int] = 1000train_new_fingerprint: typing.Optional[str] = Nonetest_new_fingerprint: typing.Optional[str] = None )
المعاملات
- test_size (
Union[float, int, None], اختياري) — حجم مجموعة الاختبار إذا كانfloat، فيجب أن يكون بين0.0و1.0ويمثل نسبة مجموعة البيانات التي سيتم تضمينها في مجموعة الاختبار. إذا كانint، فيمثل العدد المطلق لعينات الاختبار. إذا كانNone، يتم تعيين القيمة إلى مكمّل حجم التدريب. إذا كانtrain_sizeأيضًاNone، فسيتم تعيينه إلى0.25. - train_size (
Union[float, int, None]، اختياري) — حجم الجزء التدريبي إذا كانfloat، فيجب أن يكون بين0.0و1.0ويمثل نسبة مجموعة البيانات التي سيتم تضمينها في الجزء التدريبي. إذا كانint، فيمثل العدد المطلق لعينات التدريب. إذا كانNone، يتم تعيين القيمة تلقائيًا إلى مكمّل حجم الاختبار. - shuffle (
bool، اختياري، القيمة الافتراضيةTrue) — ما إذا كان سيتم خلط البيانات قبل التقسيم. - stratify_by_column (
str، اختياري، القيمة الافتراضيةNone) — اسم العمود الذي يحتوي على التسميات المستخدمة لتنفيذ التقسيم الطبقي للبيانات. - seed (
int, اختياري) — بذرة لتوليد BitGenerator الافتراضي إذا كانgenerator=None. إذا كانNone، فسيتم سحب إنتروبيا جديدة وغير متوقعة من نظام التشغيل. إذا تم تمريرintأوarray_like[ints]، فسيتم تمريرها إلى SeedSequence لاستنتاج حالة BitGenerator الأولية. - generator (
numpy.random.Generator، اختياري) — مولّد عشوائي من Numpy يُستخدم لحساب تبديل صفوف مجموعة البيانات. إذا كانgenerator=None(الافتراضي)، يُستخدمnp.random.default_rng(مولّد البتات الافتراضي (PCG64) في NumPy). - keep_in_memory (
bool، القيمة الافتراضيةFalse) — احتفظ بمؤشرات التقسيمات في الذاكرة بدلاً من كتابتها في ملف مؤقت. - load_from_cache_file (
Optional[bool]، القيمة الافتراضيةTrueإذا كان التخزين المؤقت مفعلاً) — إذا أمكن تحديد ملف تخزين مؤقت يحفظ فهارس التقسيمات، فاستخدمه بدلاً من إعادة الحساب. - train_cache_file_name (
str, اختياري) — يُحدد اسم المسار لملف التخزين المؤقت. يُستخدم لتخزين فهارس مجموعة التدريب بدلاً من اسم ملف التخزين المؤقت المولّد تلقائيًا. - test_cache_file_name (
str, اختياري) — يُحدد اسم المسار لملف الكاش. يُستخدم لتخزين فهارس مجموعة الاختبار بدلاً من اسم ملف الكاش المولّد تلقائيًا. - writer_batch_size (
int، القيمة الافتراضية1000) — عدد الصفوف في عملية الكتابة الواحدة لكاتب ملف الكاش. تُعد هذه القيمة توازنًا جيدًا بين استهلاك الذاكرة أثناء المعالجة وسرعة المعالجة. تؤدي القيمة الأعلى إلى تقليل عمليات البحث أثناء المعالجة، بينما تستهلك القيمة الأقل ذاكرة مؤقتة أقل أثناء تشغيلmap. - train_new_fingerprint (
str، اختياري، القيمة الافتراضيةNone) — البصمة الجديدة لمجموعة التدريب بعد التحويل. إذا كانتNone، تُحسب البصمة الجديدة باستخدام تجزئة (hash) للبصمة السابقة، وحجج التحويل - test_new_fingerprint (
str، اختياري، القيمة الافتراضيةNone) — البصمة الجديدة لمجموعة الاختبار بعد التحويل. إذا كانتNone، تُحسب البصمة الجديدة باستخدام تجزئة (hash) للبصمة السابقة، وحوافز التحويل
تُعيد قاموسًا (datasets.DatasetDict) يحتوي على فرعي تدريب واختبار عشوائيين (train وtest Dataset splits).
تُنشأ التقسيمات من مجموعة البيانات وفقًا لـtest_size وtrain_size وshuffle.
تتشابه هذه الطريقة مع train_test_split في scikit-learn.
مثال:
>>> from datasets import load_dataset
>>> ds = load_dataset("cornell-movie-review-data/rotten_tomatoes", split="validation")
>>> ds = ds.train_test_split(test_size=0.2, shuffle=True)
DatasetDict({
train: Dataset({
features: ['text', 'label'],
num_rows: 852
})
test: Dataset({
features: ['text', 'label'],
num_rows: 214
})
})
# set a seed
>>> ds = ds.train_test_split(test_size=0.2, seed=42)
# stratified split
>>> ds = load_dataset("stanfordnlp/imdb",split="train")
Dataset({
features: ['text', 'label'],
num_rows: 25000
})
>>> ds = ds.train_test_split(test_size=0.2, stratify_by_column="label")
DatasetDict({
train: Dataset({
features: ['text', 'label'],
num_rows: 20000
})
test: Dataset({
features: ['text', 'label'],
num_rows: 5000
})
})شَريحة
< source >( num_shards: intindex: intcontiguous: bool = Truekeep_in_memory: bool = Falseindices_cache_file_name: typing.Optional[str] = Nonewriter_batch_size: typing.Optional[int] = 1000 )
المعاملات
- num_shards (
int) — عدد الأجزاء التي سيتم تقسيم مجموعة البيانات إليها. - index (
int) — الشريحة التي يجب اختيارها وإرجاعها. - contiguous — (
bool، القيمة الافتراضيةTrue): ما إذا كان سيتم اختيار كتل متجاورة من الفهارس للتقسيمات. - keep_in_memory (
bool، القيمة الافتراضيةFalse) — احتفظ بالبيانات في الذاكرة بدلاً من كتابتها في ملف مؤقت. - indices_cache_file_name (
str، اختياري) — يُحدد اسم المسار لملف التخزين المؤقت. يُستخدم لتخزين فهارس كل شريحة بدلاً من اسم ملف التخزين المؤقت المولّد تلقائيًا. - writer_batch_size (
int، القيمة الافتراضية1000) — يخص هذا الأمر فقط خرائط الفهارس. عدد الفهارس لكل عملية كتابة في كاتب ملف الكاش. تُعد هذه القيمة توازنًا جيدًا بين استهلاك الذاكرة أثناء المعالجة، وسرعة المعالجة. تؤدي القيمة الأعلى إلى تقليل عمليات البحث أثناء المعالجة، بينما تستهلك القيمة الأقل ذاكرة مؤقتة أقل أثناء تشغيلmap.
أعد الشريحة رقم index من تقسيم مجموعة البيانات إلى num_shards أجزاء.
يُقسَّم هذا بشكل حتمي. dataset.shard(n, i) يقسم مجموعة البيانات إلى مقاطع متجاورة،
لذا يمكن إعادة دمجها بسهولة بعد المعالجة. إذا كان len(dataset) % n == l، فإن
أول l من مجموعات البيانات يكون طول كل منها (len(dataset) // n) + 1، بينما تكون مجموعات البيانات المتبقية بطول (len(dataset) // n). يعيد datasets.concatenate_datasets([dset.shard(n, i) for i in range(n)]) مجموعة بيانات بنفس ترتيب الأصل.
ملاحظة: يجب أن تكون قيمة n أقل من عدد العناصر في مجموعة البيانات len(dataset) أو تساويه.
من ناحية أخرى، يحتوي dataset.shard(n, i, contiguous=False) على جميع عناصر مجموعة البيانات التي يكون فيها الباقي عند قسمة الفهرس على n = i.
تأكد من تقسيم البيانات إلى شرائح قبل استخدام أي مشغّل عشوائي (مثل shuffle).
يُفضّل استخدام مشغّل التقسيم إلى شرائح في مرحلة مبكرة من خط أنابيب مجموعة البيانات.
أنشئ Dataset جديدًا يكرر مجموعة البيانات الأساسية num_times مرات.
مثل itertools.repeat، فإن التكرار مرة واحدة يعيد مجموعة البيانات كاملة.
مثال:
>>> from datasets import load_dataset
>>> ds = load_dataset("cornell-movie-review-data/rotten_tomatoes", split="train")
>>> ds = ds.take(2).repeat(2)
>>> list(ds)
[{'label': 1,
'text': 'the rock is destined to be the 21st century's new " conan " and that he's going to make a splash even greater than arnold schwarzenegger , jean-claud van damme or steven segal .'},
{'label': 1,
'text': 'the gorgeously elaborate continuation of " the lord of the rings " trilogy is so huge that a column of words cannot adequately describe co-writer/director peter jackson's expanded vision of j . r . r . tolkien's middle-earth .'},
{'label': 1, 'text': 'effective but too-tepid biopic'},
{'label': 1,
'text': 'the rock is destined to be the 21st century's new " conan " and that he's going to make a splash even greater than arnold schwarzenegger , jean-claud van damme or steven segal .'},
{'label': 1,
'text': 'the gorgeously elaborate continuation of " the lord of the rings " trilogy is so huge that a column of words cannot adequately describe co-writer/director peter jackson's expanded vision of j . r . r . tolkien's middle-earth .'},
{'label': 1, 'text': 'effective but too-tepid biopic'}]to_tf_dataset
< source >( batch_size: typing.Optional[int] = Nonecolumns: typing.Union[str, list[str], NoneType] = Noneshuffle: bool = Falsecollate_fn: typing.Optional[typing.Callable] = Nonedrop_remainder: bool = Falsecollate_fn_args: typing.Optional[dict[str, typing.Any]] = Nonelabel_cols: typing.Union[str, list[str], NoneType] = Noneprefetch: bool = Truenum_workers: int = 0num_test_batches: int = 20 )
المعاملات
- batch_size (
int، اختياري) — حجم الدفعات التي سيتم تحميلها من مجموعة البيانات. القيمة الافتراضية هيNone، مما يعني أن مجموعة البيانات لن تُقسَّم إلى دفعات، لكن يمكن تقسيم مجموعة البيانات المُعادَة لاحقًا باستخدامtf_dataset.batch(batch_size). - columns (
List[str]أوstr، اختياري) — أعمدة مجموعة البيانات التي سيتم تحميلها فيtf.data.Dataset. يمكن استخدام أسماء الأعمدة التي ينشئهاcollate_fnوالتي لا توجد في مجموعة البيانات الأصلية. - shuffle(
bool, الافتراضيFalse) — خلط ترتيب مجموعة البيانات عند التحميل. يُوصى باستخدامTrueللتدريب، وFalseللتحقق/التقييم. - drop_remainder(
bool, الافتراضيFalse) — تجاهل الدفعة الأخيرة غير المكتملة عند التحميل. يضمن أن تكون جميع الدفعات التي يولدها مجموعة البيانات بنفس الطول على بُعد الدفعة. - collate_fn(
Callable, اختياري) — دالة أو كائن قابل للاستدعاء (مثلDataCollator) يقوم بدمج قوائم العينات في دفعة واحدة. - collate_fn_args (
Dict, اختياري) —dictاختياري لحجج الكلمات المفتاحية التي سيتم تمريرها إلىcollate_fn. - label_cols (
List[str]أوstr، القيمة الافتراضيةNone) — أعمدة مجموعة البيانات التي سيتم تحميلها كوسوم. لاحظ أن العديد من النماذج تحسب الخسارة داخليًا بدلاً من ترك ذلك لـ Keras، وفي هذه الحالة يكون تمرير الوسوم هنا اختياريًا، طالما أنها موجودة فيcolumnsالمدخلة. - prefetch (
bool، القيمة الافتراضيةTrue) — ما إذا كان سيتم تشغيل مُحمِّل البيانات في خيط منفصل والحفاظ على مخزن مؤقت صغير للدفعات للتدريب. يحسّن الأداء من خلال السماح بتحميل البيانات في الخلفية بينما يجري تدريب النموذج. - num_workers (
int، القيمة الافتراضية0) — عدد العمال الذين سيتم استخدامهم لتحميل مجموعة البيانات. - num_test_batches (
int، القيمة الافتراضية20) — عدد الدفعات المستخدمة لاستنتاج توقيع المخرجات للمجموعة البيانات. كلما زاد هذا العدد، أصبح التوقيع أكثر دقة، لكن سيستغرق إنشاء المجموعة البيانات وقتًا أطول.
أنشئ tf.data.Dataset من مجموعة البيانات الأساسية. ستقوم هذه tf.data.Dataset بتحميل الدُفعات من مجموعة البيانات وترتيبها، وهي مناسبة للتقديم إلى طرق مثل model.fit() أو model.predict(). ستُنتج مجموعة البيانات dicts لكلٍّ من المدخلات والوسوم، ما لم تحتوي dict على مفتاح واحد فقط، وفي هذه الحالة ستُنتج tf.Tensor خام بدلاً من ذلك.
push_to_hub
< source >( repo_id: strconfig_name: str = 'default'set_default: typing.Optional[bool] = Nonesplit: typing.Optional[str] = Nonedata_dir: typing.Optional[str] = Nonecommit_message: typing.Optional[str] = Nonecommit_description: typing.Optional[str] = Noneprivate: typing.Optional[bool] = Nonetoken: typing.Optional[str] = Nonerevision: typing.Optional[str] = Nonecreate_pr: typing.Optional[bool] = Falsemax_shard_size: typing.Union[str, int, NoneType] = Nonenum_shards: typing.Optional[int] = Noneembed_external_files: bool = Truenum_proc: typing.Optional[int] = None )
المعاملات
- repo_id (
str) — معرّف المستودع الذي تريد الدفع إليه، بالصيغة التالية:<user>/<dataset_name>أو<org>/<dataset_name>. كما يقبل<dataset_name>, والذي سيُستخدم افتراضيًا نطاق المستخدم المسجّل.كما يمكن أن يكون موقعًا داخل دلو، على سبيل المثال
buckets/<user_or_org>/<bucket_name>/... - config_name (
str، القيمة الافتراضية “default”) — اسم التهيئة (أو الجزء الفرعي) لمجموعة البيانات. القيمة الافتراضية هي “default”. - set_default (
bool، اختياري) — ما إذا كان يجب تعيين هذا الإعداد كإعداد افتراضي. وإلا، فإن الإعداد الافتراضي هو ذلك المسمى بـ “default”. - split (
str، اختياري) — اسم الجزء الذي سيُمنح لذلك مجموعة البيانات. القيمة الافتراضية هيself.split. - data_dir (
str, اختياري) — اسم المجلد الذي سيحتوي على ملفات البيانات المرفوعة. القيمة الافتراضية هيconfig_nameإذا كانت مختلفة عن "default"، وإلا فهي "data".أُضيف في 2.17.0
- commit_message (
str، اختياري) — الرسالة التي سيتم الالتزام بها أثناء الدفع. ستكون الافتراضية"Upload dataset". - commit_description (
str, اختياري) — وصف للالتزام الذي سيتم إنشاؤه. بالإضافة إلى ذلك، وصف لطلب الانضمام إذا تم إنشاؤه (create_prهو True).أُضيف في 2.16.0
- private (
bool، اختياري) — ما إذا كان سيتم جعل المستودع خاصًا. إذا كانNone(الافتراضي)، فسيكون المستودع عامًا ما لم يكن الافتراضي للمنظمة هو الخاص. يتم تجاهل هذه القيمة إذا كان المستودع موجودًا بالفعل. - token (
str, اختياري) — رمز مصادقة اختياري لـ Hugging Face Hub. إذا لم يتم تمرير رمز، فسيتم افتراضياً استخدام الرمز المحفوظ محلياً عند تسجيل الدخول باستخدامhf auth login. سيُطلق خطأً إذا لم يتم تمرير رمز وكان المستخدم غير مسجّل الدخول. - revision (
str, اختياري) — الفرع الذي سيتم دفع الملفات المرفوعة إليه. الافتراضي هو الفرع"main".أُضيف في 2.15.0
- create_pr (
bool, اختياري, الافتراضي هوFalse) — ما إذا كان يجب إنشاء طلب سحب (PR) بالملفات المرفوعة أو الالتزام مباشرة.أُضيف في 2.15.0
- max_shard_size (
intأوstr، اختياري، القيمة الافتراضية"500MB") — الحد الأقصى لحجم مقاطع مجموعة البيانات التي سيتم رفعها إلى hub. إذا تم التعبير عنه كنص، فيجب أن يتكون من أرقام تليها وحدة (مثل"5MB"). - num_shards (
int, اختياري) — عدد الأجزاء التي سيتم كتابتها. بشكل افتراضي، يعتمد عدد الأجزاء علىmax_shard_size.أُضيف في 2.8.0
- embed_external_files (
bool, الافتراضي هوTrue) — ما إذا كان يجب تضمين بايتات الملفات في الشرائح. على وجه التحديد، سيقوم بذلك قبل الدفع للحقول من النوع: - num_proc (
int, اختياري, القيمة الافتراضية هيNone) — عدد العمليات عند تجهيز مجموعة البيانات ورفعها. يُفيد هذا الأمر إذا كانت مجموعة البيانات تتكون من العديد من العينات أو ملفات الوسائط المضمنة. يستخدم سياق "spawn" للعمل مع hf_xet، وهو عميل rust للرفع السريع إلى HF. تُعطَّل المعالجة متعددة العمليات افتراضيًا.أُضيف في 4.0.0
يدفع مجموعة البيانات إلى المستودع كمجموعة بيانات بصيغة Parquet. تُدفَع مجموعة البيانات باستخدام طلبات HTTP ولا تحتاج إلى تثبيت git أو git-lfs.
ملفات Parquet الناتجة مكتفية ذاتياً بشكل افتراضي. إذا احتوى مجموعة البيانات الخاصة بك على بيانات Image أو Audio أو Video، فستخزن ملفات Parquet البايتات الخاصة بصورك أو ملفات الصوت.
يمكنك تعطيل ذلك عن طريق تعيين embed_external_files إلى False.
مثال:
>>> dataset.push_to_hub("<organization>/<dataset_id>")
>>> dataset_dict.push_to_hub("<organization>/<dataset_id>", private=True)
>>> dataset.push_to_hub("<organization>/<dataset_id>", max_shard_size="1GB")
>>> dataset.push_to_hub("<organization>/<dataset_id>", num_shards=1024)إذا كانت مجموعة بياناتك تحتوي على عدة تقسيمات (مثل التدريب/التحقق/الاختبار):
>>> train_dataset.push_to_hub("<organization>/<dataset_id>", split="train")
>>> val_dataset.push_to_hub("<organization>/<dataset_id>", split="validation")
>>> # later
>>> dataset = load_dataset("<organization>/<dataset_id>")
>>> train_dataset = dataset["train"]
>>> val_dataset = dataset["validation"]إذا كنت ترغب في إضافة تكوين جديد (أو مجموعة فرعية) إلى مجموعة بيانات (على سبيل المثال، إذا كانت مجموعة البيانات تحتوي على مهام/إصدارات/لغات متعددة):
>>> english_dataset.push_to_hub("<organization>/<dataset_id>", "en")
>>> french_dataset.push_to_hub("<organization>/<dataset_id>", "fr")
>>> # later
>>> english_dataset = load_dataset("<organization>/<dataset_id>", "en")
>>> french_dataset = load_dataset("<organization>/<dataset_id>", "fr")save_to_disk
< source >( dataset_path: typing.Union[str, bytes, os.PathLike]max_shard_size: typing.Union[str, int, NoneType] = Nonenum_shards: typing.Optional[int] = Nonenum_proc: typing.Optional[int] = Nonestorage_options: typing.Optional[dict] = None )
المعاملات
- dataset_path (
path-like) — المسار (مثلdataset/train) أو عنوان URI عن بُعد (مثلs3://my-bucket/dataset/train) لمجلد مجموعة البيانات الذي سيتم حفظ مجموعة البيانات فيه. - max_shard_size (
intأوstr، اختياري، القيمة الافتراضية"500MB") — الحد الأقصى لحجم أجزاء مجموعة البيانات التي سيتم حفظها على نظام الملفات. إذا تم التعبير عنه كنص، فيجب أن يتكون من أرقام تليها وحدة (مثل"50MB"). - num_shards (
int, اختياري) — عدد الأجزاء التي سيتم كتابتها. افتراضيًا، يعتمد عدد الأجزاء علىmax_shard_sizeوnum_proc.أُضيف في 2.8.0
- num_proc (
int, اختياري) — عدد العمليات عند تنزيل مجموعة البيانات وتوليدها محليًا. تُعطَّل المعالجة متعددة العمليات افتراضيًا.أُضيف في 2.8.0
- storage_options (
dict, اختياري) — أزواج مفتاح/قيمة تُمرَّر إلى نظام الملفات الخلفي، إن وُجد.أُضيف في 2.8.0
يحفظ مجموعة بيانات في دليل مجموعات البيانات، أو في نظام ملفات باستخدام أي تطبيق من تطبيقات fsspec.spec.AbstractFileSystem.
تُخزَّن جميع بيانات Image() وAudio() وVideo() في ملفات arrow. إذا كنت ترغب في تخزين المسارات أو الروابط، فالرجاء استخدام النوع Value(“string”).
load_from_disk
< source >( dataset_path: typing.Union[str, bytes, os.PathLike]keep_in_memory: typing.Optional[bool] = Nonestorage_options: typing.Optional[dict] = None ) → Dataset or DatasetDict
المعاملات
- dataset_path (
path-like) — المسار (مثل"dataset/train") أو عنوان URI عن بُعد (مثل"s3//my-bucket/dataset/train") لمجلد مجموعة البيانات الذي سيتم تحميل المجموعة منه. - keep_in_memory (
bool، القيمة الافتراضيةNone) — ما إذا كان سيتم نسخ مجموعة البيانات في الذاكرة. إذا كانتNone، فلن يتم نسخ مجموعة البيانات في الذاكرة ما لم يتم تفعيل ذلك صراحةً عن طريق تعيينdatasets.config.IN_MEMORY_MAX_SIZEإلى قيمة غير صفرية. راجع المزيد من التفاصيل في قسم تحسين الأداء. - storage_options (
dict, اختياري) — أزواج مفتاح/قيمة تُمرَّر إلى نظام الملفات الخلفي، إن وُجد.أُضيف في 2.8.0
يعيد
- إذا كان
dataset_pathمسارًا لمجلد مجموعة بيانات، فإن مجموعة البيانات المطلوبة. - إذا كان
dataset_pathمسارًا لمجلد قاموس مجموعة بيانات، فسيتم إرجاعdatasets.DatasetDictيحتوي على كل تقسيم.
تحمّل مجموعة بيانات تم حفظها سابقًا باستخدام save_to_disk من مجلد مجموعة البيانات، أو من نظام ملفات باستخدام أي تطبيق من تطبيقات fsspec.spec.AbstractFileSystem.
flatten_indices
< source >( keep_in_memory: bool = Falsecache_file_name: typing.Optional[str] = Nonewriter_batch_size: typing.Optional[int] = 1000features: typing.Optional[datasets.features.features.Features] = Nonedisable_nullable: bool = Falsenum_proc: typing.Optional[int] = Nonenew_fingerprint: typing.Optional[str] = None )
المعاملات
- keep_in_memory (
bool، القيمة الافتراضيةFalse) — احتفظ بالبيانات في الذاكرة بدلاً من كتابتها في ملف مؤقت. - cache_file_name (
str، اختياري، الافتراضيNone) — يُحدد اسم المسار لملف الكاش. يُستخدم لتخزين نتائج الحساب بدلاً من اسم ملف الكاش المُولَّد تلقائيًا. - writer_batch_size (
int، القيمة الافتراضية1000) — عدد الصفوف في عملية الكتابة الواحدة لكاتب ملف الكاش. تُعد هذه القيمة توازنًا جيدًا بين استهلاك الذاكرة أثناء المعالجة وسرعة المعالجة. تؤدي القيمة الأعلى إلى تقليل عمليات البحث أثناء المعالجة، بينما تستهلك القيمة الأقل ذاكرة مؤقتة أقل أثناء تشغيلmap. - features (
Optional[datasets.Features]، الافتراضيNone) — استخدم Features محددة لتخزين ملف الكاش بدلاً من الملف المولّد تلقائيًا. - disable_nullable (
bool، القيمة الافتراضيةFalse) — السماح بقيم فارغة في الجدول. - num_proc (
int, اختياري، الافتراضيNone) — الحد الأقصى لعدد العمليات عند إنشاء ذاكرة التخزين المؤقت. يتم تحميل الشرائح المخزنة مسبقًا بشكل تسلسلي - new_fingerprint (
str، اختياري، القيمة الافتراضيةNone) — البصمة الجديدة للمجموعة بعد التحويل. إذا كانتNone، تُحسب البصمة الجديدة باستخدام تجزئة (hash) للبصمة السابقة، وحوافز التحويل
أنشئ مجموعة بيانات جديدة وأخزنها مؤقتًا عن طريق تسطيخ خرائط الفهارس.
to_csv
< source >( path_or_buf: typing.Union[str, bytes, os.PathLike, typing.BinaryIO]batch_size: typing.Optional[int] = Nonenum_proc: typing.Optional[int] = Nonestorage_options: typing.Optional[dict] = None**to_csv_kwargs ) → int
المعاملات
- path_or_buf (
PathLikeأوFileOrBuffer) — إما مسار إلى ملف (مثلfile.csv)، أو عنوان URI عن بُعد (مثلhf://datasets/username/my_dataset_name/data.csv)، أو BinaryIO، حيث سيتم حفظ مجموعة البيانات فيه بالتنسيق المحدد. - batch_size (
int، اختياري) — حجم الدفعة التي يتم تحميلها في الذاكرة وكتابتها دفعة واحدة. القيمة الافتراضية هيdatasets.config.DEFAULT_MAX_BATCH_SIZE. - num_proc (
int، اختياري) — عدد العمليات للمعالجة المتعددة. افتراضيًا، لا يستخدم المعالجة المتعددة. في هذه الحالة، يكون الافتراضي لـbatch_sizeهوdatasets.config.DEFAULT_MAX_BATCH_SIZE، لكن يمكنك جعله 5 أضعاف أو 10 أضعاف القيمة الافتراضية إذا كان لديك قدرة حوسبة كافية. - storage_options (
dict, اختياري) — أزواج مفتاح/قيمة تُمرَّر إلى نظام الملفات الخلفي، إن وُجد.أُضيف في 2.19.0
- **to_csv_kwargs (معلمات إضافية) —
معلمات تُمرَّر إلى pandas’s
pandas.DataFrame.to_csv.تم التغيير في 2.10.0
الآن،
indexافتراضيًاFalseإذا لم يُحدد.إذا كنت ترغب في كتابة الفهرس، فمرر
index=Trueوقم أيضًا بتعيين اسم لعمود الفهرس عن طريق تمريرindex_label.
يعيد
int
عدد الأحرف أو البايتات المكتوبة.
يُصدّر مجموعة البيانات إلى csv
to_pandas
< source >( batch_size: typing.Optional[int] = Nonebatched: bool = False )
المعاملات
- batch_size (
int, اختياري) — حجم الدُفعات (عدد الصفوف) إذا كانbatchedهوTrue. القيمة الافتراضية هيdatasets.config.DEFAULT_MAX_BATCH_SIZE. - batched (
bool) — اضبطه علىTrueلإرجاع مولّد يُخرج مجموعة البيانات على شكل دفعات منbatch_sizeصفوف. القيمة الافتراضية هيFalse(تُرجع المجموعة الكاملة مرة واحدة).
يعيد مجموعة البيانات على شكل pandas.DataFrame. كما يمكنه إرجاع مولّد (generator) لمجموعات البيانات الكبيرة.
to_dict
< source >( batch_size: typing.Optional[int] = Nonebatched: bool = False )
المعاملات
- batch_size (
int، اختياري) — حجم الدُفعات (عدد الصفوف) إذا كانbatchedهوTrue. القيمة الافتراضية هيdatasets.config.DEFAULT_MAX_BATCH_SIZE. - batched (
bool) — اضبطه علىTrueلإرجاع مولّد يُخرج مجموعة البيانات على شكل دفعات منbatch_sizeصفوف. القيمة الافتراضية هيFalse(تُرجع المجموعة الكاملة مرة واحدة).
يعيد مجموعة البيانات كقاموس بايثون. كما يمكنه إعادة مولّد لمجموعات البيانات الكبيرة.
to_json
< source >( path_or_buf: typing.Union[str, bytes, os.PathLike, typing.BinaryIO]batch_size: typing.Optional[int] = Nonenum_proc: typing.Optional[int] = Nonestorage_options: typing.Optional[dict] = None**to_json_kwargs ) → int
المعاملات
- path_or_buf (
PathLikeأوFileOrBuffer) — إما مسار إلى ملف (مثلfile.json)، أو عنوان URI عن بُعد (مثلhf://datasets/username/my_dataset_name/data.json)، أو BinaryIO، حيث سيتم حفظ مجموعة البيانات فيه بالتنسيق المحدد. - batch_size (
int، اختياري) — حجم الدفعة التي يتم تحميلها في الذاكرة وكتابتها دفعة واحدة. القيمة الافتراضية هيdatasets.config.DEFAULT_MAX_BATCH_SIZE. - num_proc (
int، اختياري) — عدد العمليات للمعالجة المتعددة. افتراضيًا، لا يستخدم المعالجة المتعددة. في هذه الحالة، يكون الافتراضي لـbatch_sizeهوdatasets.config.DEFAULT_MAX_BATCH_SIZEلكن يمكنك جعله 5 أضعاف أو 10 أضعاف القيمة الافتراضية إذا كان لديك قدرة حوسبة كافية. - storage_options (
dict, اختياري) — أزواج مفتاح/قيمة تُمرَّر إلى نظام الملفات الخلفي، إن وُجد.أُضيف في 2.19.0
- **to_json_kwargs (additional keyword arguments) —
Parameters to pass to pandas’s
pandas.DataFrame.to_json. Default arguments arelines=Trueand `orient=“records”.تم التغيير في 2.11.0
يكون الافتراضي للمعامل
indexهوFalseإذا كانorientهو"split"أو"table".إذا كنت ترغب في كتابة الفهرس، فمرر
index=True.
يعيد
int
عدد الأحرف أو البايتات المكتوبة.
تصدير مجموعة البيانات إلى JSON Lines أو JSON.
تنسيق الإخراج الافتراضي هو JSON Lines.
لتصدير إلى JSON، مرّر الحجة lines=False والقيمة المطلوبة لـ orient.
to_parquet
< source >( path_or_buf: typing.Union[str, bytes, os.PathLike, typing.BinaryIO]batch_size: typing.Optional[int] = Nonestorage_options: typing.Optional[dict] = None**parquet_writer_kwargs ) → int
المعاملات
- path_or_buf (
PathLikeأوFileOrBuffer) — إما مسار إلى ملف (مثلfile.parquet)، أو عنوان URI عن بُعد (مثلhf://datasets/username/my_dataset_name/data.parquet)، أو BinaryIO، حيث سيتم حفظ مجموعة البيانات فيه بالتنسيق المحدد. - batch_size (
int، اختياري) — حجم الدفعة التي يتم تحميلها في الذاكرة وكتابتها دفعة واحدة. افتراضيًا، يستهدف مجموعات صفوف بحجم بايت غير مضغوط أقصى قدره “100MB”، المعرّف بواسطةdatasets.config.MAX_ROW_GROUP_SIZE. - storage_options (
dict, اختياري) — أزواج مفتاح/قيمة تُمرَّر إلى نظام الملفات الخلفي، إن وُجد.أُضيف في 2.19.0
- **parquet_writer_kwargs (معلمات إضافية) —
معلمات تُمرَّر إلى
pyarrow.parquet.ParquetWriterفي PyArrow.
يعيد
int
عدد الأحرف أو البايتات المكتوبة.
يُصدّر مجموعة البيانات إلى parquet
to_sql
< source >( name: strcon: typing.Union[str, ForwardRef('sqlalchemy.engine.Connection'), ForwardRef('sqlalchemy.engine.Engine'), ForwardRef('sqlite3.Connection')]batch_size: typing.Optional[int] = Nonenum_proc: typing.Optional[int] = None**sql_writer_kwargs ) → int
المعاملات
- name (
str) — اسم جدول SQL. - con (
strأوsqlite3.Connectionأوsqlalchemy.engine.Connectionأوsqlalchemy.engine.Connection) — سلسلة URI أو كائن اتصال SQLite3/SQLAlchemy يُستخدم للكتابة إلى قاعدة بيانات. - batch_size (
int، اختياري) — حجم الدفعة التي يتم تحميلها في الذاكرة وكتابتها دفعة واحدة. القيمة الافتراضية هيdatasets.config.DEFAULT_MAX_BATCH_SIZE. - num_proc (
int، اختياري) — عدد العمليات للمعالجة المتعددة. افتراضيًا، لا يستخدم المعالجة المتعددة. في هذه الحالة، يكون الافتراضي لـbatch_sizeهوdatasets.config.DEFAULT_MAX_BATCH_SIZEلكن يمكنك جعله 5 أضعاف أو 10 أضعاف القيمة الافتراضية إذا كان لديك قدرة حوسبة كافية. - **sql_writer_kwargs (معلمات إضافية) —
معلمات تُمرَّر إلى pandas
pandas.DataFrame.to_sql.تم التغيير في 2.11.0
الآن،
indexافتراضيًاFalseإذا لم يُحدد.إذا كنت ترغب في كتابة الفهرس، فمرر
index=Trueوقم أيضًا بتعيين اسم لعمود الفهرس عن طريق تمريرindex_label.
يعيد
int
عدد السجلات المكتوبة.
يُصدِّر مجموعة البيانات إلى قاعدة بيانات SQL.
to_iterable_dataset
< source >( num_shards: typing.Optional[int] = 1 )
المعاملات
- num_shards (
int، القيمة الافتراضية1) — عدد الأجزاء (shards) التي يجب تحديدها عند إنشاء مجموعة البيانات القابلة للتكرار. هذا مفيد بشكل خاص للمجموعات الكبيرة من البيانات لتمكين الخلط بشكل صحيح، وأيضًا لتفعيل التحميل المتوازي السريع باستخدام PyTorch DataLoader أو في الإعدادات الموزعة على سبيل المثال. يتم تعريف الأجزاء باستخدام datasets.Dataset.shard(): فهي ببساطة تقطع البيانات دون كتابة أي شيء على القرص.
احصل على datasets.IterableDataset من datasets.Dataset بنمط الخريطة. هذا يعادل تحميل مجموعة بيانات في وضع البث باستخدام datasets.load_dataset()، لكنه أسرع بكثير لأن البيانات تُبث من ملفات محلية.
على عكس مجموعات البيانات ذات النمط الخرائطي، تكون مجموعات البيانات القابلة للتكرار كسولة (lazy) ولا يمكن التكرار عليها فقط (مثل استخدام حلقة for). بما أنها تُقرأ بشكل تسلسلي في حلقات التدريب، فإن مجموعات البيانات القابلة للتكرار أسرع بكثير من مجموعات البيانات ذات النمط الخرائطي. جميع التحويلات المطبقة على مجموعات البيانات القابلة للتكرار، مثل التصفية أو المعالجة، تتم على الفور عند بدء التكرار على مجموعة البيانات.
ومع ذلك، من الممكن خلط مجموعة بيانات قابلة للتكرار باستخدام datasets.IterableDataset.shuffle(). وهذا خلط تقريبي سريع يعمل بشكل أفضل إذا كان لديك عدة شظايا (shards) وإذا حددت حجم مخزن مؤقت كبير بما يكفي.
للحصول على أفضل أداء في السرعة، تأكد من أن مجموعة البيانات الخاصة بك لا تحتوي على تعيين للفهارس.
إذا كان الأمر كذلك، فإن البيانات لا تُقرأ بشكل متتابع، مما قد يؤدي إلى بطء أحياناً.
يمكنك استخدام ds = ds.flatten_indices() لكتابة مجموعة البيانات الخاصة بك في كتل متتالية من البيانات والحصول على سرعة مثالية قبل الانتقال إلى مجموعة بيانات قابلة للتكرار.
مثال:
مع التصفية والمعالجة الكسولة:
>>> ids = ds.to_iterable_dataset()
>>> ids = ids.filter(filter_fn).map(process_fn) # will filter and process on-the-fly when you start iterating over the iterable dataset
>>> for example in ids:
... passمع التقسيم (Sharding) لتفعيل الخلط (Shuffling) بكفاءة:
>>> ids = ds.to_iterable_dataset(num_shards=64) # the dataset is split into 64 shards to be iterated over
>>> ids = ids.shuffle(buffer_size=10_000) # will shuffle the shards order and use a shuffle buffer for fast approximate shuffling when you start iterating
>>> for example in ids:
... passمع PyTorch DataLoader:
>>> import torch
>>> ids = ds.to_iterable_dataset(num_shards=64)
>>> ids = ids.filter(filter_fn).map(process_fn)
>>> dataloader = torch.utils.data.DataLoader(ids, num_workers=4) # will assign 64 / 4 = 16 shards to each worker to load, filter and process when you start iterating
>>> for example in ids:
... passمع PyTorch DataLoader وshuffling:
>>> import torch
>>> ids = ds.to_iterable_dataset(num_shards=64)
>>> ids = ids.shuffle(buffer_size=10_000) # will shuffle the shards order and use a shuffle buffer when you start iterating
>>> dataloader = torch.utils.data.DataLoader(ids, num_workers=4) # will assign 64 / 4 = 16 shards from the shuffled list of shards to each worker when you start iterating
>>> for example in ids:
... passفي إعداد موزّع مثل PyTorch DDP مع PyTorch DataLoader و
>>> from datasets.distributed import split_dataset_by_node
>>> ids = ds.to_iterable_dataset(num_shards=512)
>>> ids = ids.shuffle(buffer_size=10_000, seed=42) # will shuffle the shards order and use a shuffle buffer when you start iterating
>>> ids = split_dataset_by_node(ds, world_size=8, rank=0) # will keep only 512 / 8 = 64 shards from the shuffled lists of shards when you start iterating
>>> dataloader = torch.utils.data.DataLoader(ids, num_workers=4) # will assign 64 / 4 = 16 shards from this node's list of shards to each worker when you start iterating
>>> for example in ids:
... passمع الخلط وعشرات الحقب المتعددة:
>>> ids = ds.to_iterable_dataset(num_shards=64)
>>> ids = ids.shuffle(buffer_size=10_000, seed=42) # will shuffle the shards order and use a shuffle buffer when you start iterating
>>> for epoch in range(n_epochs):
... ids.set_epoch(epoch) # will use effective_seed = seed + epoch to shuffle the shards and for the shuffle buffer when you start iterating
... for example in ids:
... passadd_faiss_index
< source >( column: strindex_name: typing.Optional[str] = Nonedevice: typing.Optional[int] = Nonestring_factory: typing.Optional[str] = Nonemetric_type: typing.Optional[int] = Nonecustom_index: typing.Optional[ForwardRef('faiss.Index')] = Nonebatch_size: int = 1000train_size: typing.Optional[int] = Nonefaiss_verbose: bool = Falsedtype = <class 'numpy.float32'> )
المعاملات
- column (
str) — عمود المتجهات التي سيتم إضافتها إلى الفهرس. - index_name (
str، اختياري) — اسمindex_name/المعرّف الخاص بالفهرس. هذا هوindex_nameالذي يُستخدم لاستدعاء get_nearest_examples() أو search(). افتراضيًا، يتوافق معcolumn. - device (
Union[int, List[int]], اختياري) — إذا كان عددًا صحيحًا موجبًا، فهو فهرس وحدة معالجة الرسوميات (GPU) المراد استخدامها. إذا كان عددًا صحيحًا سالبًا، فسيتم استخدام جميع وحدات معالجة الرسوميات. إذا تم تمرير قائمة من الأعداد الصحيحة الموجبة، فسيتم التشغيل على تلك الوحدات فقط. افتراضيًا، يتم استخدام وحدة المعالجة المركزية (CPU). - string_factory (
str، اختياري) — يُمرَّر هذا إلى مصنع الفهرس الخاص بـ Faiss لإنشاء الفهرس. فئة الفهرس الافتراضية هيIndexFlat. - metric_type (
int، اختياري) — نوع المقياس. مثال:faiss.METRIC_INNER_PRODUCTأوfaiss.METRIC_L2. - custom_index (
faiss.Index، اختياري) — فهرس Faiss مخصص سبق أن أنشأته وضبطته بما يناسب احتياجاتك. - batch_size (
int) — حجم الدفعة المستخدمة عند إضافة المتجهات إلىFaissIndex. القيمة الافتراضية هي1000.أُضيف في 2.4.0
- train_size (
int، اختياري) — إذا كانت الفهرسة تتطلب خطوة تدريب، يحدد عدد المتجهات التي ستُستخدم لتدريب الفهرس. - faiss_verbose (
bool، القيمة الافتراضيةFalse) — تفعيل تفصيلية فهرس Faiss. - dtype (
data-type) — نوع البيانات (dtype) لمصفوفات numpy التي يتم فهرستها. القيمة الافتراضية هيnp.float32.
أضف فهرسًا كثيفًا باستخدام Faiss للاسترجاع السريع.
بشكل افتراضي، يتم إنشاء الفهرس على متجهات العمود المحدد.
يمكنك تحديد device إذا كنت ترغب في تشغيله على وحدة معالجة الرسوميات (device يجب أن يكون فهرس وحدة معالجة الرسوميات).
يمكنك العثور على مزيد من المعلومات حول Faiss هنا:
مثال:
>>> ds = datasets.load_dataset('community-datasets/crime_and_punish', split='train')
>>> ds_with_embeddings = ds.map(lambda example: {'embeddings': embed(example['line']}))
>>> ds_with_embeddings.add_faiss_index(column='embeddings')
>>> # query
>>> scores, retrieved_examples = ds_with_embeddings.get_nearest_examples('embeddings', embed('my new query'), k=10)
>>> # save index
>>> ds_with_embeddings.save_faiss_index('embeddings', 'my_index.faiss')
>>> ds = datasets.load_dataset('community-datasets/crime_and_punish', split='train')
>>> # load index
>>> ds.load_faiss_index('embeddings', 'my_index.faiss')
>>> # query
>>> scores, retrieved_examples = ds.get_nearest_examples('embeddings', embed('my new query'), k=10)add_faiss_index_from_external_arrays
< source >( external_arrays: arrayindex_name: strdevice: typing.Optional[int] = Nonestring_factory: typing.Optional[str] = Nonemetric_type: typing.Optional[int] = Nonecustom_index: typing.Optional[ForwardRef('faiss.Index')] = Nonebatch_size: int = 1000train_size: typing.Optional[int] = Nonefaiss_verbose: bool = Falsedtype = <class 'numpy.float32'> )
المعاملات
- external_arrays (
np.array) — إذا كنت ترغب في استخدام مصفوفات من خارج المكتبة للفهرس، يمكنك تعيينexternal_arrays. سيتم استخدامexternal_arraysلإنشاء فهرس Faiss بدلاً من المصفوفات الموجودة فيcolumnالمحدد. - index_name (
str) — اسمindex_name/المعرّف الخاص بالفهرس. هذا هوindex_nameالذي يُستخدم لاستدعاء get_nearest_examples() أو search(). - device (اختياري
Union[int, List[int]], اختياري) — إذا كان عددًا صحيحًا موجبًا، فهو فهرس وحدة معالجة الرسوميات (GPU) التي سيتم استخدامها. إذا كان عددًا صحيحًا سالبًا، فسيتم استخدام جميع وحدات معالجة الرسوميات. إذا تم تمرير قائمة من الأعداد الصحيحة الموجبة، فسيتم التشغيل على تلك الوحدات فقط. افتراضيًا، يتم استخدام وحدة المعالجة المركزية (CPU). - string_factory (
str، اختياري) — يُمرَّر هذا إلى مصنع الفهرس الخاص بـ Faiss لإنشاء الفهرس. فئة الفهرس الافتراضية هيIndexFlat. - metric_type (
int، اختياري) — نوع المقياس. مثال:faiss.faiss.METRIC_INNER_PRODUCTأوfaiss.METRIC_L2. - custom_index (
faiss.Index، اختياري) — فهرس Faiss مخصص سبق أن أنشأته وضبطته بما يناسب احتياجاتك. - batch_size (
int, اختياري) — حجم الدفعة المستخدمة عند إضافة المتجهات إلى FaissIndex. القيمة الافتراضية هي 1000.أُضيف في 2.4.0
- train_size (
int، اختياري) — إذا كانت الفهرسة تتطلب خطوة تدريب، يحدد عدد المتجهات التي ستُستخدم لتدريب الفهرس. - faiss_verbose (
bool، القيمة الافتراضية False) — تفعيل تفصيلية فهرس Faiss. - dtype (
numpy.dtype) — نوع البيانات (dtype) لمصفوفات numpy التي يتم فهرستها. القيمة الافتراضية هي np.float32.
أضف فهرسًا كثيفًا باستخدام Faiss للاسترجاع السريع.
يتم إنشاء الفهرس باستخدام متجهات external_arrays.
يمكنك تحديد device إذا كنت ترغب في تشغيله على وحدة معالجة الرسوميات (device يجب أن يكون فهرس وحدة معالجة الرسوميات).
يمكنك العثور على مزيد من المعلومات حول Faiss هنا:
save_faiss_index
< source >( index_name: strfile: typing.Union[str, pathlib.PurePath]storage_options: typing.Optional[dict] = None )
المعاملات
- index_name (
str) — اسم فهرسة/معرّف الفهرس. هذا هو index_name الذي يُستخدم لاستدعاء.get_nearestأو.search. - file (
str) — المسار إلى فهرس faiss المُسلسَل على القرص أو عنوان URI عن بُعد (مثل"s3://my-bucket/index.faiss"). - storage_options (
dict, اختياري) — أزواج مفتاح/قيمة تُمرَّر إلى نظام الملفات الخلفي، إن وُجد.أُضيف في 2.11.0
احفظ FaissIndex على القرص.
load_faiss_index
< source >( index_name: strfile: typing.Union[str, pathlib.PurePath]device: typing.Union[int, list[int], NoneType] = Nonestorage_options: typing.Optional[dict] = None )
المعاملات
- index_name (
str) — اسم فهرسة/معرّف الفهرس. هذا هو index_name الذي يُستخدم لاستدعاء.get_nearestأو.search. - file (
str) — المسار إلى فهرس faiss المُسلسَل على القرص أو عنوان URI عن بُعد (مثل"s3://my-bucket/index.faiss"). - device (اختياري
Union[int, List[int]]) — إذا كان عددًا صحيحًا موجبًا، فهو فهرس وحدة معالجة الرسوميات (GPU) التي سيتم استخدامها. إذا كان عددًا صحيحًا سالبًا، فسيتم استخدام جميع وحدات معالجة الرسوميات. إذا تم تمرير قائمة من الأعداد الصحيحة الموجبة، فسيتم التشغيل على تلك الوحدات فقط. افتراضيًا، يتم استخدام وحدة المعالجة المركزية (CPU). - storage_options (
dict, اختياري) — أزواج مفتاح/قيمة تُمرَّر إلى نظام الملفات الخلفي، إن وُجد.أُضيف في 2.11.0
تحميل FaissIndex من القرص.
إذا كنت ترغب في إجراء تكوينات إضافية، يمكنك الوصول إلى كائن فهرس faiss من خلال تنفيذ .get_index(index_name).faiss_index لتكييفه مع احتياجاتك.
add_elasticsearch_index
< source >( column: strindex_name: typing.Optional[str] = Nonehost: typing.Optional[str] = Noneport: typing.Optional[int] = Nonees_client: typing.Optional[ForwardRef('elasticsearch.Elasticsearch')] = Nonees_index_name: typing.Optional[str] = Nonees_index_config: typing.Optional[dict] = None )
المعاملات
- column (
str) — عمود المستندات التي يجب إضافتها إلى الفهرس. - index_name (
str، اختياري) — اسمindex_name/المعرّف الخاص بالفهرس. هذا هو اسم الفهرس الذي يُستخدم لاستدعاء get_nearest_examples() أو search(). افتراضيًا، يتوافق معcolumn. - host (
str، اختياري، الافتراضيlocalhost) — المضيف الذي يعمل عليه ElasticSearch. - port (
str، اختياري، القيمة الافتراضية9200) — منفذ تشغيل ElasticSearch. - es_client (
elasticsearch.Elasticsearch، اختياري) — عميل elasticsearch المستخدم لإنشاء الفهرس إذا كانت host و port قيمتهماNone. - es_index_name (
str، اختياري) — اسم فهرس elasticsearch المستخدم لإنشاء الفهرس. - es_index_config (
dict، اختياري) — إعدادات فهرس elasticsearch. الإعداد الافتراضي هو:
أضف فهرسًا نصيًا باستخدام ElasticSearch للاسترجاع السريع. يتم ذلك في الموقع نفسه.
مثال:
>>> es_client = elasticsearch.Elasticsearch()
>>> ds = datasets.load_dataset('community-datasets/crime_and_punish', split='train')
>>> ds.add_elasticsearch_index(column='line', es_client=es_client, es_index_name="my_es_index")
>>> scores, retrieved_examples = ds.get_nearest_examples('line', 'my new query', k=10)load_elasticsearch_index
< source >( index_name: stres_index_name: strhost: typing.Optional[str] = Noneport: typing.Optional[int] = Nonees_client: typing.Optional[ForwardRef('Elasticsearch')] = Nonees_index_config: typing.Optional[dict] = None )
المعاملات
- index_name (
str) — اسمindex_name/المعرّف الخاص بالفهرس. هذا هو اسم الفهرس الذي يُستخدم لاستدعاءget_nearestأوsearch. - es_index_name (
str) — اسم فهرس elasticsearch الذي سيتم تحميله. - host (
str، اختياري، الافتراضيlocalhost) — المضيف الذي يعمل عليه ElasticSearch. - port (
str، اختياري، القيمة الافتراضية9200) — منفذ تشغيل ElasticSearch. - es_client (
elasticsearch.Elasticsearch، اختياري) — عميل elasticsearch المستخدم لإنشاء الفهرس إذا كانت host و port قيمتهماNone. - es_index_config (
dict، اختياري) — إعدادات فهرس elasticsearch. الإعداد الافتراضي هو:
قم بتحميل فهرس نصي موجود باستخدام ElasticSearch للاسترجاع السريع.
colindex_nameumns/أعدّ قائمة بالمعرّفات لجميع الفهارس المرفقة.
قائمة index_name/المعرّفات لجميع الفهارس المرفقة.
drop_index
< source >( index_name: str )
احذف المؤشر بالعمود المحدد.
بحث
< source >( index_name: strquery: typing.Union[str, <built-in function array>]k: int = 10**kwargs ) → (scores, indices)
المعاملات
- index_name (
str) — اسم/معرّف الفهرس. - query (
Union[str, np.ndarray]) — الاستعلام كنص إذا كانindex_nameفهرسًا نصيًا، أو كمصفوفة numpy إذا كانindex_nameفهرسًا متجهيًا. - k (
int) — عدد الأمثلة المطلوب استرجاعها.
يعيد
(scores, indices)
سلسلة من (scores, indices) حيث:
- scores (
List[List[float]): درجات الاسترجاع من FAISS (افتراضيًاIndexFlatL2) أو ElasticSearch للأمثلة المسترجعة - indices (
List[List[int]]): فهارس الأمثلة المسترجعة
find_nearest_examples_indices
search_batch
< source >( index_name: strqueries: typing.Union[list[str], <built-in function array>]k: int = 10**kwargs ) → (total_scores, total_indices)
المعاملات
- index_name (
str) — اسمindex_name/المعرّف الخاص بالفهرس. - queries (
Union[List[str], np.ndarray]) — الاستعلامات كقائمة من النصوص إذا كانindex_nameفهرسًا نصيًا، أو كمصفوفة numpy إذا كانindex_nameفهرسًا متجهيًا. - k (
int) — عدد الأمثلة التي يجب استرجاعها لكل استعلام.
يعيد
(total_scores, total_indices)
سلسلة من (total_scores, total_indices) حيث:
- total_scores (
List[List[float]): درجات الاسترجاع من FAISS (افتراضيًاIndexFlatL2) أو ElasticSearch للأمثلة المسترجعة لكل استعلام - total_indices (
List[List[int]]): فهارس الأمثلة المسترجعة لكل استعلام
find_nearest_examples_indices
get_nearest_examples
< source >( index_name: strquery: typing.Union[str, <built-in function array>]k: int = 10**kwargs ) → (scores, examples)
المعاملات
- index_name (
str) — اسم فهرسة/معرّف الفهرس. - query (
Union[str, np.ndarray]) — الاستعلام كنص إذا كانindex_nameفهرسًا نصيًا، أو كمصفوفة numpy إذا كانindex_nameفهرسًا متجهيًا. - k (
int) — عدد الأمثلة المطلوب استرجاعها.
يعيد
(scores, examples)
سلسلة من (scores, examples) حيث:
- scores (
List[float]): درجات الاسترجاع من FAISS (افتراضيًاIndexFlatL2) أو ElasticSearch للأمثلة المسترجعة - أمثلة (
dict): الأمثلة المسترجعة
ابحث عن أقرب الأمثلة في مجموعة البيانات إلى الاستعلام.
get_nearest_examples_batch
< source >( index_name: strqueries: typing.Union[list[str], <built-in function array>]k: int = 10**kwargs ) → (total_scores, total_examples)
المعاملات
- index_name (
str) — اسمindex_name/المعرّف الخاص بالفهرس. - queries (
Union[List[str], np.ndarray]) — الاستعلامات كقائمة من النصوص إذا كانindex_nameفهرسًا نصيًا، أو كمصفوفة numpy إذا كانindex_nameفهرسًا متجهيًا. - k (
int) — عدد الأمثلة التي يجب استرجاعها لكل استعلام.
يعيد
(total_scores, total_examples)
سلسلة من (total_scores, total_examples) حيث:
- total_scores (
List[List[float]): درجات الاسترجاع من FAISS (افتراضيًاIndexFlatL2) أو ElasticSearch للأمثلة المسترجعة لكل استعلام - total_examples (
List[dict]): الأمثلة المسترجعة لكل استعلام
ابحث عن أقرب الأمثلة في مجموعة البيانات إلى الاستعلام.
كائن DatasetInfo يحتوي على جميع البيانات الوصفية في مجموعة البيانات.
كائن NamedSplit يقابل تقسيماً مسمّى من مجموعة البيانات.
from_csv
< source >( path_or_paths: typing.Union[str, bytes, os.PathLike, list[typing.Union[str, bytes, os.PathLike]]]split: typing.Optional[datasets.splits.NamedSplit] = Nonefeatures: typing.Optional[datasets.features.features.Features] = Nonecache_dir: str = Nonekeep_in_memory: bool = Falsenum_proc: typing.Optional[int] = None**kwargs )
المعاملات
- path_or_paths (
path-likeأو قائمة منpath-like) — مسار أو مسارات ملفات CSV. - split (NamedSplit، اختياري) — اسم التقسيم الذي سيُسند إلى مجموعة البيانات.
- features (Features، اختياري) — مميزات مجموعة البيانات.
- cache_dir (
str، اختياري، الافتراضي"~/.cache/huggingface/datasets") — المجلد الذي يُخزَّن فيه البيانات مؤقتًا. - keep_in_memory (
bool، القيمة الافتراضيةFalse) — ما إذا كان سيتم نسخ البيانات في الذاكرة. - num_proc (
int, اختياري, الافتراضي هوNone) — عدد العمليات عند تنزيل مجموعة البيانات وتوليدها محليًا. يكون هذا مفيدًا إذا كانت مجموعة البيانات مكوّنة من ملفات متعددة. يتم تعطيل تعدد العمليات افتراضيًا.أُضيف في 2.8.0
- **kwargs (معلمات إضافية بالكلمات المفتاحية) —
معلمات بالكلمات المفتاحية تُمرَّر إلى
pandas.read_csv.
إنشاء مجموعة بيانات من ملف أو ملفات CSV.
اقرأ ملفات CSV، وخزّن البيانات بصيغة Arrow على القرص، ثم أعد Dataset من بيانات Arrow المخرجة في الذاكرة على القرص.
from_json
< source >( path_or_paths: typing.Union[str, bytes, os.PathLike, list[typing.Union[str, bytes, os.PathLike]]]split: typing.Optional[datasets.splits.NamedSplit] = Nonefeatures: typing.Optional[datasets.features.features.Features] = Nonecache_dir: str = Nonekeep_in_memory: bool = Falsefield: typing.Optional[str] = Nonenum_proc: typing.Optional[int] = None**kwargs )
المعاملات
- path_or_paths (
path-likeأو قائمة منpath-like) — مسار أو مسارات ملفات JSON أو JSON Lines. - split (NamedSplit، اختياري) — اسم التقسيم الذي سيُسند إلى مجموعة البيانات.
- features (Features، اختياري) — مميزات مجموعة البيانات.
- cache_dir (
str، اختياري، الافتراضي"~/.cache/huggingface/datasets") — المجلد الذي يُخزَّن فيه البيانات مؤقتًا. - keep_in_memory (
bool، القيمة الافتراضيةFalse) — ما إذا كان سيتم نسخ البيانات في الذاكرة. - field (
str، اختياري) — اسم الحقل في ملف JSON الذي يحتوي على مجموعة البيانات. - num_proc (
int, اختياري الافتراضي هوNone) — عدد العمليات عند تنزيل مجموعة البيانات وتوليدها محليًا. يكون هذا مفيدًا إذا كانت مجموعة البيانات مكوّنة من ملفات متعددة. يتم تعطيل تعدد العمليات افتراضيًا.أُضيف في 2.8.0
- **kwargs (معلمات إضافية بالكلمات المفتاحية) —
معلمات بالكلمات المفتاحية تُمرَّر إلى
JsonConfig.
إنشاء مجموعة بيانات من ملف أو ملفات بصيغة JSON أو JSON Lines.
اقرأ ملفات JSON، وخزّن البيانات بصيغة Arrow على القرص، ثم أعد Dataset من بيانات Arrow المخرجة في الذاكرة على القرص.
from_parquet
< source >( path_or_paths: typing.Union[str, bytes, os.PathLike, list[typing.Union[str, bytes, os.PathLike]]]split: typing.Optional[datasets.splits.NamedSplit] = Nonefeatures: typing.Optional[datasets.features.features.Features] = Nonecache_dir: str = Nonekeep_in_memory: bool = Falsecolumns: typing.Optional[list[str]] = Nonenum_proc: typing.Optional[int] = Nonefilters: typing.Union[pyarrow._compute.Expression, list[tuple], list[list[tuple]], NoneType] = Nonefragment_scan_options: typing.Optional[pyarrow._dataset_parquet.ParquetFragmentScanOptions] = Noneon_bad_files: typing.Literal['error', 'warn', 'skip'] = 'error'**kwargs )
المعاملات
- path_or_paths (
path-likeأو قائمة منpath-like) — مسار أو مسارات ملفات Parquet. - split (
NamedSplit، اختياري) — اسم التقسيم الذي سيُسند إلى مجموعة البيانات. - features (
Features، اختياري) — مميزات مجموعة البيانات. - cache_dir (
str، اختياري، الافتراضي"~/.cache/huggingface/datasets") — المجلد الذي يُخزَّن فيه البيانات مؤقتًا. - keep_in_memory (
bool، القيمة الافتراضيةFalse) — ما إذا كان سيتم نسخ البيانات في الذاكرة. - columns (
List[str]، اختياري) — إذا لم يكنNone، فسيتم قراءة هذه الأعمدة فقط من الملف. قد يكون اسم العمدة بادئة لحقل متداخل، على سبيل المثال، ‘a’ سيحدد ‘a.b’ و ‘a.c’ و ‘a.d.e’. - num_proc (
int, اختياري, الافتراضي هوNone) — عدد العمليات عند تنزيل مجموعة البيانات وتوليدها محليًا. يكون هذا مفيدًا إذا كانت مجموعة البيانات مكوّنة من ملفات متعددة. يتم تعطيل تعدد العمليات افتراضيًا.أُضيف في 2.8.0
- filters (
Union[pyarrow.dataset.Expression, list[tuple], list[list[tuple]]]، اختياري) — إرجاع الصفوف المطابقة للمرشّح فقط. إذا كان ذلك ممكنًا، فسيتم دفع الشرط إلى الأسفل لاستغلال معلومات التقسيم أو البيانات الوصفية الداخلية الموجودة في مصدر البيانات، مثل إحصاءات Parquet. وإلا، فسيتم تصفية دفعات السجلات (RecordBatches) المحمّلة قبل تسليمها. - fragment_scan_options (
pyarrow.dataset.ParquetFragmentScanOptions, اختياري) — خيارات محددة للمسح الخاصة بقطع Parquet. هذا مفيد بشكل خاص لتكوين التخزين المؤقت والتخزين في الذاكرة.أُضيف في 4.2.0
- on_bad_files (
Literal["error", "warn", "skip"], اختياري, القيمة الافتراضية هي "error") — حدد الإجراء المتخذ عند مواجهة ملف معطوب (ملف لا يمكن قراءته). القيم المسموح بها هي:- ‘error’، ترمي استثناءً عند مواجهة ملف غير صالح.
- ‘warn’، إصدار تحذير عند مواجهة ملف غير صالح وتخطي ذلك الملف.
- ‘skip’، تخطي الملفات المعيبة دون رفع استثناء أو إصدار تحذير عند مواجهتها.
أُضيف في 4.2.0
- **kwargs (معلمات إضافية بالكلمات المفتاحية) —
معلمات بالكلمات المفتاحية تُمرَّر إلى
ParquetConfig.
إنشاء مجموعة بيانات من ملف أو ملفات Parquet.
اقرأ ملفات Parquet، وخزّن البيانات بصيغة Arrow على القرص، ثم أعد Dataset من بيانات Arrow المرمّزة في الذاكرة على القرص.
from_text
< source >( path_or_paths: typing.Union[str, bytes, os.PathLike, list[typing.Union[str, bytes, os.PathLike]]]split: typing.Optional[datasets.splits.NamedSplit] = Nonefeatures: typing.Optional[datasets.features.features.Features] = Nonecache_dir: str = Nonekeep_in_memory: bool = Falsenum_proc: typing.Optional[int] = Nonekeep_linebreaks: bool = Falsesample_by: typing.Literal['line', 'paragraph', 'document'] = 'line'**kwargs )
المعاملات
- path_or_paths (
path-likeأو قائمة منpath-like) — مسار(ات) ملف(ات) النص. - split (
NamedSplit، اختياري) — اسم التقسيم الذي سيُسند إلى مجموعة البيانات. - features (
Features، اختياري) — مميزات مجموعة البيانات. - cache_dir (
str، اختياري، الافتراضي"~/.cache/huggingface/datasets") — المجلد الذي يُخزَّن فيه البيانات مؤقتًا. - keep_in_memory (
bool، القيمة الافتراضيةFalse) — ما إذا كان سيتم نسخ البيانات في الذاكرة. - num_proc (
int, اختياري, الافتراضي هوNone) — عدد العمليات عند تنزيل مجموعة البيانات وتوليدها محليًا. يكون هذا مفيدًا إذا كانت مجموعة البيانات مكوّنة من ملفات متعددة. يتم تعطيل تعدد العمليات افتراضيًا.أُضيف في 2.8.0
- keep_linebreaks — (
bool، الافتراضي False): ما إذا كان سيتم الإبقاء على علامات تبديل السطر. - sample_by (
Literal["line", "paragraph", "document"])، القيمة الافتراضية هي “line”) — ما إذا كان سيتم تحميل البيانات سطرًا سطرًا، أو فقرةً فقرةً، أو مستندًا مستندًا. افتراضيًا، كل صف في مجموعة البيانات = سطر واحد. - **kwargs (معلمات إضافية بالكلمات المفتاحية) —
معلمات بالكلمات المفتاحية تُمرَّر إلى
TextConfig.
إنشاء مجموعة بيانات من ملف نصي أو أكثر.
اقرأ ملفات النص، وخزّن البيانات بصيغة Arrow على القرص، ثم أعد Dataset من بيانات Arrow المخرجة من الذاكرة على القرص.
from_sql
< source >( sql: typing.Union[str, ForwardRef('sqlalchemy.sql.Selectable')]con: typing.Union[str, ForwardRef('sqlalchemy.engine.Connection'), ForwardRef('sqlalchemy.engine.Engine'), ForwardRef('sqlite3.Connection')]features: typing.Optional[datasets.features.features.Features] = Nonecache_dir: str = Nonekeep_in_memory: bool = False**kwargs )
المعاملات
- sql (
strأوsqlalchemy.sql.Selectable) — استعلام SQL لتنفيذه أو اسم جدول. - con (
strأوsqlite3.Connectionأوsqlalchemy.engine.Connectionأوsqlalchemy.engine.Connection) — سلسلة URI تُستخدم لإنشاء اتصال بقاعدة البيانات أو كائن اتصال SQLite3/SQLAlchemy. - features (Features، اختياري) — مميزات مجموعة البيانات.
- cache_dir (
str، اختياري، الافتراضي"~/.cache/huggingface/datasets") — المجلد الذي يُخزَّن فيه البيانات مؤقتًا. - keep_in_memory (
bool، القيمة الافتراضيةFalse) — ما إذا كان سيتم نسخ البيانات في الذاكرة. - **kwargs (معلمات إضافية بالكلمات المفتاحية) —
معلمات بالكلمات المفتاحية تُمرَّر إلى
SqlConfig.
إنشاء مجموعة بيانات من استعلام SQL أو جدول قاعدة بيانات.
استعلام قاعدة بيانات SQL، وتخزين البيانات مؤقتًا على القرص بتنسيق Arrow، وإرجاع Dataset من بيانات Arrow المرمّزة في الذاكرة على القرص.
مثال:
>>> # Fetch a database table
>>> ds = Dataset.from_sql("test_data", "postgres:///db_name")
>>> # Execute a SQL query on the table
>>> ds = Dataset.from_sql("SELECT sentence FROM test_data", "postgres:///db_name")
>>> # Use a Selectable object to specify the query
>>> from sqlalchemy import select, text
>>> stmt = select([text("sentence")]).select_from(text("test_data"))
>>> ds = Dataset.from_sql(stmt, "postgres:///db_name")لا يمكن تخزين مجموعة البيانات المُعادّة مؤقتًا إلا إذا تم تحديد
conكنص URI.
align_labels_with_mapping
< source >( label2id: dictlabel_column: str )
مطابقة تعيين معرّفات التسميات وأسماء التسميات في مجموعة البيانات مع تعيين label2id المُدخل.
يُعدّ هذا مفيدًا عندما تريد التأكد من أن التسميات المتوقعة من النموذج متوافقة مع مجموعة البيانات.
يتم تنفيذ المطابقة باستخدام أسماء التسميات بحروف صغيرة.
مثال:
>>> # dataset with mapping {'entailment': 0, 'neutral': 1, 'contradiction': 2}
>>> ds = load_dataset("nyu-mll/glue", "mnli", split="train")
>>> # mapping to align with
>>> label2id = {'CONTRADICTION': 0, 'NEUTRAL': 1, 'ENTAILMENT': 2}
>>> ds_aligned = ds.align_labels_with_mapping(label2id, "label")datasets.concatenate_datasets
< source >( dsets: listinfo: typing.Optional[datasets.info.DatasetInfo] = Nonesplit: typing.Optional[datasets.splits.NamedSplit] = Noneaxis: int = 0 )
المعاملات
- dsets (
List[datasets.Dataset]أوList[datasets.IterableDataset]) — قائمة من مجموعات البيانات (Datasets) لدمجها. - info (
DatasetInfo، اختياري) — معلومات عن مجموعة البيانات، مثل الوصف والاستشهاد وما إلى ذلك. - split (
NamedSplit, اختياري) — اسم تقسيم مجموعة البيانات. - axis (
{0, 1}, الافتراضي هو0) — المحور الذي تتم عليه عملية الدمج، حيث0تعني عبر الصفوف (رأسياً) و1تعني عبر الأعمدة (أفقيًا).أُضيف في 1.6.0
دمج عدة مجموعات بيانات (مصادر) في مجموعة بيانات واحدة.
استخدم axis=0 للدمج عموديًا (الافتراضي)، أو axis=1 للدمج أفقيًا.
ملاحظة بخصوص مجموعات البيانات القابلة للتكرار:
- if axis=0, the resulting dataset’s
num_shardsis the sum of each dataset’snum_shards. - إذا كان axis=1، فإن مجموعة البيانات الناتجة تحتوي على شريحة واحدة (1) لتجنب عدم محاذاة البيانات.
- if the datasets were split with datasets.distributed.split_dataset_by_node(), they must all be split the same way, and the resulting dataset keeps that split.
datasets.interleave_datasets
< source >( datasets: listprobabilities: typing.Optional[list[float]] = Noneseed: typing.Optional[int] = Noneinfo: typing.Optional[datasets.info.DatasetInfo] = Nonesplit: typing.Optional[datasets.splits.NamedSplit] = Nonestopping_strategy: typing.Literal['first_exhausted', 'all_exhausted', 'all_exhausted_without_replacement'] = 'first_exhausted' ) → Dataset or IterableDataset
المعاملات
- datasets (
List[Dataset]أوList[IterableDataset]) — قائمة مجموعات البيانات التي سيتم دمجها بالتناوب. - probabilities (
List[float]، اختياري، القيمة الافتراضيةNone) — إذا تم تحديده، يتم إنشاء مجموعة البيانات الجديدة عن طريق أخذ عينات من الأمثلة من مصدر واحد في كل مرة وفقًا لهذه الاحتمالات. - seed (
int، اختياري، القيمة الافتراضيةNone) — البذرة العشوائية المستخدمة لاختيار مصدر لكل مثال. - info (DatasetInfo, اختياري) —
معلومات عن مجموعة البيانات، مثل الوصف والاستشهاد وما إلى ذلك.
أُضيف في 2.4.0
- split (NamedSplit, اختياري) —
اسم تقسيم مجموعة البيانات.
أُضيف في 2.4.0
- stopping_strategy (
str, الافتراضي هوfirst_exhausted) — يُقترح حالياً ثلاثة استراتيجيات، وهيfirst_exhausted,all_exhaustedوall_exhausted_without_replacement. بشكل افتراضي،first_exhaustedاستراتيجية أخذ عينات ناقصة، أي أن بناء مجموعة البيانات يتوقف بمجرد نفاد العينات من إحدى مجموعات البيانات. إذا كانت الاستراتيجيةall_exhausted, نستخدم استراتيجية أخذ عينات زائدة، أي أن بناء مجموعة البيانات يتوقف بمجرد إضافة كل عينة من كل مجموعة بيانات مرة واحدة على الأقل. عندما تكون الاستراتيجيةall_exhausted_without_replacementنحرص على أن تُؤخذ كل عينة في كل مجموعة بيانات مرة واحدة فقط. يُرجى ملاحظة أنه إذا كانت الاستراتيجيةall_exhausted, قد تصبح حجم مجموعة البيانات المتداخلة ضخماً:- بدون احتمالات، سيكون عدد العينات في مجموعة البيانات الناتجة
max_length_datasets*nb_dataset. - مع الاحتمالات المعطاة، سيحتوي مجموعة البيانات الناتجة على عينات أكثر إذا كانت بعض مجموعات البيانات لديها احتمال زيارتها منخفض جداً.
- بدون احتمالات، سيكون عدد العينات في مجموعة البيانات الناتجة
يعيد
يعتمد نوع الإرجاع على معامل datasets. يكون Dataset إذا كان الإدخال قائمة من Dataset، وIterableDataset إذا كان الإدخال قائمة من IterableDataset.
Interleave several datasets (sources) into a single dataset. The new dataset is constructed by alternating between the sources to get the examples.
يمكنك استخدام هذه الدالة على قائمة من كائنات Dataset، أو على قائمة من كائنات IterableDataset.
- إذا كانت
probabilitiesتساويNone(الافتراضي)، يتم إنشاء مجموعة البيانات الجديدة بالتناوب بين كل مصدر للحصول على الأمثلة. - إذا لم يكن
probabilitiesهوNone، يتم بناء مجموعة البيانات الجديدة عن طريق أخذ أمثلة من مصدر عشوائي في كل مرة وفقًا للاحتمالات المُقدَّمة.
ينتهي مجموعة البيانات الناتجة عندما تنفد الأمثلة من إحدى مجموعات البيانات المصدرية، باستثناء عندما يكون oversampling هو True، وفي هذه الحالة، تنتهي مجموعة البيانات الناتجة عندما تنفد الأمثلة من جميع مجموعات البيانات مرة واحدة على الأقل.
ملاحظة بخصوص مجموعات البيانات القابلة للتكرار:
- عدد
num_shardsفي مجموعة البيانات الناتجة هو الحد الأدنى لعددnum_shardsفي كل مجموعة بيانات لضمان توازٍ جيد. إذا كانت بعض مجموعات البيانات لديك تحتوي على عدد منخفض جداً من الأجزاء، يمكنك استخدام IterableDataset.reshard(). - في الإعداد الموزّع أو في عمّالي PyTorch DataLoader، تُطبَّق استراتيجية التوقف لكل عملية على حدة. لذلك، يمكن لاستراتيجية “first_exhausted” على مجموعة بيانات قابلة للتكرار مقسّمة إلى شرائح أن تولّد عددًا أقل من العينات إجمالًا (بحد أقصى عينة مفقودة واحدة لكل مجموعة فرعية من البيانات ولكل عامل).
مثال:
للمجموعات البيانات العادية (بنمط الخريطة):
>>> from datasets import Dataset, interleave_datasets
>>> d1 = Dataset.from_dict({"a": [0, 1, 2]})
>>> d2 = Dataset.from_dict({"a": [10, 11, 12]})
>>> d3 = Dataset.from_dict({"a": [20, 21, 22]})
>>> dataset = interleave_datasets([d1, d2, d3], probabilities=[0.7, 0.2, 0.1], seed=42, stopping_strategy="all_exhausted")
>>> dataset["a"]
[10, 0, 11, 1, 2, 20, 12, 10, 0, 1, 2, 21, 0, 11, 1, 2, 0, 1, 12, 2, 10, 0, 22]
>>> dataset = interleave_datasets([d1, d2, d3], probabilities=[0.7, 0.2, 0.1], seed=42)
>>> dataset["a"]
[10, 0, 11, 1, 2]
>>> dataset = interleave_datasets([d1, d2, d3])
>>> dataset["a"]
[0, 10, 20, 1, 11, 21, 2, 12, 22]
>>> dataset = interleave_datasets([d1, d2, d3], stopping_strategy="all_exhausted")
>>> dataset["a"]
[0, 10, 20, 1, 11, 21, 2, 12, 22]
>>> d1 = Dataset.from_dict({"a": [0, 1, 2]})
>>> d2 = Dataset.from_dict({"a": [10, 11, 12, 13]})
>>> d3 = Dataset.from_dict({"a": [20, 21, 22, 23, 24]})
>>> dataset = interleave_datasets([d1, d2, d3])
>>> dataset["a"]
[0, 10, 20, 1, 11, 21, 2, 12, 22]
>>> dataset = interleave_datasets([d1, d2, d3], stopping_strategy="all_exhausted")
>>> dataset["a"]
[0, 10, 20, 1, 11, 21, 2, 12, 22, 0, 13, 23, 1, 10, 24]
>>> dataset = interleave_datasets([d1, d2, d3], probabilities=[0.7, 0.2, 0.1], seed=42)
>>> dataset["a"]
[10, 0, 11, 1, 2]
>>> dataset = interleave_datasets([d1, d2, d3], probabilities=[0.7, 0.2, 0.1], seed=42, stopping_strategy="all_exhausted")
>>> dataset["a"]
[10, 0, 11, 1, 2, 20, 12, 13, ..., 0, 1, 2, 0, 24]
For datasets in streaming mode (iterable):
>>> from datasets import interleave_datasets
>>> d1 = load_dataset('allenai/c4', 'es', split='train', streaming=True)
>>> d2 = load_dataset('allenai/c4', 'fr', split='train', streaming=True)
>>> dataset = interleave_datasets([d1, d2])
>>> iterator = iter(dataset)
>>> next(iterator)
{'text': 'Comprar Zapatillas para niña en chancla con goma por...'}
>>> next(iterator)
{'text': 'Le sacre de philippe ier, 23 mai 1059 - Compte Rendu...'datasets.distributed.split_dataset_by_node
< source >( dataset: ~DatasetTyperank: intworld_size: intstrategy: typing.Literal['auto', 'shards', 'examples'] = 'auto' ) → Dataset or IterableDataset
المعاملات
- dataset (Dataset أو IterableDataset) — مجموعة البيانات التي سيتم تقسيمها حسب العقدة.
- rank (
int) — ترتيب العقدة الحالية. - world_size (
int) — إجمالي عدد العقد. - strategy (
str، القيمة الافتراضية"auto") — كيفية تقسيم مجموعة بيانات قابلة للتكرار. يجب أن تكون واحدة من"auto"أو"shards"أو"examples". مجموعات البيانات من نوع Map تدعم"auto"فقط.
يعيد
مجموعة البيانات التي سيتم استخدامها على العقدة ذات الترتيب rank.
قسّم مجموعة البيانات الخاصة بالعقدة ذات الترتيب rank في مجموعة عقد حجمها world_size.
للمجموعات البيانات ذات نمط الخريطة:
يُسنَد إلى كل عقدة جزء من البيانات، على سبيل المثال يُمنح الرتبة 0 الجزء الأول من مجموعة البيانات. لتعظيم معدل تحميل البيانات، تُصنع الأجزاء من بيانات متجاورة على القرص إن أمكن.
للمجموعات البيانات القابلة للتكرار:
يمكن أن تكون strategy للتقسيم "auto" أو "shards" أو "examples":
"shards": يتم توزيع الشرائح بالتساوي عبر العقد"examples": يحتفظ كل عقدة بمثال واحد منworld_size، متجاوزةً الأمثلة الأخرى"auto"(الافتراضي): يستخدم"shards"إذا كان عدد الشرائح في مجموعة البيانات عاملًا قاسمًا لـworld_size(أي إذا كانdataset.num_shards % world_size == 0)، وهو الخيار الأكثر تحسينًا. وإلا يستخدم"examples".
إذا قمت بتبديل ترتيب مجموعة البيانات القابلة للتكرار في إعداد موزّع، فتأكد من تعيين
seedثابت في IterableDataset.shuffle() بحيث تُستخدم نفس القائمة المُبدَّلة من الشرائح على كل عقدة لمعرفة الشرائح التي يجب على العقدة تجاوزها.
عند تطبيق التحويلات على مجموعة بيانات، تُخزَّن البيانات في ملفات تخزين مؤقت. يتيح آلية التخزين المؤقت إعادة تحميل ملف تخزين مؤقت موجود إذا كان قد تم حسابه مسبقًا.
من الممكن إعادة تحميل مجموعة البيانات لأن ملفات التخزين المؤقت تُسمّى باستخدام بصمة مجموعة البيانات، والتي يتم تحديثها بعد كل تحويل.
إذا تم تعطيلها، لن تعيد المكتبة تحميل ملفات مجموعات البيانات المخزنة مؤقتًا عند تطبيق التحويلات على مجموعات البيانات. بشكل أدق، إذا تم تعطيل التخزين المؤقت:
- تُعاد ملفات الكاش دائمًا
- تُكتب ملفات الكاش في مجلد مؤقت يُحذف عند إغلاق الجلسة
- تُسمّى ملفات التخزين المؤقت باستخدام تجزئة عشوائية بدلاً من بصمة مجموعة البيانات
- استخدم save_to_disk() لحفظ مجموعة البيانات المُحوَّلة، وإلا فسيتم حذفها عند إغلاق الجلسة
- لا يؤثر التخزين المؤقت على load_dataset(). إذا كنت ترغب في إعادة توليد مجموعة بيانات من الصفر، فيجب عليك استخدام
معامل
download_modeفي load_dataset().
عند تطبيق التحويلات على مجموعة بيانات، تُخزَّن البيانات في ملفات تخزين مؤقت. يتيح آلية التخزين المؤقت إعادة تحميل ملف تخزين مؤقت موجود إذا كان قد تم حسابه مسبقًا.
من الممكن إعادة تحميل مجموعة البيانات لأن ملفات التخزين المؤقت تُسمّى باستخدام بصمة مجموعة البيانات، والتي يتم تحديثها بعد كل تحويل.
إذا تم تعطيلها، لن تعيد المكتبة تحميل ملفات مجموعات البيانات المخزنة مؤقتًا عند تطبيق التحويلات على مجموعات البيانات. بشكل أدق، إذا تم تعطيل التخزين المؤقت:
- تُعاد ملفات الكاش دائمًا
- تُكتب ملفات الكاش في مجلد مؤقت يُحذف عند إغلاق الجلسة
- تُسمّى ملفات التخزين المؤقت باستخدام تجزئة عشوائية بدلاً من بصمة مجموعة البيانات
- استخدم save_to_disk() لحفظ مجموعة البيانات المُحوَّلة، وإلا فسيتم حذفها عند إغلاق الجلسة
- لا يؤثر التخزين المؤقت على load_dataset(). إذا كنت ترغب في إعادة توليد مجموعة بيانات من الصفر، فيجب عليك استخدام
معامل
download_modeفي load_dataset().
عند تطبيق التحويلات على مجموعة بيانات، تُخزَّن البيانات في ملفات تخزين مؤقت. يتيح آلية التخزين المؤقت إعادة تحميل ملف تخزين مؤقت موجود إذا كان قد تم حسابه مسبقًا.
من الممكن إعادة تحميل مجموعة البيانات لأن ملفات التخزين المؤقت تُسمّى باستخدام بصمة مجموعة البيانات، والتي يتم تحديثها بعد كل تحويل.
إذا تم تعطيلها، لن تعيد المكتبة تحميل ملفات مجموعات البيانات المخزنة مؤقتًا عند تطبيق التحويلات على مجموعات البيانات. بشكل أدق، إذا تم تعطيل التخزين المؤقت:
- تُعاد ملفات الكاش دائمًا
- تُكتب ملفات الكاش في مجلد مؤقت يُحذف عند إغلاق الجلسة
- تُسمّى ملفات التخزين المؤقت باستخدام تجزئة عشوائية بدلاً من بصمة مجموعة البيانات
- استخدم save_to_disk() لحفظ مجموعة البيانات المُحوَّلة، وإلا فسيتم حذفها عند إغلاق الجلسة
- لا يؤثر التخزين المؤقت على load_dataset(). إذا كنت ترغب في إعادة توليد مجموعة بيانات من الصفر، فيجب عليك استخدام
معامل
download_modeفي load_dataset().
class datasets.Column
< source >( source: typing.Union[ForwardRef('Dataset'), ForwardRef('Column')]column_name: str )
قابلة للتكرار لعمود محدد من Dataset.
مثال:
DatasetDict
قاموس تُستخدم فيه الأسماء المقسمة كمفاتيح (مثل ‘train’ و ‘test’)، وتُستخدم كائنات Dataset كقيم.
كما يحتوي على طرق تحويل مجموعات البيانات مثل map أو filter، لمعالجة جميع التقسيمات دفعة واحدة.
قاموس (dict of str: datasets.Dataset) يحتوي على طرق تحويلات مجموعة البيانات (map، filter، إلخ)
جداول Apache Arrow التي تدعم كل تقسيم.
ملفات الكاش التي تحتوي على جدول Apache Arrow الذي يدعم كل تقسيم.
مثال:
>>> from datasets import load_dataset
>>> ds = load_dataset("cornell-movie-review-data/rotten_tomatoes")
>>> ds.cache_files
{'test': [{'filename': '/root/.cache/huggingface/datasets/rotten_tomatoes_movie_review/default/1.0.0/40d411e45a6ce3484deed7cc15b82a53dad9a72aafd9f86f8f227134bec5ca46/rotten_tomatoes_movie_review-test.arrow'}],
'train': [{'filename': '/root/.cache/huggingface/datasets/rotten_tomatoes_movie_review/default/1.0.0/40d411e45a6ce3484deed7cc15b82a53dad9a72aafd9f86f8f227134bec5ca46/rotten_tomatoes_movie_review-train.arrow'}],
'validation': [{'filename': '/root/.cache/huggingface/datasets/rotten_tomatoes_movie_review/default/1.0.0/40d411e45a6ce3484deed7cc15b82a53dad9a72aafd9f86f8f227134bec5ca46/rotten_tomatoes_movie_review-validation.arrow'}]}عدد الأعمدة في كل تقسيم من مجموعة البيانات.
عدد الصفوف في كل جزء من مجموعة البيانات.
أسماء الأعمدة في كل تقسيم من مجموعة البيانات.
شكل كل جزء من مجموعة البيانات (عدد الصفوف، عدد الأعمدة).
فريد
< source >( column: str ) → Dict[str, list]
المعاملات
- column (
str) — اسم العمود (قائمة بأسماء الأعمدة باستخدام column_names)
يعيد
Dict[str, list]
قاموس للعناصر الفريدة في العمود المحدد.
إرجاع قائمة بالعناصر الفريدة في عمود لكل تقسيم.
يتم تنفيذ ذلك في الخلفية منخفضة المستوى، ولذلك فهو سريع للغاية.
قم بتنظيف جميع ملفات الكاش في مجلد كاش مجموعة البيانات، باستثناء ملف الكاش المستخدم حاليًا إن وُجد. توخَّ الحذر عند تنفيذ هذا الأمر للتأكد من عدم استخدام أي عملية أخرى لملفات كاش أخرى.
map
< source >( function: typing.Optional[typing.Callable] = Nonewith_indices: bool = Falsewith_rank: bool = Falsewith_split: bool = Falseinput_columns: typing.Union[str, list[str], NoneType] = Nonebatched: bool = Falsebatch_size: typing.Optional[int] = 1000drop_last_batch: bool = Falseremove_columns: typing.Union[str, list[str], NoneType] = Nonekeep_in_memory: bool = Falseload_from_cache_file: typing.Optional[bool] = Nonecache_file_names: typing.Optional[dict[str, typing.Optional[str]]] = Nonewriter_batch_size: typing.Optional[int] = 1000features: typing.Optional[datasets.features.features.Features] = Nonedisable_nullable: bool = Falsefn_kwargs: typing.Optional[dict] = Nonenum_proc: typing.Optional[int] = Nonedesc: typing.Optional[str] = Nonetry_original_type: typing.Optional[bool] = Trueon_mixed_types: typing.Optional[typing.Literal['use_json']] = None )
المعاملات
- function (
callable) — مع أحد التواقيع التالية:function(example: Dict[str, Any]) -> Dict[str, Any]إذا كانbatched=Falseوwith_indices=Falsefunction(example: Dict[str, Any], indices: int) -> Dict[str, Any]إذا كانbatched=Falseوwith_indices=Truefunction(batch: Dict[str, list]) -> Dict[str, list]إذا كانbatched=Trueوwith_indices=Falsefunction(batch: Dict[str, list], indices: list[int]) -> Dict[str, list]إذا كانbatched=Trueوwith_indices=True
للاستخدام المتقدم، يمكن للدالة أيضاً أن تُرجع
pyarrow.Table. إذا كانت الدالة غير متزامنة، فإنmapستنفّذ دالتك بالتوازي. علاوة على ذلك، إذا كانت دالتك لا تُرجع شيئاً (None)، فإنmapستنفّذ دالتك وتُرجع مجموعة البيانات دون تغيير. إذا لم تُوفَّر دالة، فسيتم افتراض دالة الهوية:lambda x: x. - with_indices (
bool، القيمة الافتراضيةFalse) — توفير فهارس أمثلة إلىfunction. لاحظ أنه في هذه الحالة يجب أن تكون التوقيع الخاص بـfunctionهوdef function(example, idx): .... - with_rank (
bool، القيمة الافتراضيةFalse) — توفير ترتيب العملية إلىfunction. لاحظ أنه في هذه الحالة يجب أن تكون التوقيع الخاص بـfunctionهوdef function(example[, idx], rank): .... - with_split (
bool، القيمة الافتراضيةFalse) — توفير تقسيم العملية إلىfunction. لاحظ أنه في هذه الحالة يجب أن تكون التوقيع الخاص بـfunctionهوdef function(example[, idx], split): .... - input_columns (
[Union[str, list[str]]]، اختياري، القيمة الافتراضيةNone) — الأعمدة التي سيتم تمريرها إلىfunctionكحجج موضعية. إذا كانتNone، يتم تمرير قاموس يقابل جميع الأعمدة المنسّقة كحجة واحدة. - batched (
bool، الافتراضيFalse) — تقديم دفعة من الأمثلة إلىfunction. - batch_size (
int، اختياري، القيمة الافتراضية1000) — عدد الأمثلة في كل دفعة تُقدَّم إلىfunctionإذا كانbatched=True، وإذا كانbatch_size <= 0أوbatch_size == Noneفسيتم تقديم مجموعة البيانات الكاملة كدفعة واحدة إلىfunction. - drop_last_batch (
bool، القيمة الافتراضيةFalse) — ما إذا كان يجب تجاهل الدفعة الأخيرة الأصغر من batch_size بدلاً من معالجتها بواسطة الدالة. - remove_columns (
[Union[str, list[str]]]، اختياري، القيمة الافتراضيةNone) — إزالة مجموعة من الأعمدة أثناء تنفيذ عملية الخرائط (mapping). سيتم إزالة الأعمدة قبل تحديث الأمثلة بمخرجاتfunction، أي إذا كانfunctionيضيف أعمدة بأسماء موجودة فيremove_columns، فسيتم الاحتفاظ بهذه الأعمدة. - keep_in_memory (
bool، القيمة الافتراضيةFalse) — احتفظ بالبيانات في الذاكرة بدلاً من كتابتها في ملف مؤقت. - load_from_cache_file (
Optional[bool]، القيمة الافتراضية هيTrueإذا كان التخزين المؤقت مفعلاً) — إذا أمكن تحديد ملف تخزين مؤقت يحفظ الحساب الحالي لـfunction، فاستخدمه بدلاً من إعادة الحساب. - cache_file_names (
[Dict[str, str]]، اختياري، القيمة الافتراضيةNone) — يُحدد اسم المسار لملف التخزين المؤقت. يُستخدم لتخزين نتائج الحساب بدلاً من اسم ملف التخزين المؤقت المولّد تلقائيًا. يجب عليك تقديمcache_file_nameواحد لكل مجموعة بيانات في قاموس مجموعة البيانات. - writer_batch_size (
int، الافتراضي1000) — عدد الصفوف في عملية الكتابة الواحدة لكاتب ملف الكاش. تُعد هذه القيمة توازنًا جيدًا بين استهلاك الذاكرة أثناء المعالجة، وسرعة المعالجة. القيمة الأعلى تجعل المعالجة تقوم بعدد أقل من عمليات البحث، بينما تستهلك القيمة الأقل ذاكرة مؤقتة أقل أثناء تشغيلmap. - features (
[datasets.Features]، اختياري، الافتراضيNone) — استخدم Features محددة لتخزين ملف الكاش بدلاً من الملف المولّد تلقائيًا. - disable_nullable (
bool، القيمة الافتراضيةFalse) — يمنع القيم الفارغة في الجدول. - fn_kwargs (
Dict، اختياري، القيمة الافتراضيةNone) — حجج الكلمات المفتاحية التي سيتم تمريرها إلىfunction - num_proc (
int, اختياري, القيمة الافتراضية هيNone) — عدد العمليات المستخدمة للمعالجة المتعددة. إذا كانت القيمة None أو 0، فلن تُستخدم المعالجة المتعددة وسيتم تنفيذ العملية في العملية الرئيسية. إذا كانت القيمة أكبر من 1، فسيتم استخدام عملية عاملة واحدة أو عدة عمليات عاملة لمعالجة البيانات بالتوازي. ملاحظة: يجب أن تكون الدالة المُمرَّرة إلى map() قابلة للتسلسل (picklable) لكي تعمل المعالجة المتعددة بشكل صحيح (أي، يُفضَّل استخدام الدوال المُعرَّفة في المستوى الأعلى من الوحدة، وليس داخل دالة أو فئة أخرى).- إذا كانت
Noneأو0، فلا يُستخدم تعدد العمليات، وتُنفَّذ العملية في العملية الرئيسية. - إذا كان أكبر من
1، تُستخدم عملية عامل واحدة أو عدة عمليات عامل لمعالجة البيانات بالتوازي. ملاحظة: يجب أن تكون الدالة المُمرَّرة إلىmap()قابلة للتسلسل (picklable) حتى يعمل تعدد العمليات بشكل صحيح (أي، يُفضَّل استخدام الدوال المُعرَّفة في المستوى الأعلى من الوحدة، وليس داخل دالة أو فئة أخرى).
- إذا كانت
- desc (
str، اختياري، القيمة الافتراضيةNone) — وصف ذو معنى يُعرض إلى جانب شريط التقدم أثناء خرائط الأمثلة. - try_original_type (
Optional[bool]، القيمة الافتراضيةTrue) — حاول الحفاظ على أنواع الأعمدة الأصلية (مثل int32 -> int32). اضبطها على False إذا كنت تريد دائمًا استنتاج أنواع جديدة. - on_mixed_types (
Literal["use_json"], اختياري, القيمة الافتراضية هيNone) — إذا كانت القيمة "use_json"، يتم استخدام نوع Json() للحقول ذات الأنواع المختلطة، أي الحقول غير المهيكلة التي تحتوي على بيانات بدون مخطط مسبق التعريف. في هذه الحالة، يُضبط الحقل ذو النوع المختلط على Json().يتيح هذا تحميل قوائم تحتوي على مزيج من النصوص/الأعداد الصحيحة/الأعداد العشرية، على سبيل المثال، أو قواميس ذات أنواع قيم عشوائية.
أُضيف في 4.7.0
تطبيق دالة على جميع الأمثلة في الجدول (فرديةً أو على شكل دفعات) وتحديث الجدول. إذا كانت دالتك تُرجع عمودًا موجودًا مسبقًا، فإنها تُعيد كتابته. يتم تطبيق التحويل على جميع مجموعات البيانات في قاموس مجموعة البيانات.
يمكنك تحديد ما إذا كان ينبغي تجميع الدالة أم لا باستخدام معامل batched:
- إذا كانت
False، فإن الدالة تستقبل مثالًا واحدًا ويجب أن تُرجع مثالًا واحدًا. المثال هو قاموس، مثل{"text": "Hello there !"}. - إذا كان
Trueوbatch_sizeيساوي 1، فإن الدالة تستقبل دفعة تحتوي على مثال واحد كمدخلات ويمكنها إرجاع دفعة تحتوي على مثال واحد أو أكثر. الدفعة هي قاموس، على سبيل المثال دفعة تحتوي على مثال واحد هي{"text": ["Hello there !"]}. - إذا كان
Trueوbatch_sizeهوn > 1، فإن الدالة تستقبل دفعة منnأمثلة كمدخلات، ويمكن أن تعيد دفعة تحتوي علىnأمثلة، أو على عدد عشوائي من الأمثلة. لاحظ أن الدفعة الأخيرة قد تحتوي على أقل منnأمثلة. الدفعة هي قاموس، على سبيل المثال، دفعة منnأمثلة هي{"text": ["Hello there !"] * n}.
إذا كانت الدالة غير متزامنة، فإن map ستنفّذ دالتك بالتوازي، مع حد أقصى يبلغ ألف استدعاء متزامن.
يُوصى باستخدام asyncio.Semaphore في دالتك إذا كنت ترغب في تحديد الحد الأقصى لعدد العمليات التي يمكن تنفيذها في الوقت نفسه.
مثال:
>>> from datasets import load_dataset
>>> ds = load_dataset("cornell-movie-review-data/rotten_tomatoes")
>>> def add_prefix(example):
... example["text"] = "Review: " + example["text"]
... return example
>>> ds = ds.map(add_prefix)
>>> ds["train"][0:3]["text"]
['Review: the rock is destined to be the 21st century's new " conan " and that he's going to make a splash even greater than arnold schwarzenegger , jean-claud van damme or steven segal .',
'Review: the gorgeously elaborate continuation of " the lord of the rings " trilogy is so huge that a column of words cannot adequately describe co-writer/director peter jackson's expanded vision of j . r . r . tolkien's middle-earth .',
'Review: effective but too-tepid biopic']
# process a batch of examples
>>> ds = ds.map(lambda example: tokenizer(example["text"]), batched=True)
# set number of processors
>>> ds = ds.map(add_prefix, num_proc=4)فلتر
< source >( function: typing.Optional[typing.Callable] = Nonewith_indices: bool = Falsewith_rank: bool = Falseinput_columns: typing.Union[str, list[str], NoneType] = Nonebatched: bool = Falsebatch_size: typing.Optional[int] = 1000keep_in_memory: bool = Falseload_from_cache_file: typing.Optional[bool] = Nonecache_file_names: typing.Optional[dict[str, typing.Optional[str]]] = Nonewriter_batch_size: typing.Optional[int] = 1000fn_kwargs: typing.Optional[dict] = Nonenum_proc: typing.Optional[int] = Nonedesc: typing.Optional[str] = None )
المعاملات
- function (
Callable) — دالة قابلة للاستدعاء (Callable) تحمل أحد التواقيع التالية:function(example: Dict[str, Any]) -> boolإذا كانbatched=Falseوwith_indices=Falseوwith_rank=Falsefunction(example: Dict[str, Any], *extra_args) -> boolإذا كانbatched=Falseوwith_indices=Trueو/أوwith_rank=True(حجة إضافية واحدة لكل منهما)function(batch: Dict[str, list]) -> list[bool]إذا كانbatched=Trueوwith_indices=Falseوwith_rank=Falsefunction(batch: Dict[str, list], *extra_args) -> list[bool]إذا كانbatched=Trueوwith_indices=Trueو/أوwith_rank=True(حجة إضافية واحدة لكل منهما)
إذا لم يتم توفير دالة، فإن القيمة الافتراضية هي دالة
Trueدائمًا:lambda x: True. - with_indices (
bool، القيمة الافتراضيةFalse) — توفير فهارس أمثلة إلىfunction. لاحظ أنه في هذه الحالة يجب أن تكون التوقيع الخاص بـfunctionهوdef function(example, idx[, rank]): .... - with_rank (
bool، القيمة الافتراضيةFalse) — توفير ترتيب العملية إلىfunction. لاحظ أنه في هذه الحالة يجب أن تكون التوقيع الخاص بـfunctionهوdef function(example[, idx], rank): .... - input_columns (
[Union[str, list[str]]]، اختياري، القيمة الافتراضيةNone) — الأعمدة التي سيتم تمريرها إلىfunctionكحجج موضعية. إذا كانتNone، يتم تمرير قاموس يقابل جميع الأعمدة المنسّقة كحجة واحدة. - batched (
bool، الافتراضيFalse) — تقديم دفعة من الأمثلة إلىfunction. - batch_size (
int، اختياري، القيمة الافتراضية1000) — عدد الأمثلة في كل دفعة تُقدَّم إلىfunctionإذا كانbatched=Trueإذا كانbatch_size <= 0أوbatch_size == None، فسيتم تقديم مجموعة البيانات الكاملة كدفعة واحدة إلىfunction. - keep_in_memory (
bool، القيمة الافتراضيةFalse) — احتفظ بالبيانات في الذاكرة بدلاً من كتابتها في ملف مؤقت. - load_from_cache_file (
Optional[bool]، القيمة الافتراضية هيTrueإذا كان التخزين المؤقت مفعلاً) — إذا أمكن تحديد ملف تخزين مؤقت يحفظ الحساب الحالي لـfunction، فاستخدمه بدلاً من إعادة الحساب. - cache_file_names (
[Dict[str, str]]، اختياري، القيمة الافتراضيةNone) — يُحدد اسم المسار لملف التخزين المؤقت. يُستخدم لتخزين نتائج الحساب بدلاً من اسم ملف التخزين المؤقت المولّد تلقائيًا. يجب عليك تقديمcache_file_nameواحد لكل مجموعة بيانات في قاموس مجموعة البيانات. - writer_batch_size (
int، القيمة الافتراضية1000) — عدد الصفوف في عملية الكتابة الواحدة لكاتب ملف الكاش. تُعد هذه القيمة توازنًا جيدًا بين استهلاك الذاكرة أثناء المعالجة وسرعة المعالجة. تؤدي القيمة الأعلى إلى تقليل عمليات البحث أثناء المعالجة، بينما تستهلك القيمة الأقل ذاكرة مؤقتة أقل أثناء تشغيلmap. - fn_kwargs (
Dict، اختياري، القيمة الافتراضيةNone) — حجج الكلمات المفتاحية التي سيتم تمريرها إلىfunction - num_proc (
int, اختياري, القيمة الافتراضية هيNone) — عدد العمليات المستخدمة للمعالجة المتعددة. إذا كانت القيمة None أو 0، فلن تُستخدم المعالجة المتعددة وسيتم تنفيذ العملية في العملية الرئيسية. إذا كانت القيمة أكبر من 1، فسيتم استخدام عملية عاملة واحدة أو عدة عمليات عاملة لمعالجة البيانات بالتوازي. ملاحظة: يجب أن تكون الدالة المُمرَّرة إلى map() قابلة للتسلسل (picklable) لكي تعمل المعالجة المتعددة بشكل صحيح (أي، يُفضَّل استخدام الدوال المُعرَّفة في المستوى الأعلى من الوحدة، وليس داخل دالة أو فئة أخرى).- إذا كانت
Noneأو0، فلا يُستخدم تعدد العمليات، وتُنفَّذ العملية في العملية الرئيسية. - إذا كان أكبر من
1، تُستخدم عملية عامل واحدة أو عدة عمليات عامل لمعالجة البيانات بالتوازي. ملاحظة: يجب أن تكون الدالة المُمرَّرة إلىmap()قابلة للتسلسل (picklable) حتى يعمل تعدد العمليات بشكل صحيح (أي، يُفضَّل استخدام الدوال المُعرَّفة في المستوى الأعلى من الوحدة، وليس داخل دالة أو فئة أخرى).
- إذا كانت
- desc (
str، اختياري، القيمة الافتراضيةNone) — وصف ذو معنى يُعرض إلى جانب شريط التقدم أثناء تصفية الأمثلة.
تطبيق دالة تصفية على جميع العناصر في الجدول على دفعات وتحديث الجدول بحيث تتضمن مجموعة البيانات أمثلة فقط وفقاً لدالة التصفية. يتم تطبيق التحويل على جميع مجموعات البيانات في قاموس مجموعة البيانات.
مثال:
>>> from datasets import load_dataset
>>> ds = load_dataset("cornell-movie-review-data/rotten_tomatoes")
>>> ds.filter(lambda x: x["label"] == 1)
DatasetDict({
train: Dataset({
features: ['text', 'label'],
num_rows: 4265
})
validation: Dataset({
features: ['text', 'label'],
num_rows: 533
})
test: Dataset({
features: ['text', 'label'],
num_rows: 533
})
})sort
< source >( column_names: typing.Union[str, collections.abc.Sequence[str]]reverse: typing.Union[bool, collections.abc.Sequence[bool]] = Falsenull_placement: str = 'at_end'keep_in_memory: bool = Falseload_from_cache_file: typing.Optional[bool] = Noneindices_cache_file_names: typing.Optional[dict[str, typing.Optional[str]]] = Nonewriter_batch_size: typing.Optional[int] = 1000 )
المعاملات
- column_names (
Union[str, Sequence[str]]) — أسماء الأعمدة التي سيتم الفرز بناءً عليها. - reverse (
Union[bool, Sequence[bool]]، القيمة الافتراضيةFalse) — إذا كانتTrue، يتم الفرز حسب الترتيب التنازلي بدلاً من التصاعدي. إذا تم تقديم قيمة bool واحدة، تُطبَّق القيمة على فرز جميع أسماء الأعمدة. وإلا، يجب تقديم قائمة من قيم bool بنفس الطول والترتيب مثل column_names. - null_placement (
str, defaults toat_end) — PutNonevalues at the beginning ifat_startorfirstor at the end ifat_endorlast - keep_in_memory (
bool، القيمة الافتراضيةFalse) — احتفظ بالفهارس المرتبة في الذاكرة بدلاً من كتابتها في ملف كاش. - load_from_cache_file (
Optional[bool]، القيمة الافتراضية هيTrueإذا كان التخزين المؤقت مفعلاً) — إذا أمكن تحديد ملف تخزين مؤقت يحفظ الفهارس المرتبة، فاستخدمه بدلاً من إعادة الحساب. - indices_cache_file_names (
[Dict[str, str]]، اختياري، القيمة الافتراضيةNone) — يُحدد اسم المسار لملف التخزين المؤقت. يُستخدم لتخزين تعيين الفهارس بدلاً من اسم ملف التخزين المؤقت المولّد تلقائيًا. يجب عليك تقديمcache_file_nameواحد لكل مجموعة بيانات في قاموس مجموعة البيانات. - writer_batch_size (
int، القيمة الافتراضية1000) — عدد الصفوف في عملية الكتابة الواحدة لكاتب ملف الكاش. القيمة الأعلى تنتج ملفات كاش أصغر، بينما القيمة الأقل تستهلك ذاكرة مؤقتة أقل.
أنشئ مجموعة بيانات جديدة مرتبة وفقاً لعمود واحد أو عدة أعمدة.
مثال:
>>> from datasets import load_dataset
>>> ds = load_dataset('cornell-movie-review-data/rotten_tomatoes')
>>> ds['train']['label'][:10]
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
>>> sorted_ds = ds.sort('label')
>>> sorted_ds['train']['label'][:10]
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
>>> another_sorted_ds = ds.sort(['label', 'text'], reverse=[True, False])
>>> another_sorted_ds['train']['label'][:10]
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1]shuffle
< source >( seeds: typing.Union[int, dict[str, typing.Optional[int]], NoneType] = Noneseed: typing.Optional[int] = Nonegenerators: typing.Optional[dict[str, numpy.random._generator.Generator]] = Nonekeep_in_memory: bool = Falseload_from_cache_file: typing.Optional[bool] = Noneindices_cache_file_names: typing.Optional[dict[str, typing.Optional[str]]] = Nonewriter_batch_size: typing.Optional[int] = 1000 )
المعاملات
- seeds (
Dict[str, int]أوint، اختياري) — بذرة لتوليد BitGenerator الافتراضي إذا كانgenerator=None. إذا كانNone، فسيتم سحب إنتروبيا جديدة وغير متوقعة من نظام التشغيل. إذا تم تمريرintأوarray_like[ints]، فسيتم تمريرها إلى SeedSequence لاستنتاج حالة BitGenerator الأولية. يمكنك تقديم بذرة واحدةseedلكل مجموعة بيانات في قاموس مجموعة البيانات. - seed (
int, اختياري) — بذرة لتوليد BitGenerator الافتراضي إذا كانgenerator=None. مرادف لـ seeds (يتم رفعValueErrorإذا تم توفير كلاهما). - generators (
Dict[str, *optional*, np.random.Generator]) — مولّد عشوائي من Numpy يُستخدم لحساب تبديل صفوف مجموعة البيانات. إذا كانgenerator=None(الافتراضي)، يُستخدمnp.random.default_rng(مولّد البتات الافتراضي (PCG64) في NumPy). يجب عليك تقديم مولّدgeneratorواحد لكل مجموعة بيانات في قاموس مجموعات البيانات. - keep_in_memory (
bool، القيمة الافتراضيةFalse) — احتفظ بالبيانات في الذاكرة بدلاً من كتابتها في ملف مؤقت. - load_from_cache_file (
Optional[bool]، القيمة الافتراضية هيTrueإذا كان التخزين المؤقت مفعلاً) — إذا أمكن تحديد ملف تخزين مؤقت يحفظ الحساب الحالي لـfunction، فاستخدمه بدلاً من إعادة الحساب. - indices_cache_file_names (
Dict[str, str], اختياري) — يُحدد اسم المسار لملف التخزين المؤقت. يُستخدم لتخزين خرائط الفهارس بدلاً من اسم ملف التخزين المؤقت المولّد تلقائيًا. يجب عليك تقديمcache_file_nameواحد لكل مجموعة بيانات في قاموس مجموعة البيانات. - writer_batch_size (
int، القيمة الافتراضية1000) — عدد الصفوف في عملية الكتابة الواحدة لكاتب ملف الكاش. تُعد هذه القيمة توازنًا جيدًا بين استهلاك الذاكرة أثناء المعالجة وسرعة المعالجة. تؤدي القيمة الأعلى إلى تقليل عمليات البحث أثناء المعالجة، بينما تستهلك القيمة الأقل ذاكرة مؤقتة أقل أثناء تشغيلmap.
أنشئ مجموعة بيانات جديدة حيث تكون الصفوف مُخلوطة.
تُطبَّق عملية التحويل على جميع مجموعات البيانات في قاموس مجموعة البيانات.
يستخدم التجميع العشوائي حاليًا مولّدات الأرقام العشوائية من numpy. يمكنك إما تقديم مولّد بتات NumPy BitGenerator لاستخدامه، أو تقديم بذرة (seed) لبدء مولّد الأرقام العشوائية الافتراضي في NumPy (PCG64).
set_format
< source >( type: typing.Optional[str] = Nonecolumns: typing.Optional[list] = Noneoutput_all_columns: bool = False**format_kwargs )
المعاملات
- type (
str، اختياري) — نوع المخرجات المختار من بين[None, 'numpy', 'torch', 'tensorflow', 'jax', 'arrow', 'pandas', 'polars']. يعنيNoneأن__getitem__يعيد كائنات بايثون (الافتراضي). - columns (
list[str]، اختياري) — الأعمدة التي سيتم تنسيقها في المخرجات.Noneتعني أن__getitem__يعيد جميع الأعمدة (الافتراضي). - output_all_columns (
bool، القيمة الافتراضية False) — احتفظ بالأعمدة غير المنسّقة أيضًا في المخرجات (ككائنات بايثون)، - **format_kwargs (معلمات إضافية) —
معلمات تُمرَّر إلى دالة التحويل مثل
np.arrayأوtorch.tensorأوtensorflow.ragged.constant.
حدد __getitem__ صيغة الإرجاع (النوع والأعمدة).
تُضبط الصيغة لكل مجموعة بيانات في قاموس مجموعات البيانات.
من الممكن استدعاء map بعد استدعاء set_format. بما أن map قد يضيف أعمدة جديدة، فإن قائمة الأعمدة المُنسَّقة يتم تحديثها. في هذه الحالة، إذا طبّقت map على مجموعة بيانات لإضافة عمود جديد، فسيتم تنسيق هذا العمود:
new formatted columns = (all columns - previously unformatted columns)
مثال:
>>> from datasets import load_dataset
>>> from transformers import AutoTokenizer
>>> tokenizer = AutoTokenizer.from_pretrained("bert-base-cased")
>>> ds = ds.map(lambda x: tokenizer(x["text"], truncation=True, padding=True), batched=True)
>>> ds.set_format(type="numpy", columns=['input_ids', 'token_type_ids', 'attention_mask', 'label'])
>>> ds["train"].format
{'columns': ['input_ids', 'token_type_ids', 'attention_mask', 'label'],
'format_kwargs': {},
'output_all_columns': False,
'type': 'numpy'}إعادة تعيين صيغة إرجاع __getitem__ إلى كائنات بايثون وجميع الأعمدة.
يتم تطبيق التحويل على جميع مجموعات البيانات في قاموس مجموعة البيانات.
نفس self.set_format()
مثال:
>>> from datasets import load_dataset
>>> from transformers import AutoTokenizer
>>> ds = load_dataset("cornell-movie-review-data/rotten_tomatoes")
>>> tokenizer = AutoTokenizer.from_pretrained("bert-base-cased")
>>> ds = ds.map(lambda x: tokenizer(x["text"], truncation=True, padding=True), batched=True)
>>> ds.set_format(type="numpy", columns=['input_ids', 'token_type_ids', 'attention_mask', 'label'])
>>> ds["train"].format
{'columns': ['input_ids', 'token_type_ids', 'attention_mask', 'label'],
'format_kwargs': {},
'output_all_columns': False,
'type': 'numpy'}
>>> ds.reset_format()
>>> ds["train"].format
{'columns': ['text', 'label', 'input_ids', 'token_type_ids', 'attention_mask'],
'format_kwargs': {},
'output_all_columns': False,
'type': None}formatted_as
< source >( type: typing.Optional[str] = Nonecolumns: typing.Optional[list] = Noneoutput_all_columns: bool = False**format_kwargs )
المعاملات
- type (
str، اختياري) — نوع المخرجات المختار من بين[None, 'numpy', 'torch', 'tensorflow', 'jax', 'arrow', 'pandas', 'polars']. يعنيNoneأن__getitem__يعيد كائنات بايثون (الافتراضي). - columns (
list[str]، اختياري) — الأعمدة التي سيتم تنسيقها في المخرجات.Noneتعني أن__getitem__يعيد جميع الأعمدة (الافتراضي). - output_all_columns (
bool، القيمة الافتراضية False) — احتفظ بالأعمدة غير المنسّقة أيضًا في المخرجات (ككائنات بايثون). - **format_kwargs (معلمات إضافية) —
معلمات تُمرَّر إلى دالة التحويل مثل
np.arrayأوtorch.tensorأوtensorflow.ragged.constant.
يُستخدم في عبارة with. اضبط صيغة إرجاع __getitem__ (النوع والأعمدة).
تُطبَّق التحويلة على جميع مجموعات البيانات في قاموس مجموعة البيانات.
with_format
< source >( type: typing.Optional[str] = Nonecolumns: typing.Optional[list] = Noneoutput_all_columns: bool = False**format_kwargs )
المعاملات
- type (
str، اختياري) — نوع المخرجات المختار من بين[None, 'numpy', 'torch', 'tensorflow', 'jax', 'arrow', 'pandas', 'polars']. يعنيNoneأن__getitem__يعيد كائنات بايثون (الافتراضي). - columns (
list[str]، اختياري) — الأعمدة التي سيتم تنسيقها في المخرجات.Noneتعني أن__getitem__يعيد جميع الأعمدة (الافتراضي). - output_all_columns (
bool، القيمة الافتراضيةFalse) — احتفظ بالأعمدة غير المنسّقة أيضًا في المخرجات (ككائنات بايثون). - **format_kwargs (معلمات إضافية) —
معلمات تُمرَّر إلى دالة التحويل مثل
np.arrayأوtorch.tensorأوtensorflow.ragged.constant.
حدد صيغة إرجاع __getitem__ (النوع والأعمدة). يتم تطبيق تنسيق البيانات على الفور.
تُستخدم صيغة type (مثل “numpy”) لتنسيق الدفعات عند استخدام __getitem__.
يتم ضبط الصيغة لكل مجموعة بيانات في قاموس مجموعات البيانات.
من الممكن أيضًا استخدام تحويلات مخصصة للتنسيق باستخدام with_transform().
على عكس set_format()، تُعيد with_format كائن DatasetDict جديدًا يحتوي على كائنات Dataset جديدة.
مثال:
>>> from datasets import load_dataset
>>> from transformers import AutoTokenizer
>>> ds = load_dataset("cornell-movie-review-data/rotten_tomatoes")
>>> tokenizer = AutoTokenizer.from_pretrained("bert-base-cased")
>>> ds = ds.map(lambda x: tokenizer(x['text'], truncation=True, padding=True), batched=True)
>>> ds["train"].format
{'columns': ['text', 'label', 'input_ids', 'token_type_ids', 'attention_mask'],
'format_kwargs': {},
'output_all_columns': False,
'type': None}
>>> ds = ds.with_format("torch")
>>> ds["train"].format
{'columns': ['text', 'label', 'input_ids', 'token_type_ids', 'attention_mask'],
'format_kwargs': {},
'output_all_columns': False,
'type': 'torch'}
>>> ds["train"][0]
{'text': 'compassionately explores the seemingly irreconcilable situation between conservative christian parents and their estranged gay and lesbian children .',
'label': tensor(1),
'input_ids': tensor([ 101, 18027, 16310, 16001, 1103, 9321, 178, 11604, 7235, 6617,
1742, 2165, 2820, 1206, 6588, 22572, 12937, 1811, 2153, 1105,
1147, 12890, 19587, 6463, 1105, 15026, 1482, 119, 102, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0]),
'token_type_ids': tensor([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]),
'attention_mask': tensor([1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0])}with_transform
< source >( transform: typing.Optional[typing.Callable]columns: typing.Optional[list] = Noneoutput_all_columns: bool = False )
المعاملات
- transform (
Callable, اختياري) — تحويل تنسيق مُعرَّف من قِبل المستخدم، يستبدل التنسيق المُعرَّف بواسطة set_format(). دالة التنسيق هي دالة قابلة للاستدعاء تستقبل دفعة (كقاموس) كمدخل وتعيد دفعة. تُطبَّق هذه الدالة مباشرة قبل إرجاع الكائنات في__getitem__. - columns (
list[str]، اختياري) — الأعمدة التي سيتم تنسيقها في المخرجات. إذا تم تحديدها، فإن دفعة الإدخال الخاصة بالتحويل تحتوي فقط على تلك الأعمدة. - output_all_columns (
bool، القيمة الافتراضية False) — احتفظ بالأعمدة غير المنسّقة أيضًا في المخرجات (ككائنات python). إذا تم ضبطها علىTrue، فسيتم الاحتفاظ بالأعمدة غير المنسّقة الأخرى مع مخرجات التحويل.
حدد صيغة إرجاع __getitem__ باستخدام هذا التحويل. يُطبَّق التحويل على دفعات البيانات في الوقت الفعلي عند استدعاء __getitem__.
يتم تعيين التحويل لكل مجموعة بيانات في قاموس مجموعات البيانات
كما هو الحال مع set_format()، يمكن إعادة تعيين هذا باستخدام reset_format().
على عكس set_transform()، تُعيد with_transform كائن DatasetDict جديدًا يحتوي على كائنات Dataset جديدة.
مثال:
>>> from datasets import load_dataset
>>> from transformers import AutoTokenizer
>>> ds = load_dataset("cornell-movie-review-data/rotten_tomatoes")
>>> tokenizer = AutoTokenizer.from_pretrained("bert-base-cased")
>>> def encode(example):
... return tokenizer(example['text'], truncation=True, padding=True, return_tensors="pt")
>>> ds = ds.with_transform(encode)
>>> ds["train"][0]
{'attention_mask': tensor([1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1]),
'input_ids': tensor([ 101, 1103, 2067, 1110, 17348, 1106, 1129, 1103, 6880, 1432,
112, 188, 1207, 107, 14255, 1389, 107, 1105, 1115, 1119,
112, 188, 1280, 1106, 1294, 170, 24194, 1256, 3407, 1190,
170, 11791, 5253, 188, 1732, 7200, 10947, 12606, 2895, 117,
179, 7766, 118, 172, 15554, 1181, 3498, 6961, 3263, 1137,
188, 1566, 7912, 14516, 6997, 119, 102]),
'token_type_ids': tensor([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0])}تسطيح جدول Apache Arrow الخاص بكل تقسيم (تتم تسطيح الميزات المتداخلة). يتم تسطيح كل عمود بنوع struct إلى عمود واحد لكل حقل من حقول الـ struct. تُترك الأعمدة الأخرى دون تغيير.
مثال:
>>> from datasets import load_dataset
>>> ds = load_dataset("rajpurkar/squad")
>>> ds["train"].features
{'id': Value('string'),
'title': Value('string'),
'context': Value('string'),
'question': Value('string'),
'answers.text': List(Value('string')),
'answers.answer_start': List(Value('int32'))}
>>> ds.flatten()
DatasetDict({
train: Dataset({
features: ['id', 'title', 'context', 'question', 'answers.text', 'answers.answer_start'],
num_rows: 87599
})
validation: Dataset({
features: ['id', 'title', 'context', 'question', 'answers.text', 'answers.answer_start'],
num_rows: 10570
})
})cast
< source >( features: Features )
قم بتحويل مجموعة البيانات إلى مجموعة ميزات جديدة. يتم تطبيق التحويل على جميع مجموعات البيانات في قاموس مجموعة البيانات.
مثال:
>>> from datasets import load_dataset, ClassLabel, Value
>>> ds = load_dataset("cornell-movie-review-data/rotten_tomatoes")
>>> ds["train"].features
{'label': ClassLabel(names=['neg', 'pos']),
'text': Value('string')}
>>> new_features = ds["train"].features.copy()
>>> new_features['label'] = ClassLabel(names=['bad', 'good'])
>>> new_features['text'] = Value('large_string')
>>> ds = ds.cast(new_features)
>>> ds["train"].features
{'label': ClassLabel(names=['bad', 'good']),
'text': Value('large_string')}cast_column
< source >( column: strfeature )
قم بتحويل العمود إلى ميزة للتحليل.
مثال:
>>> from datasets import load_dataset, ClassLabel
>>> ds = load_dataset("cornell-movie-review-data/rotten_tomatoes")
>>> ds["train"].features
{'label': ClassLabel(names=['neg', 'pos']),
'text': Value('string')}
>>> ds = ds.cast_column('label', ClassLabel(names=['bad', 'good']))
>>> ds["train"].features
{'label': ClassLabel(names=['bad', 'good']),
'text': Value('string')}remove_columns
< source >( column_names: typing.Union[str, list[str]] ) → DatasetDict
المعاملات
يعيد
نسخة من كائن مجموعة البيانات دون الأعمدة المراد إزالتها.
إزالة عمود واحد أو عدة أعمدة من كل تقسيم في مجموعة البيانات والسمات المرتبطة بالعمود أو الأعمدة.
تُطبَّق عملية التحويل على جميع تقسيمات قاموس مجموعة البيانات.
يمكنك أيضًا إزالة عمود باستخدام map() مع remove_columns لكن الطريقة الحالية لا تنسخ بيانات الأعمدة المتبقية وبالتالي فهي أسرع.
مثال:
>>> from datasets import load_dataset
>>> ds = load_dataset("cornell-movie-review-data/rotten_tomatoes")
>>> ds = ds.remove_columns("label")
DatasetDict({
train: Dataset({
features: ['text'],
num_rows: 8530
})
validation: Dataset({
features: ['text'],
num_rows: 1066
})
test: Dataset({
features: ['text'],
num_rows: 1066
})
})rename_column
< source >( original_column_name: strnew_column_name: str )
إعادة تسمية عمود في مجموعة البيانات ونقل الميزات المرتبطة بالعمود الأصلي إلى اسم العمود الجديد. يتم تطبيق التحويل على جميع مجموعات البيانات في قاموس مجموعة البيانات.
يمكنك أيضًا إعادة تسمية عمود باستخدام map() مع remove_columns لكن الطريقة الحالية:
- يتولى نقل الميزات الأصلية تحت اسم العمود الجديد.
- لا ينسخ البيانات إلى مجموعة بيانات جديدة، وبالتالي يكون أسرع بكثير.
مثال:
>>> from datasets import load_dataset
>>> ds = load_dataset("cornell-movie-review-data/rotten_tomatoes")
>>> ds = ds.rename_column("label", "label_new")
DatasetDict({
train: Dataset({
features: ['text', 'label_new'],
num_rows: 8530
})
validation: Dataset({
features: ['text', 'label_new'],
num_rows: 1066
})
test: Dataset({
features: ['text', 'label_new'],
num_rows: 1066
})
})rename_columns
< source >( column_mapping: dict ) → DatasetDict
المعاملات
يعيد
نسخة من مجموعة البيانات مع إعادة تسمية الأعمدة.
أعد تسمية عدة أعمدة في مجموعة البيانات، وانقل الميزات المرتبطة بالأعمدة الأصلية إلى الأسماء الجديدة للأعمدة. يتم تطبيق التحويل على جميع مجموعات البيانات في قاموس مجموعة البيانات.
مثال:
>>> from datasets import load_dataset
>>> ds = load_dataset("cornell-movie-review-data/rotten_tomatoes")
>>> ds.rename_columns({'text': 'text_new', 'label': 'label_new'})
DatasetDict({
train: Dataset({
features: ['text_new', 'label_new'],
num_rows: 8530
})
validation: Dataset({
features: ['text_new', 'label_new'],
num_rows: 1066
})
test: Dataset({
features: ['text_new', 'label_new'],
num_rows: 1066
})
})select_columns
< source >( column_names: typing.Union[str, list[str]] )
اختر عمودًا واحدًا أو عدة أعمدة من كل تقسيم في مجموعة البيانات والميزات المرتبطة بالعمود أو الأعمدة.
تُطبَّق عملية التحويل على جميع تقسيمات قاموس مجموعة البيانات.
مثال:
>>> from datasets import load_dataset
>>> ds = load_dataset("cornell-movie-review-data/rotten_tomatoes")
>>> ds.select_columns("text")
DatasetDict({
train: Dataset({
features: ['text'],
num_rows: 8530
})
validation: Dataset({
features: ['text'],
num_rows: 1066
})
test: Dataset({
features: ['text'],
num_rows: 1066
})
})class_encode_column
< source >( column: strinclude_nulls: bool = False )
يُحوّل العمود المُعطى إلى ClassLabel ويحدّث الجداول.
مثال:
>>> from datasets import load_dataset
>>> ds = load_dataset("google/boolq")
>>> ds["train"].features
{'answer': Value('bool'),
'passage': Value('string'),
'question': Value('string')}
>>> ds = ds.class_encode_column("answer")
>>> ds["train"].features
{'answer': ClassLabel(num_classes=2, names=['False', 'True']),
'passage': Value('string'),
'question': Value('string')}push_to_hub
< source >( repo_id: strconfig_name: str = 'default'set_default: typing.Optional[bool] = Nonedata_dir: typing.Optional[str] = Nonecommit_message: typing.Optional[str] = Nonecommit_description: typing.Optional[str] = Noneprivate: typing.Optional[bool] = Nonetoken: typing.Optional[str] = Nonerevision: typing.Optional[str] = Nonecreate_pr: typing.Optional[bool] = Falsemax_shard_size: typing.Union[str, int, NoneType] = Nonenum_shards: typing.Optional[dict[str, int]] = Noneembed_external_files: bool = Truenum_proc: typing.Optional[int] = None )
المعاملات
- repo_id (
str) — معرّف المستودع الذي تريد الدفع إليه، بالصيغة التالية:<user>/<dataset_name>أو<org>/<dataset_name>. كما يقبل<dataset_name>, والذي سيُستخدم افتراضيًا نطاق المستخدم المسجّل.كما يمكن أن يكون موقعًا داخل دلو، على سبيل المثال
buckets/<user_or_org>/<bucket_name>/... - config_name (
str) — اسم إعداد مجموعة البيانات. القيمة الافتراضية هي “default”. - set_default (
bool، اختياري) — ما إذا كان يجب تعيين هذا الإعداد كإعداد افتراضي. وإلا، فإن الإعداد الافتراضي هو ذلك المسمى بـ “default”. - data_dir (
str, اختياري) — اسم المجلد الذي سيحتوي على ملفات البيانات المرفوعة. القيمة الافتراضية هيconfig_nameإذا كانت مختلفة عن "default"، وإلا فهي "data".أُضيف في 2.17.0
- commit_message (
str، اختياري) — الرسالة التي سيتم الالتزام بها أثناء الدفع. ستكون الافتراضية"Upload dataset". - commit_description (
str, اختياري) — وصف للالتزام الذي سيتم إنشاؤه. بالإضافة إلى ذلك، وصف لطلب الانضمام إذا تم إنشاؤه (create_prهو True).أُضيف في 2.16.0
- private (
bool، اختياري) — ما إذا كان سيتم جعل المستودع خاصًا. إذا كانNone(الافتراضي)، فسيكون المستودع عامًا ما لم يكن الافتراضي للمنظمة هو الخاص. يتم تجاهل هذه القيمة إذا كان المستودع موجودًا بالفعل. - token (
str, اختياري) — رمز مصادقة اختياري لـ Hugging Face Hub. إذا لم يتم تمرير رمز، فسيتم افتراضياً استخدام الرمز المحفوظ محلياً عند تسجيل الدخول باستخدامhf auth login. سيُطلق خطأً إذا لم يتم تمرير رمز وكان المستخدم غير مسجّل الدخول. - revision (
str, اختياري) — الفرع الذي سيتم دفع الملفات المرفوعة إليه. الافتراضي هو الفرع"main".أُضيف في 2.15.0
- create_pr (
bool, اختياري, الافتراضي هوFalse) — ما إذا كان يجب إنشاء طلب سحب (PR) بالملفات المرفوعة أو الالتزام مباشرة.أُضيف في 2.15.0
- max_shard_size (
intأوstr، اختياري، القيمة الافتراضية"500MB") — الحد الأقصى لحجم أجزاء مجموعة البيانات التي سيتم رفعها إلى hub. إذا تم التعبير عنه كنص، فيجب أن يتكون من أرقام تليها وحدة (مثل"500MB"أو"1GB"). - num_shards (
Dict[str, int], اختياري) — عدد الأجزاء التي سيتم كتابتها. بشكل افتراضي، يعتمد عدد الأجزاء علىmax_shard_size. استخدم قاموسًا لتعريف عدد أجزاء مختلف لكل تقسيم.أُضيف في 2.8.0
- embed_external_files (
bool, الافتراضي هوTrue) — ما إذا كان يجب تضمين بايتات الملفات في الشرائح. على وجه التحديد، سيقوم بذلك قبل الدفع للحقول من النوع: - num_proc (
int, اختياري, القيمة الافتراضية هيNone) — عدد العمليات عند تجهيز مجموعة البيانات ورفعها. يُفيد هذا الأمر إذا كانت مجموعة البيانات تتكون من العديد من العينات أو ملفات الوسائط المضمنة. يستخدم سياق "spawn" للعمل مع hf_xet، وهو عميل rust للرفع السريع إلى HF. تُعطَّل المعالجة متعددة العمليات افتراضيًا.أُضيف في 4.0.0
يدفع DatasetDict إلى المستودع كمجموعة بيانات Parquet. يتم دفع DatasetDict باستخدام طلبات HTTP ولا يتطلب تثبيت git أو git-lfs.
سيتم دفع كل تقسيم من تقسيمات مجموعة البيانات بشكل مستقل. وستحتفظ مجموعة البيانات المُدَفوعة بأسماء التقسيمات الأصلية.
ملفات Parquet الناتجة مكتفية ذاتياً افتراضياً: إذا احتوى مجموعة البيانات الخاصة بك على بيانات Image أو Audio، فستخزن ملفات Parquet البايتات الخاصة بصورك أو ملفات الصوت.
يمكنك تعطيل ذلك عن طريق تعيين embed_external_files إلى False.
مثال:
>>> dataset_dict.push_to_hub("<organization>/<dataset_id>")
>>> dataset_dict.push_to_hub("<organization>/<dataset_id>", private=True)
>>> dataset_dict.push_to_hub("<organization>/<dataset_id>", max_shard_size="1GB")
>>> dataset_dict.push_to_hub("<organization>/<dataset_id>", num_shards={"train": 1024, "test": 8})إذا كنت ترغب في إضافة تكوين جديد (أو مجموعة فرعية) إلى مجموعة بيانات (على سبيل المثال، إذا كانت مجموعة البيانات تحتوي على مهام/إصدارات/لغات متعددة):
>>> english_dataset.push_to_hub("<organization>/<dataset_id>", "en")
>>> french_dataset.push_to_hub("<organization>/<dataset_id>", "fr")
>>> # later
>>> english_dataset = load_dataset("<organization>/<dataset_id>", "en")
>>> french_dataset = load_dataset("<organization>/<dataset_id>", "fr")save_to_disk
< source >( dataset_dict_path: typing.Union[str, bytes, os.PathLike]max_shard_size: typing.Union[str, int, NoneType] = Nonenum_shards: typing.Optional[dict[str, int]] = Nonenum_proc: typing.Optional[int] = Nonestorage_options: typing.Optional[dict] = None )
المعاملات
- dataset_dict_path (
path-like) — المسار (مثلdataset/train) أو معرّف URI عن بُعد (مثلs3://my-bucket/dataset/train) لمجلد قاموس البيانات الذي سيُحفظ فيه قاموس البيانات. - max_shard_size (
intأوstr، اختياري، القيمة الافتراضية"500MB") — الحد الأقصى لحجم أجزاء مجموعة البيانات التي سيتم حفظها على نظام الملفات. إذا تم التعبير عنه كنص، فيجب أن يتكون من أرقام تليها وحدة (مثل"50MB"). - num_shards (
Dict[str, int], اختياري) — عدد الشرائح التي سيتم كتابتها. بشكل افتراضي، يعتمد عدد الشرائح علىmax_shard_sizeوnum_proc. يجب عليك تحديد عدد الشرائح لكل مجموعة بيانات في قاموس مجموعات البيانات. استخدم قاموسًا لتعريف عدد شرائح مختلف لكل تقسيم.أُضيف في 2.8.0
- num_proc (
int, اختياري, الافتراضيNone) — عدد العمليات عند تنزيل مجموعة البيانات وتوليدها محليًا. تُعطَّل المعالجة متعددة العمليات افتراضيًا.أُضيف في 2.8.0
- storage_options (
dict, اختياري) — أزواج مفتاح/قيمة تُمرَّر إلى نظام الملفات الخلفي، إن وُجد.أُضيف في 2.8.0
يحفظ قاموس مجموعة بيانات على نظام الملفات باستخدام fsspec.spec.AbstractFileSystem.
تُخزَّن جميع بيانات Image() وAudio() وVideo() في ملفات arrow. إذا كنت ترغب في تخزين المسارات أو الروابط، فالرجاء استخدام النوع Value(“string”).
load_from_disk
< source >( dataset_dict_path: typing.Union[str, bytes, os.PathLike]keep_in_memory: typing.Optional[bool] = Nonestorage_options: typing.Optional[dict] = None )
المعاملات
- dataset_dict_path (
path-like) — المسار (مثل"dataset/train") أو معرّف URI عن بُعد (مثل"s3//my-bucket/dataset/train") لمجلد قاموس البيانات الذي سيتم تحميل قاموس البيانات منه. - keep_in_memory (
bool، القيمة الافتراضيةNone) — ما إذا كان سيتم نسخ مجموعة البيانات في الذاكرة. إذا كانتNone، فلن يتم نسخ مجموعة البيانات في الذاكرة ما لم يتم تفعيل ذلك صراحةً عن طريق تعيينdatasets.config.IN_MEMORY_MAX_SIZEإلى قيمة غير صفرية. راجع المزيد من التفاصيل في قسم تحسين الأداء. - storage_options (
dict, اختياري) — أزواج مفتاح/قيمة تُمرَّر إلى نظام الملفات الخلفي، إن وُجد.أُضيف في 2.8.0
حمّل مجموعة بيانات تم حفظها سابقًا باستخدام save_to_disk من نظام ملفات باستخدام fsspec.spec.AbstractFileSystem.
from_csv
< source >( path_or_paths: dictfeatures: typing.Optional[datasets.features.features.Features] = Nonecache_dir: str = Nonekeep_in_memory: bool = False**kwargs )
المعاملات
- path_or_paths (
dictمن مسارات) — مسار أو مسارات ملفات CSV. - features (Features، اختياري) — مميزات مجموعة البيانات.
- cache_dir (str، اختياري، الافتراضي
"~/.cache/huggingface/datasets") — المجلد الذي يُخزَّن فيه البيانات مؤقتًا. - keep_in_memory (
bool، القيمة الافتراضيةFalse) — ما إذا كان سيتم نسخ البيانات في الذاكرة. - **kwargs (معلمات إضافية بالكلمات المفتاحية) —
معلمات بالكلمات المفتاحية تُمرَّر إلى
pandas.read_csv.
إنشاء DatasetDict من ملف CSV أو أكثر.
from_json
< source >( path_or_paths: dictfeatures: typing.Optional[datasets.features.features.Features] = Nonecache_dir: str = Nonekeep_in_memory: bool = False**kwargs )
المعاملات
- path_or_paths (
path-likeأو قائمة منpath-like) — مسار أو مسارات ملفات JSON Lines. - features (Features، اختياري) — مميزات مجموعة البيانات.
- cache_dir (str، اختياري، الافتراضي
"~/.cache/huggingface/datasets") — المجلد الذي يُخزَّن فيه البيانات مؤقتًا. - keep_in_memory (
bool، القيمة الافتراضيةFalse) — ما إذا كان سيتم نسخ البيانات في الذاكرة. - **kwargs (معلمات إضافية بالكلمات المفتاحية) —
معلمات بالكلمات المفتاحية تُمرَّر إلى
JsonConfig.
إنشاء DatasetDict من ملف أو ملفات JSON Lines.
from_parquet
< source >( path_or_paths: dictfeatures: typing.Optional[datasets.features.features.Features] = Nonecache_dir: str = Nonekeep_in_memory: bool = Falsecolumns: typing.Optional[list[str]] = None**kwargs )
المعاملات
- path_or_paths (
dictمن مسارات) — مسار أو مسارات ملفات CSV. - features (Features، اختياري) — مميزات مجموعة البيانات.
- cache_dir (
str، اختياري، الافتراضي"~/.cache/huggingface/datasets") — المجلد الذي يُخزَّن فيه البيانات مؤقتًا. - keep_in_memory (
bool، القيمة الافتراضيةFalse) — ما إذا كان سيتم نسخ البيانات في الذاكرة. - columns (
list[str]، اختياري) — إذا لم يكنNone، فسيتم قراءة هذه الأعمدة فقط من الملف. قد يكون اسم العمدة بادئة لحقل متداخل، على سبيل المثال، ‘a’ سيحدد ‘a.b’ و ‘a.c’ و ‘a.d.e’. - **kwargs (معلمات إضافية بالكلمات المفتاحية) —
معلمات بالكلمات المفتاحية تُمرَّر إلى
ParquetConfig.
إنشاء DatasetDict من ملف Parquet أو أكثر.
from_text
< source >( path_or_paths: dictfeatures: typing.Optional[datasets.features.features.Features] = Nonecache_dir: str = Nonekeep_in_memory: bool = False**kwargs )
المعاملات
- path_or_paths (
dictمن مسارات) — مسار أو مسارات ملف النص. - features (Features، اختياري) — مميزات مجموعة البيانات.
- cache_dir (
str، اختياري، الافتراضي"~/.cache/huggingface/datasets") — المجلد الذي يُخزَّن فيه البيانات مؤقتًا. - keep_in_memory (
bool، القيمة الافتراضيةFalse) — ما إذا كان سيتم نسخ البيانات في الذاكرة. - **kwargs (معلمات إضافية بالكلمات المفتاحية) —
معلمات بالكلمات المفتاحية تُمرَّر إلى
TextConfig.
إنشاء DatasetDict من ملف نصي أو أكثر.
IterableDataset
تُنفّذ الفئة الأساسية IterableDataset مجموعة بيانات قابلة للتكرار مدعومة بمولّدات بايثون.
فئة datasets.IterableDataset
< source >( ex_iterable: _BaseExamplesIterableinfo: typing.Optional[datasets.info.DatasetInfo] = Nonesplit: typing.Optional[datasets.splits.NamedSplit] = Noneformatting: typing.Optional[datasets.iterable_dataset.FormattingConfig] = Nonedistributed: typing.Optional[datasets.iterable_dataset.DistributedConfig] = Nonetoken_per_repo_id: typing.Optional[dict[str, typing.Union[str, bool, NoneType]]] = None )
مجموعة بيانات مدعومة بقابل للتكرار.
أنشئ كائن IterableDataset من جدول Arrow في الملف المحدد باسمه.
from_pandas
< source >( df: DataFramefeatures: typing.Optional[datasets.features.features.Features] = Noneinfo: typing.Optional[datasets.info.DatasetInfo] = Nonesplit: typing.Optional[datasets.splits.NamedSplit] = Nonepreserve_index: typing.Optional[bool] = Nonenum_shards: typing.Optional[int] = 1 )
المعاملات
- df (
pandas.DataFrame) — إطار بيانات يحتوي على مجموعة البيانات. - features (Features، اختياري) — مميزات مجموعة البيانات.
- info (
DatasetInfo، اختياري) — معلومات عن مجموعة البيانات، مثل الوصف والاستشهاد وما إلى ذلك. - split (
NamedSplit, اختياري) — اسم تقسيم مجموعة البيانات. - preserve_index (
bool، اختياري) — ما إذا كان سيتم تخزين الفهرس كعمود إضافي في مجموعة البيانات الناتجة. القيمة الافتراضيةNoneستخزّن الفهرس كعمود، باستثناءRangeIndexالذي يُخزَّن كبيانات وصفية فقط. استخدمpreserve_index=Trueلإجباره على التخزين كعمود. - num_shards (
int، القيمة الافتراضية1) — عدد الأجزاء (shards) التي يجب تحديدها عند إنشاء مجموعة البيانات القابلة للتكرار. هذا مفيد بشكل خاص للمجموعات الكبيرة من البيانات لتمكين الخلط بشكل صحيح، كما أنه يتيح التحميل المتوازي السريع باستخدام PyTorch DataLoader أو في الإعدادات الموزعة على سبيل المثال.
قم بتحويل pandas.DataFrame إلى pyarrow.Table لإنشاء IterableDataset.
تُستنتج أنواع الأعمدة في جدول Arrow الناتج من أنواع البيانات (dtypes) الخاصة بـ pandas.Series داخل DataFrame. في حالة السلاسل غير الكائنية (non-object Series)، يُترجم نوع NumPy إلى ما يعادله في Arrow. أما في حالة object، فيجب تخمين نوع البيانات من خلال فحص الكائنات Python الموجودة في هذا السلسلة.
انتبه إلى أن سلسلة من نوع object لا تحمل معلومات كافية دائمًا للتوصل إلى نوع Arrow ذي معنى. في حال تعذّر استنتاج النوع، على سبيل المثال لأن إطار البيانات طوله 0 أو لأن السلسلة تحتوي فقط على كائنات None/nan، يتم تعيين النوع إلى null. يمكن تجنّب هذا السلوك من خلال بناء ميزات صريحة وتوريدها إلى هذه الدالة.
Important: a dataset created with from_pandas() lives in memory. This may change in the future, but in the meantime if you want to reduce memory usage you should write it on disk and reload using e.g. to_parquet / from_parquet.
from_dict
< source >( mapping: dictfeatures: typing.Optional[datasets.features.features.Features] = Noneinfo: typing.Optional[datasets.info.DatasetInfo] = Nonesplit: typing.Optional[datasets.splits.NamedSplit] = Nonenum_shards: typing.Optional[int] = 1 )
المعاملات
- mapping (
Mapping) — تعيين السلاسل النصية إلى مصفوفات أو قوائم بايثون. - features (Features، اختياري) — مميزات مجموعة البيانات.
- info (
DatasetInfo، اختياري) — معلومات عن مجموعة البيانات، مثل الوصف والاستشهاد وما إلى ذلك. - split (
NamedSplit, اختياري) — اسم تقسيم مجموعة البيانات. - num_shards (
int، القيمة الافتراضية1) — عدد الأجزاء (shards) التي يجب تحديدها عند إنشاء مجموعة البيانات القابلة للتكرار. هذا مفيد بشكل خاص للمجموعات الكبيرة من البيانات لتمكين الخلط بشكل صحيح، كما أنه يتيح التحميل المتوازي السريع باستخدام PyTorch DataLoader أو في الإعدادات الموزعة على سبيل المثال.
تحويل dict إلى pyarrow.Table لإنشاء IterableDataset.
Important: a dataset created with from_dict() lives in memory. This may change in the future, but in the meantime if you want to reduce memory usage you should write it back on disk and reload using e.g. to_parquet / from_parquet.
from_list
< source >( mapping: listfeatures: typing.Optional[datasets.features.features.Features] = Noneinfo: typing.Optional[datasets.info.DatasetInfo] = Nonesplit: typing.Optional[datasets.splits.NamedSplit] = Nonenum_shards: typing.Optional[int] = 1 )
المعاملات
- mapping (
List[dict]) — قائمة من خرائط تُحوّل السلاسل النصية إلى قيم الصفوف. - features (
Features، اختياري) — ميزات مجموعة البيانات. - info (
DatasetInfo، اختياري) — معلومات عن مجموعة البيانات، مثل الوصف والاستشهاد وما إلى ذلك. - split (
NamedSplit, اختياري) — اسم تقسيم مجموعة البيانات. - num_shards (
int، القيمة الافتراضية1) — عدد الأجزاء (shards) التي يجب تحديدها عند إنشاء مجموعة البيانات القابلة للتكرار. هذا مفيد بشكل خاص للمجموعات الكبيرة من البيانات لتمكين الخلط بشكل صحيح، كما أنه يتيح التحميل المتوازي السريع باستخدام PyTorch DataLoader أو في الإعدادات الموزعة على سبيل المثال.
تحويل قائمة من القواميس إلى pyarrow.Table لإنشاء IterableDataset`.
لاحظ أن مفاتيح الإدخال الأول ستُستخدم لتحديد أعمدة مجموعة البيانات، بغض النظر عما يُمرر إلى features.
Important: a dataset created with from_list() lives in memory. This may change in the future, but in the meantime if you want to reduce memory usage you should write it back on disk and reload using e.g. from_parquet / to_parquet.
from_generator
< source >( generator: typing.Callablefeatures: typing.Optional[datasets.features.features.Features] = Nonegen_kwargs: typing.Optional[dict] = Nonesplit: NamedSplit = NamedSplit('train') )
المعاملات
- generator (
Callable) — دالة مولِّدةyieldsأمثلة. - features (
Features، اختياري) — مميزات مجموعة البيانات. - gen_kwargs(
dict, اختياري) — حجج الكلمات المفتاحية التي سيتم تمريرها إلى الدالة القابلة للاستدعاءgenerator. يمكنك تحديد مجموعة بيانات قابلة للتكرار مقسمة إلى أجزاء عن طريق تمرير قائمة الأجزاء فيgen_kwargs. يمكن استخدام ذلك لتحسين الخلط وعند التكرار على مجموعة البيانات باستخدام عدة عمّال. - split (NamedSplit, الافتراضي هو
Split.TRAIN) — اسم الجزء الذي سيُسند إلى مجموعة البيانات.أُضيف في 2.21.0
إنشاء مجموعة بيانات قابلة للتكرار من مولّد.
مثال:
>>> def gen():
... yield {"text": "Good", "label": 0}
... yield {"text": "Bad", "label": 1}
...
>>> ds = IterableDataset.from_generator(gen)>>> def gen(shards):
... for shard in shards:
... with open(shard) as f:
... for line in f:
... yield {"line": line}
...
>>> shards = [f"data{i}.txt" for i in range(32)]
>>> ds = IterableDataset.from_generator(gen, gen_kwargs={"shards": shards})
>>> ds = ds.shuffle(seed=42, buffer_size=10_000) # shuffles the shards order + uses a shuffle buffer
>>> from torch.utils.data import DataLoader
>>> dataloader = DataLoader(ds.with_format("torch"), num_workers=4) # give each worker a subset of 32/4=8 shardsremove_columns
< source >( column_names: typing.Union[str, list[str]] ) → IterableDataset
احذف عمودًا واحدًا أو عدة أعمدة من مجموعة البيانات والميزات المرتبطة بها. يتم إجراء الإزالة على الفور على الأمثلة عند التكرار على مجموعة البيانات.
مثال:
>>> from datasets import load_dataset
>>> ds = load_dataset("cornell-movie-review-data/rotten_tomatoes", split="train", streaming=True)
>>> next(iter(ds))
{'text': 'the rock is destined to be the 21st century's new " conan " and that he's going to make a splash even greater than arnold schwarzenegger , jean-claud van damme or steven segal .', 'label': 1}
>>> ds = ds.remove_columns("label")
>>> next(iter(ds))
{'text': 'the rock is destined to be the 21st century's new " conan " and that he's going to make a splash even greater than arnold schwarzenegger , jean-claud van damme or steven segal .'}select_columns
< source >( column_names: typing.Union[str, list[str]] ) → IterableDataset
اختر عمودًا واحدًا أو عدة أعمدة في مجموعة البيانات والميزات المرتبطة بها. يتم تنفيذ الاختيار على الفور على الأمثلة أثناء التكرار على مجموعة البيانات.
مثال:
>>> from datasets import load_dataset
>>> ds = load_dataset("cornell-movie-review-data/rotten_tomatoes", split="train", streaming=True)
>>> next(iter(ds))
{'text': 'the rock is destined to be the 21st century's new " conan " and that he's going to make a splash even greater than arnold schwarzenegger , jean-claud van damme or steven segal .', 'label': 1}
>>> ds = ds.select_columns("text")
>>> next(iter(ds))
{'text': 'the rock is destined to be the 21st century's new " conan " and that he's going to make a splash even greater than arnold schwarzenegger , jean-claud van damme or steven segal .'}cast_column
< source >( column: strfeature: typing.Union[dict, list, tuple, datasets.features.features.Value, datasets.features.features.ClassLabel, datasets.features.translation.Translation, datasets.features.translation.TranslationVariableLanguages, datasets.features.features.LargeList, datasets.features.features.List, datasets.features.features.Array2D, datasets.features.features.Array3D, datasets.features.features.Array4D, datasets.features.features.Array5D, datasets.features.audio.Audio, datasets.features.image.Image, datasets.features.mesh.Mesh, datasets.features.video.Video, datasets.features.pdf.Pdf, datasets.features.nifti.Nifti, datasets.features.bio_sequence.BioSequence, datasets.features.bio_structure.BioStructure] ) → IterableDataset
قم بتحويل العمود إلى ميزة للتحليل.
مثال:
>>> from datasets import load_dataset, Audio
>>> ds = load_dataset("PolyAI/minds14", name="en-US", split="train", streaming=True)
>>> ds.features
{'audio': Audio(sampling_rate=8000, mono=True, decode=True, id=None),
'english_transcription': Value('string'),
'intent_class': ClassLabel(num_classes=14, names=['abroad', 'address', 'app_error', 'atm_limit', 'balance', 'business_loan', 'card_issues', 'cash_deposit', 'direct_debit', 'freeze', 'high_value_payment', 'joint_account', 'latest_transactions', 'pay_bill']),
'lang_id': ClassLabel(num_classes=14, names=['cs-CZ', 'de-DE', 'en-AU', 'en-GB', 'en-US', 'es-ES', 'fr-FR', 'it-IT', 'ko-KR', 'nl-NL', 'pl-PL', 'pt-PT', 'ru-RU', 'zh-CN']),
'path': Value('string'),
'transcription': Value('string')}
>>> ds = ds.cast_column("audio", Audio(sampling_rate=16000))
>>> ds.features
{'audio': Audio(sampling_rate=16000, mono=True, decode=True, id=None),
'english_transcription': Value('string'),
'intent_class': ClassLabel(num_classes=14, names=['abroad', 'address', 'app_error', 'atm_limit', 'balance', 'business_loan', 'card_issues', 'cash_deposit', 'direct_debit', 'freeze', 'high_value_payment', 'joint_account', 'latest_transactions', 'pay_bill']),
'lang_id': ClassLabel(num_classes=14, names=['cs-CZ', 'de-DE', 'en-AU', 'en-GB', 'en-US', 'es-ES', 'fr-FR', 'it-IT', 'ko-KR', 'nl-NL', 'pl-PL', 'pt-PT', 'ru-RU', 'zh-CN']),
'path': Value('string'),
'transcription': Value('string')}cast
< source >( features: Features ) → IterableDataset
المعاملات
- features (Features) —
ميزات جديدة لتحويل مجموعة البيانات إليها.
يجب أن تتطابق أسماء الحقول في الميزات مع أسماء الأعمدة الحالية.
كما يجب أن يكون نوع البيانات قابلاً للتحويل من نوع إلى آخر.
للتحويل غير البسيط، مثل
string<->ClassLabel، يجب عليك استخدام map() لتحديث مجموعة البيانات.
يعيد
IterableDataset
نسخة من مجموعة البيانات مع الميزات المُحوَّلة.
قم بتحويل مجموعة البيانات إلى مجموعة جديدة من الميزات.
مثال:
>>> from datasets import load_dataset, ClassLabel, Value
>>> ds = load_dataset("cornell-movie-review-data/rotten_tomatoes", split="train", streaming=True)
>>> ds.features
{'label': ClassLabel(names=['neg', 'pos']),
'text': Value('string')}
>>> new_features = ds.features.copy()
>>> new_features["label"] = ClassLabel(names=["bad", "good"])
>>> new_features["text"] = Value("large_string")
>>> ds = ds.cast(new_features)
>>> ds.features
{'label': ClassLabel(names=['bad', 'good']),
'text': Value('large_string')}decode
< source >( enable: bool = Truenum_threads: typing.Optional[int] = None ) → IterableDataset
المعاملات
- enable (
bool، القيمة الافتراضيةTrue) — تفعيل أو تعطيل فك ترميز الميزات. - num_threads (
int, اختياري، القيمة الافتراضيةNone) — تفعيل تعدد الخيوط (Multithreading) لفك ترميز الميزات. لاحظ أن load_dataset() يستخدم بالفعل بعض الخيوط افتراضيًا عند بث مجموعة بيانات من HF تتضمن ميزات قابلة للفك. افتراضيًا، يتم تعيينnum_threadsإلى 32 إذا كانت هناك ميزة واحدة على الأقل تتطلب فك الترميز، وإلا فتم تعيينه إلى 0.
يعيد
IterableDataset
نسخة من مجموعة البيانات مع الميزات المُحوَّلة.
تفعيل أو تعطيل فك ترميز ميزات مجموعة البيانات للصوت والصورة والفيديو.
عند التفعيل (الافتراضي)، يتم فك ترميز أنواع الوسائط:
- audio -> قاموس يحتوي على “array” و “sampling_rate” و “path”
- image -> PIL.Image
- video -> torchcodec.decoders.VideoDecoder
يمكن تفعيل تعدد الخيوط باستخدام num_threads: حيث يُقرأ كل ملف وسائط ويُفكّ تشفيره في خيط عامل، مما يتيح تداخل رحلات الشبكة ذهابًا وإيابًا بين الأمثلة المتتالية. وهذا مفيد بشكل خاص لتسريع بث البيانات عن بُعد، وقد فعّلت load_dataset() هذه الميزة افتراضيًا عند بث مجموعة بيانات عن بُعد تحتوي على سمات قابلة لفك التشفير (انظر HF_DATASETS_DECODE_NUM_THREADS). أما مجموعات البيانات المقروءة من القرص المحلي فتُبث باستخدام num_threads=0، لأن تعدد الخيوط قد يكون أبطأ من فك التشفير في الخيط الرئيسي للبيانات المحلية على الأقراص السريعة. وبما أن الأمثلة تُفكّ تشفيرها مسبقًا، يمكن لكل خيط نشط الاحتفاظ بمثال واحد في الذاكرة: قلّل قيمة num_threads لتقليل استهلاك الذاكرة.
يكون تعطيل فك الترميز مفيداً إذا كنت ترغب في التكرار على مسارات ملفات الوسائط أو بايتاتها دون فك ترميز محتواها فعلياً. ولتعطيل فك الترميز يمكنك استخدام .decode(False)، وهو ما يعادل استدعاء .cast() أو .cast_column() مع ضبط جميع أنواع Audio و Image و Video على decode=False.
أمثلة:
تعطيل فك الترميز:
>>> from datasets import load_dataset
>>> ds = load_dataset("sshh12/planet-textures", split="train", streaming=True)
>>> next(iter(ds))
{'image': <PIL.PngImagePlugin.PngImageFile image mode=RGB size=2048x1024>,
'text': 'A distant celestial object with an icy crust, displaying a light blue shade, covered with round pits and rugged terrains.'}
>>> ds = ds.decode(False)
>>> ds.features
{'image': Image(mode=None, decode=False, id=None),
'text': Value('string')}
>>> next(iter(ds))
{
'image': {
'path': 'hf://datasets/sshh12/planet-textures@69dc4cef7a5c4b2cfe387727ec8ea73d4bff7302/train/textures/0000.png',
'bytes': None
},
'text': 'A distant celestial object with an icy crust, displaying a light blue shade, covered with round pits and rugged terrains.'
}تسريع البث باستخدام الخيوط المتعددة:
>>> import os
>>> from datasets import load_dataset
>>> from tqdm import tqdm
>>> ds = load_dataset("sshh12/planet-textures", split="train", streaming=True)
>>> # already threaded by default with 32 threads, but more threads can help going even faster
>>> ds = ds.decode(num_threads=64)
>>> for _ in tqdm(ds): # 2 times faster !
... ...iter
< source >( batch_size: intdrop_last_batch: bool = False )
تكرار عبر الدفعات ذات الحجم batch_size.
map
< source >( function: typing.Optional[typing.Callable] = Nonewith_indices: bool = Falseinput_columns: typing.Union[str, list[str], NoneType] = Nonebatched: bool = Falsebatch_size: typing.Optional[int] = 1000drop_last_batch: bool = Falseremove_columns: typing.Union[str, list[str], NoneType] = Nonefeatures: typing.Optional[datasets.features.features.Features] = Nonefn_kwargs: typing.Optional[dict] = None )
المعاملات
- function (
Callable, اختياري, القيمة الافتراضية هيNone) — دالة تُطبَّق على الفور على الأمثلة عند تكرار مجموعة البيانات. يجب أن يكون لها أحد التواقيع التالية:function(example: Dict[str, Any]) -> Dict[str, Any]إذا كانbatched=Falseوwith_indices=Falsefunction(example: Dict[str, Any], idx: int) -> Dict[str, Any]إذا كانbatched=Falseوwith_indices=Truefunction(batch: Dict[str, List]) -> Dict[str, List]إذا كانbatched=Trueوwith_indices=Falsefunction(batch: Dict[str, List], indices: List[int]) -> Dict[str, List]إذا كانbatched=Trueوwith_indices=True
للاستخدام المتقدم، يمكن للدالة أيضاً أن تُرجع
pyarrow.Table. إذا كانت الدالة غير متزامنة، فإنmapستنفّذ دالتك بالتوازي. علاوة على ذلك، إذا كانت دالتك لا تُرجع شيئاً (None)، فإنmapستنفّذ دالتك وتُرجع مجموعة البيانات دون تغيير. إذا لم تُوفَّر دالة، فسيتم افتراض دالة الهوية:lambda x: x. - with_indices (
bool، القيمة الافتراضيةFalse) — توفير فهارس أمثلة إلىfunction. لاحظ أنه في هذه الحالة يجب أن تكون التوقيع الخاص بـfunctionهوdef function(example, idx[, rank]): .... - input_columns (
Optional[Union[str, List[str]]]، القيمة الافتراضيةNone) — الأعمدة التي سيتم تمريرها إلىfunctionكحجج موضعية. إذا كانتNone، يتم تمرير قاموس يقابل جميع الأعمدة المنسّقة كحجة واحدة. - batched (
bool، الافتراضيFalse) — تقديم دفعة من الأمثلة إلىfunction. - batch_size (
int، اختياري، القيمة الافتراضية1000) — عدد الأمثلة في كل دفعة تُقدَّم إلىfunctionإذا كانbatched=True. إذا كانbatch_size <= 0أوbatch_size == None، فسيتم تقديم مجموعة البيانات الكاملة كدفعة واحدة إلىfunction. - drop_last_batch (
bool، القيمة الافتراضيةFalse) — ما إذا كان يجب تجاهل الدفعة الأخيرة الأصغر من batch_size بدلاً من معالجتها بواسطة الدالة. - remove_columns (
[List[str]]، اختياري، القيمة الافتراضيةNone) — إزالة مجموعة من الأعمدة أثناء تنفيذ عملية الخرائط (mapping). سيتم حذف الأعمدة قبل تحديث الأمثلة بمخرجاتfunction، أي إذا كانfunctionيضيف أعمدة بأسماء موجودة فيremove_columns، فسيتم الاحتفاظ بهذه الأعمدة. - features (
[Features]، اختياري، القيمة الافتراضيةNone) — أنواع الميزات في مجموعة البيانات الناتجة. - fn_kwargs (
Dict، اختياري، الافتراضيNone) — حجج الكلمات المفتاحية التي سيتم تمريرها إلىfunction.
تطبيق دالة على جميع الأمثلة في مجموعة البيانات القابلة للتكرار (فردية أو على شكل دفعات) وتحديثها. إذا كانت دالتك تعيد عمودًا موجودًا مسبقًا، فإنها تستبدل محتواه. تُطبَّق الدالة على الأمثلة أثناء التكرار على مجموعة البيانات بشكل فوري.
يمكنك تحديد ما إذا كان ينبغي تجميع الدالة أم لا باستخدام معامل batched:
- إذا كانت
False، فإن الدالة تستقبل مثالًا واحدًا ويجب أن تُرجع مثالًا واحدًا. المثال هو قاموس، مثل{"text": "Hello there !"}. - إذا كان
Trueوbatch_sizeيساوي 1، فإن الدالة تستقبل دفعة تحتوي على مثال واحد كمدخلات، ويمكنها إرجاع دفعة تحتوي على مثال واحد أو أكثر. الدفعة هي قاموس، على سبيل المثال، دفعة تحتوي على مثال واحد هي {“text”: [“Hello there !”]}. - إذا كانت
Trueوbatch_sizeتساويn> 1، فإن الدالة تستقبل دفعة منnأمثلة كمدخلات، ويمكن أن تعيد دفعة تحتوي علىnأمثلة، أو على عدد عشوائي من الأمثلة. لاحظ أن الدفعة الأخيرة قد تحتوي على عدد أقل منnأمثلة. الدفعة هي قاموس، على سبيل المثال، دفعة منnأمثلة هي{"text": ["Hello there !"] * n}.
إذا كانت الدالة غير متزامنة، فسيُنفّذ map دالتك بالتوازي، مع حد أقصى يبلغ ألف استدعاء متزامن.
يُوصى باستخدام asyncio.Semaphore في دالتك إذا كنت ترغب في تحديد الحد الأقصى لعدد العمليات التي يمكن تنفيذها في الوقت نفسه.
مثال:
>>> from datasets import load_dataset
>>> ds = load_dataset("cornell-movie-review-data/rotten_tomatoes", split="train", streaming=True)
>>> def add_prefix(example):
... example["text"] = "Review: " + example["text"]
... return example
>>> ds = ds.map(add_prefix)
>>> list(ds.take(3))
[{'label': 1,
'text': 'Review: the rock is destined to be the 21st century's new " conan " and that he's going to make a splash even greater than arnold schwarzenegger , jean-claud van damme or steven segal .'},
{'label': 1,
'text': 'Review: the gorgeously elaborate continuation of " the lord of the rings " trilogy is so huge that a column of words cannot adequately describe co-writer/director peter jackson's expanded vision of j . r . r . tolkien's middle-earth .'},
{'label': 1, 'text': 'Review: effective but too-tepid biopic'}]rename_column
< source >( original_column_name: strnew_column_name: str ) → IterableDataset
إعادة تسمية عمود في مجموعة البيانات، ونقل الميزات المرتبطة بالعمود الأصلي إلى تحت اسم العمود الجديد.
مثال:
>>> from datasets import load_dataset
>>> ds = load_dataset("cornell-movie-review-data/rotten_tomatoes", split="train", streaming=True)
>>> next(iter(ds))
{'label': 1,
'text': 'the rock is destined to be the 21st century's new " conan " and that he's going to make a splash even greater than arnold schwarzenegger , jean-claud van damme or steven segal .'}
>>> ds = ds.rename_column("text", "movie_review")
>>> next(iter(ds))
{'label': 1,
'movie_review': 'the rock is destined to be the 21st century's new " conan " and that he's going to make a splash even greater than arnold schwarzenegger , jean-claud van damme or steven segal .'}فلتر
< source >( function: typing.Optional[typing.Callable] = Nonewith_indices = Falseinput_columns: typing.Union[str, list[str], NoneType] = Nonebatched: bool = Falsebatch_size: typing.Optional[int] = 1000fn_kwargs: typing.Optional[dict] = None )
المعاملات
- function (
Callable) — دالة قابلة للاستدعاء (Callable) تحمل أحد التواقيع التالية:function(example: Dict[str, Any]) -> boolإذا كانwith_indices=False, batched=Falsefunction(example: Dict[str, Any], indices: int) -> boolإذا كانwith_indices=True, batched=Falsefunction(example: Dict[str, List]) -> List[bool]إذا كانwith_indices=False, batched=Truefunction(example: Dict[str, List], indices: List[int]) -> List[bool]إذا كانwith_indices=True, batched=True
إذا كانت الدالة غير متزامنة، فسيُنفّذ
filterدالتك بالتوازي. إذا لم تُوفَّر دالة، فسيتم افتراض دالة تُرجع دائمًا قيمة صحيحة:lambda x: True. - with_indices (
bool، القيمة الافتراضيةFalse) — توفير فهارس أمثلة إلىfunction. لاحظ أنه في هذه الحالة يجب أن تكون التوقيع الخاص بـfunctionهوdef function(example, idx): .... - input_columns (
strأوList[str]، اختياري) — الأعمدة التي سيتم تمريرها إلىfunctionكحجج موضعية. إذا كانتNone، يتم تمرير قاموس يقابل جميع الأعمدة المنسّقة كحجة واحدة. - batched (
bool، الافتراضيFalse) — تقديم دفعة من الأمثلة إلىfunction. - batch_size (
int، اختياري، الافتراضي1000) — عدد الأمثلة في كل دفعة تُقدَّم إلىfunctionإذا كانbatched=True. - fn_kwargs (
Dict، اختياري، الافتراضيNone) — حجج الكلمات المفتاحية التي سيتم تمريرها إلىfunction.
طبّق دالة تصفية على جميع العناصر بحيث تتضمن مجموعة البيانات أمثلةً فقط وفقًا لدالة التصفية. يتم إجراء التصفية على الفور أثناء التكرار على مجموعة البيانات.
إذا كانت الدالة غير متزامنة، فسيُنفّذ filter دالتك بالتوازي، مع حد أقصى يبلغ ألف استدعاء متزامن (قابل للضبط).
يُوصى باستخدام asyncio.Semaphore في دالتك إذا كنت ترغب في تحديد الحد الأقصى لعدد العمليات التي يمكن تنفيذها في الوقت نفسه.
مثال:
>>> from datasets import load_dataset
>>> ds = load_dataset("cornell-movie-review-data/rotten_tomatoes", split="train", streaming=True)
>>> ds = ds.filter(lambda x: x["label"] == 0)
>>> list(ds.take(3))
[{'label': 0, 'movie_review': 'simplistic , silly and tedious .'},
{'label': 0,
'movie_review': "it's so laddish and juvenile , only teenage boys could possibly find it funny ."},
{'label': 0,
'movie_review': 'exploitative and largely devoid of the depth or sophistication that would make watching such a graphic treatment of the crimes bearable .'}]shuffle
< source >( seed = Nonegenerator: typing.Optional[numpy.random._generator.Generator] = Nonebuffer_size: int = 1000max_buffer_input_shards: int = 10 )
المعاملات
- seed (
int، اختياري، القيمة الافتراضيةNone) — بذرة عشوائية تُستخدم لخلط مجموعة البيانات. تُستخدم لأخذ عينات من مخزن الخلط (shuffle buffer) وكذلك لخلط شرائح البيانات (data shards). - generator (
numpy.random.Generator، اختياري) — مولّد عشوائي من Numpy يُستخدم لحساب تبديل صفوف مجموعة البيانات. إذا كانgenerator=None(الافتراضي)، يُستخدمnp.random.default_rng(مولّد البتات الافتراضي (PCG64) في NumPy). - buffer_size (
int، القيمة الافتراضية1000) — حجم المخزن المؤقت. - max_buffer_input_shards (
int، القيمة الافتراضية10) — الحد الأقصى لعدد الشرائح المستخدمة في تغذية المخزن المؤقت في كل مرة.
يقوم بتبديل عناصر مجموعة البيانات هذه عشوائيًا.
تملأ هذه المجموعة بيانات مخزن مؤقتًا يحتوي على buffer_size عنصرًا، ثم تعيّن عناصر عشوائيًا من هذا المخزن المؤقت، مع استبدال العناصر المحددة بعناصر جديدة. وللخلط المثالي، يجب أن يكون حجم المخزن المؤقت أكبر من حجم المجموعة الكاملة أو مساويًا له.
على سبيل المثال، إذا كانت مجموعة البيانات الخاصة بك تحتوي على 10,000 عنصرًا لكن buffer_size مضبوط على 1000، فإن shuffle سيختار في البداية عنصرًا عشوائيًا من أول 1000 عنصر فقط في المخزن المؤقت. بمجرد اختيار عنصر، يتم استبدال مكانه في المخزن المؤقت بالعنصر التالي (أي العنصر رقم 1,001)، مع الحفاظ على مخزن مؤقت يتكون من 1000 عنصر.
إذا كان مجموعة البيانات مكوّنة من عدة شظايا، فإنها تملأ المخزن المؤقت باستخدام ما يصل إلى max_buffer_input_shards شظايا في كل مرة، كما أنها تخلط ترتيب الشظايا. وهذا يحسّن جودة الخلط بشكل كبير.
تُدمج الشظايا المدخلة بالتناوب داخل كل عقدة وعامل، مع الحفاظ على عدد الشظايا المتاحة لتحميل البيانات بالتوازي.
ومع ذلك، إذا تم تثبيت الترتيب باستخدام skip() أو take()، فإن ترتيب الشرائح يبقى دون تغيير، ولا يُستخدم شريحة واحدة في كل مرة لملء المخزن المؤقت.
مثال:
>>> from datasets import load_dataset
>>> ds = load_dataset("cornell-movie-review-data/rotten_tomatoes", split="train", streaming=True)
>>> list(ds.take(3))
[{'text': 'the rock is destined to be the 21st century's new " conan " and that he's going to make a splash even greater than arnold schwarzenegger , jean-claud van damme or steven segal .',
'label': 1},
{'text': 'the gorgeously elaborate continuation of " the lord of the rings " trilogy is so huge that a column of words cannot adequately describe co-writer/director peter jackson's expanded vision of j . r . r . tolkien's middle-earth .',
'label': 1},
{'text': 'effective but too-tepid biopic', 'label': 1}]
>>> shuffled_ds = ds.shuffle(seed=42)
>>> list(shuffled_ds.take(3))
[{'text': "a sports movie with action that's exciting on the field and a story you care about off it .",
'label': 1},
{'text': 'at its best , the good girl is a refreshingly adult take on adultery . . .',
'label': 1},
{'text': "sam jones became a very lucky filmmaker the day wilco got dropped from their record label , proving that one man's ruin may be another's fortune .",
'label': 1}]
>>> resharded_ds = ds.reshard() # useful to shard Parquet datasets by row group instead of by file, improving shuffling quality on dataset with one or few files.
>>> shuffled_resharded_ds = resharded_ds.shuffle(seed=42)
>>> list(shuffled_resharded_ds.take(3))
[{'text': 'this mistaken-identity picture is so film-culture referential that the final product is a ghost .',
'label': 0},
{'text': 'woody allen used to ridicule movies like hollywood ending . now he makes them .',
'label': 0},
{'text': "not only is undercover brother as funny , if not more so , than both austin powers films , but it's also one of the smarter , savvier spoofs to come along in some time .",
'label': 1}]دفعة
< source >( batch_size: typing.Optional[int] = Noneby_column: typing.Union[str, list[str], NoneType] = Nonedrop_last_batch: bool = False )
المعاملات
- batch_size (
int, اختياري) — عدد العينات في كل دفعة. - by_column (
Union[str, list[str], اختياري — العمود المستخدم لتجميع الأمثلة في دفعات. تُجمَّع الأمثلة المتتالية التي تحمل نفس القيمة لذلك العمود في نفس الدفعة. يمكن أن يكون هذا أيضًا قائمة من الأعمدة إذا كنت ترغب في التجميع حسب عدة أعمدة. عند التجميع حسب العمود، يُستخدم حجم الدفعة (batch_size) فقط للتحكم في حجم الدفعات التي سيتم تجميعها أو تقطيعها أثناء التراكم.أُضيف في 4.9.0
- drop_last_batch (
bool، القيمة الافتراضيةFalse) — ما إذا كان سيتم تجاهل الدفعة الأخيرة غير المكتملة.
تجميع العينات من مجموعة البيانات في دفعات.
أنشئ IterableDataset جديدًا يتخطى أول n عناصر.
مثال:
>>> from datasets import load_dataset
>>> ds = load_dataset("cornell-movie-review-data/rotten_tomatoes", split="train", streaming=True)
>>> list(ds.take(3))
[{'label': 1,
'text': 'the rock is destined to be the 21st century's new " conan " and that he's going to make a splash even greater than arnold schwarzenegger , jean-claud van damme or steven segal .'},
{'label': 1,
'text': 'the gorgeously elaborate continuation of " the lord of the rings " trilogy is so huge that a column of words cannot adequately describe co-writer/director peter jackson's expanded vision of j . r . r . tolkien's middle-earth .'},
{'label': 1, 'text': 'effective but too-tepid biopic'}]
>>> ds = ds.skip(1)
>>> list(ds.take(3))
[{'label': 1,
'text': 'the gorgeously elaborate continuation of " the lord of the rings " trilogy is so huge that a column of words cannot adequately describe co-writer/director peter jackson's expanded vision of j . r . r . tolkien's middle-earth .'},
{'label': 1, 'text': 'effective but too-tepid biopic'},
{'label': 1,
'text': 'if you sometimes like to go to the movies to have fun , wasabi is a good place to start .'}]أنشئ IterableDataset جديدًا يحتوي على العناصر الـn الأولى فقط.
مثال:
>>> from datasets import load_dataset
>>> ds = load_dataset("cornell-movie-review-data/rotten_tomatoes", split="train", streaming=True)
>>> small_ds = ds.take(2)
>>> list(small_ds)
[{'label': 1,
'text': 'the rock is destined to be the 21st century's new " conan " and that he's going to make a splash even greater than arnold schwarzenegger , jean-claud van damme or steven segal .'},
{'label': 1,
'text': 'the gorgeously elaborate continuation of " the lord of the rings " trilogy is so huge that a column of words cannot adequately describe co-writer/director peter jackson's expanded vision of j . r . r . tolkien's middle-earth .'}]شَريحة
< source >( num_shards: intindex: intcontiguous: bool = True )
أعد الشريحة رقم index من تقسيم مجموعة البيانات إلى num_shards أجزاء.
تُقسَّم هذه العملية بشكل حتمي. يقسم dataset.shard(n, i) مجموعة البيانات إلى مقاطع متجاورة، مما يتيح إعادة دمجها بسهولة بعد المعالجة. إذا كان dataset.num_shards % n == l، فإن أول l مجموعات بيانات تحتوي كل منها على (dataset.num_shards // n) + 1 شريحة، بينما تحتوي مجموعات البيانات المتبقية على (dataset.num_shards // n) شريحة. يعيد datasets.concatenate_datasets([dset.shard(n, i) for i in range(n)]) مجموعة بيانات بنفس ترتيب الأصل. وبشكل خاص، يعيد dataset.shard(dataset.num_shards, i) مجموعة بيانات تحتوي على شريحة واحدة.
ملاحظة: يجب أن تكون قيمة n أقل من عدد الشرائح في مجموعة البيانات dataset.num_shards أو تساويه.
من ناحية أخرى، يحتوي dataset.shard(n, i, contiguous=False) على جميع أجزاء مجموعة البيانات التي يكون فيها الباقي عند قسمة الفهرس على n = i.
تأكد من تقسيم البيانات إلى شرائح قبل استخدام أي مشغّل عشوائي (مثل shuffle).
يُفضّل استخدام مشغّل التقسيم إلى شرائح في مرحلة مبكرة من خط أنابيب مجموعة البيانات.
مثال:
>>> from datasets import load_dataset
>>> ds = load_dataset("fancyzhx/amazon_polarity", split="train", streaming=True)
>>> ds
IterableDataset({
features: ['label', 'title', 'content'],
num_shards: 4
})
>>> ds.shard(num_shards=2, index=0)
IterableDataset({
features: ['label', 'title', 'content'],
num_shards: 2
})أعد تقسيم مجموعة البيانات إذا أمكن، أي قسّم الشرائح الحالية إلى شرائح أكثر. يزيد هذا من عدد الشرائح، وتكون مجموعة البيانات الناتجة فيها num_shards >= previous_num_shards. قد يحدث التساوي إذا تعذر تقسيم أي شريحة بشكل أكبر.
يعتمد آلية إعادة التقسيم على صيغة ملف مجموعة البيانات:
- Parquet: تقسيم البيانات إلى شرائح لكل مجموعة صفوف بدلاً من كل ملف
- Vortex: شريحة لكل نطاق من الكتل المتتالية (حوالي 64 ميغابايت من بيانات الملف لكل شريحة) بدلاً من شريحة لكل ملف
- أخرى: لم يتم تنفيذها بعد (المساهمات مرحّب بها!)
تأكد من إعادة التقسيم/التقسيم قبل استخدام أي مشغّل عشوائي (مثل shuffle).
من الأفضل استخدام مشغّل التقسيم في مرحلة مبكرة من خط أنابيب مجموعة البيانات.
مثال:
>>> from datasets import load_dataset
>>> ds = load_dataset("fancyzhx/amazon_polarity", split="train", streaming=True)
>>> ds
IterableDataset({
features: ['label', 'title', 'content'],
num_shards: 4
})
>>> ds.reshard()
IterableDataset({
features: ['label', 'title', 'content'],
num_shards: 3600
})تكرار
< source >( num_times: typing.Optional[int] )
أنشئ IterableDataset جديدًا يكرر مجموعة البيانات الأساسية num_times مرات.
ينتهي الإدخال الفارغ حتى عندما يكون num_times هو None.
ملاحظة: يعتمد تأثير استدعاء shuffle بعد repeat بشكل كبير على حجم المخزن المؤقت. عند استخدام buffer_size بقيمة 1، لا يُرى أي بيانات مكررة في نفس التكرار، حتى بعد الخلط: يعادل ds.repeat(n).shuffle(seed=42, buffer_size=1) ما يعبر عنه بـ ds.shuffle(seed=42, buffer_size=1).repeat(n)، حيث يقوم فقط بخلط ترتيب الشرائح داخل كل تكرار. عند استخدام حجم مخزن مؤقت >= (عدد العينات في مجموعة البيانات * عدد المرات)، نحصل على خلط كامل للبيانات المكررة، أي أنه يمكن ملاحظة التكرارات في نفس التكرار.
مثال:
>>> from datasets import load_dataset
>>> ds = load_dataset("cornell-movie-review-data/rotten_tomatoes", split="train")
>>> ds = ds.take(2).repeat(2)
>>> list(ds)
[{'label': 1,
'text': 'the rock is destined to be the 21st century's new " conan " and that he's going to make a splash even greater than arnold schwarzenegger , jean-claud van damme or steven segal .'},
{'label': 1,
'text': 'the gorgeously elaborate continuation of " the lord of the rings " trilogy is so huge that a column of words cannot adequately describe co-writer/director peter jackson's expanded vision of j . r . r . tolkien's middle-earth .'},
{'label': 1, 'text': 'effective but too-tepid biopic'},
{'label': 1,
'text': 'the rock is destined to be the 21st century's new " conan " and that he's going to make a splash even greater than arnold schwarzenegger , jean-claud van damme or steven segal .'},
{'label': 1,
'text': 'the gorgeously elaborate continuation of " the lord of the rings " trilogy is so huge that a column of words cannot adequately describe co-writer/director peter jackson's expanded vision of j . r . r . tolkien's middle-earth .'},
{'label': 1, 'text': 'effective but too-tepid biopic'}]to_csv
< source >( path_or_buf: typing.Union[str, bytes, os.PathLike, typing.BinaryIO]batch_size: typing.Optional[int] = Nonestorage_options: typing.Optional[dict] = None**to_csv_kwargs ) → int
المعاملات
- path_or_buf (
PathLikeأوFileOrBuffer) — إما مسار إلى ملف (مثلfile.csv)، أو عنوان URI عن بُعد (مثلhf://datasets/username/my_dataset_name/data.csv)، أو BinaryIO، حيث سيتم حفظ مجموعة البيانات فيه بالتنسيق المحدد. - batch_size (
int، اختياري) — حجم الدفعة التي يتم تحميلها في الذاكرة وكتابتها دفعة واحدة. القيمة الافتراضية هيdatasets.config.DEFAULT_MAX_BATCH_SIZE. - storage_options (
dict, اختياري) — أزواج مفتاح/قيمة تُمرَّر إلى نظام الملفات الخلفي، إن وُجد. - **to_csv_kwargs (معلمات إضافية) —
معلمات تُمرَّر إلى
pandas.DataFrame.to_csvفي pandas. تتخذ المعلمةindexالقيمة الافتراضيةFalseإذا لم تُحدَّد. إذا كنت ترغب في كتابة الفهرس، فمرِّرindex=Trueوحدِّد أيضًا اسمًا لعمود الفهرس عن طريق تمريرindex_label.
يعيد
int
عدد الأحرف أو البايتات المكتوبة.
يُصدّر مجموعة البيانات إلى ملف csv.
يتكرر هذا على مجموعة البيانات ويحمّلها بالكامل في الذاكرة قبل كتابتها.
to_pandas
< source >( batch_size: typing.Optional[int] = Nonebatched: bool = False )
المعاملات
- batch_size (
int, اختياري) — حجم الدُفعات (عدد الصفوف) إذا كانbatchedهوTrue. القيمة الافتراضية هيdatasets.config.DEFAULT_MAX_BATCH_SIZE. - batched (
bool) — اضبطه علىTrueلإرجاع مولّد يُخرج مجموعة البيانات على شكل دفعات منbatch_sizeصفوف. القيمة الافتراضية هيFalse(تُرجع المجموعة الكاملة مرة واحدة).
يعيد مجموعة البيانات على شكل pandas.DataFrame. كما يمكنه إرجاع مولّد (generator) لمجموعات البيانات الكبيرة.
to_dict
< source >( batch_size: typing.Optional[int] = Nonebatched: bool = False )
يعيد مجموعة البيانات كقاموس بايثون. كما يمكنه إعادة مولّد لمجموعات البيانات الكبيرة.
to_json
< source >( path_or_buf: typing.Union[str, bytes, os.PathLike, typing.BinaryIO]batch_size: typing.Optional[int] = Nonestorage_options: typing.Optional[dict] = None**to_json_kwargs ) → int
المعاملات
- path_or_buf (
PathLikeأوFileOrBuffer) — إما مسار إلى ملف (مثلfile.json)، أو عنوان URI عن بُعد (مثلhf://datasets/username/my_dataset_name/data.json)، أو BinaryIO، حيث سيتم حفظ مجموعة البيانات فيه بالتنسيق المحدد. - batch_size (
int، اختياري) — حجم الدفعة التي يتم تحميلها في الذاكرة وكتابتها دفعة واحدة. القيمة الافتراضية هيdatasets.config.DEFAULT_MAX_BATCH_SIZE. - storage_options (
dict, اختياري) — أزواج مفتاح/قيمة تُمرَّر إلى نظام الملفات الخلفي، إن وُجد. - **to_json_kwargs (additional keyword arguments) —
Parameters to pass to pandas’s
pandas.DataFrame.to_json. Default arguments arelines=Trueandorient="records". The parameterindexdefaults toFalseiforientis“split”or“table”. If you would like to write the index, passindex=True`.
يعيد
int
عدد الأحرف أو البايتات المكتوبة.
تصدير مجموعة البيانات إلى JSON Lines أو JSON.
يتكرر هذا على مجموعة البيانات ويحمّلها بالكامل في الذاكرة قبل كتابتها.
تنسيق الإخراج الافتراضي هو JSON Lines.
لتصدير إلى JSON، مرّر الحجة lines=False والقيمة المطلوبة لـ orient.
to_parquet
< source >( path_or_buf: typing.Union[str, bytes, os.PathLike, typing.BinaryIO]batch_size: typing.Optional[int] = Nonestorage_options: typing.Optional[dict] = None**parquet_writer_kwargs ) → int
المعاملات
- path_or_buf (
PathLikeأوFileOrBuffer) — إما مسار إلى ملف (مثلfile.parquet)، أو عنوان URI عن بُعد (مثلhf://datasets/username/my_dataset_name/data.parquet)، أو BinaryIO، حيث سيتم حفظ مجموعة البيانات فيه بالتنسيق المحدد. - batch_size (
int، اختياري) — حجم الدفعة التي يتم تحميلها في الذاكرة وكتابتها دفعة واحدة. القيمة الافتراضية هيdatasets.config.DEFAULT_MAX_BATCH_SIZE. - storage_options (
dict, اختياري) — أزواج مفتاح/قيمة تُمرَّر إلى نظام الملفات الخلفي، إن وُجد.أُضيف في 2.19.0
- **parquet_writer_kwargs (معلمات إضافية) —
معلمات تُمرَّر إلى
pyarrow.parquet.ParquetWriterفي PyArrow.
يعيد
int
عدد الأحرف أو البايتات المكتوبة.
يُصدّر مجموعة البيانات إلى parquet
to_sql
< source >( name: strcon: typing.Union[str, ForwardRef('sqlalchemy.engine.Connection'), ForwardRef('sqlalchemy.engine.Engine'), ForwardRef('sqlite3.Connection')]batch_size: typing.Optional[int] = None**sql_writer_kwargs ) → int
المعاملات
- name (
str) — اسم جدول SQL. - con (
strأوsqlite3.Connectionأوsqlalchemy.engine.Connectionأوsqlalchemy.engine.Connection) — سلسلة URI أو كائن اتصال SQLite3/SQLAlchemy يُستخدم للكتابة إلى قاعدة بيانات. - batch_size (
int، اختياري) — حجم الدفعة التي يتم تحميلها في الذاكرة وكتابتها دفعة واحدة. القيمة الافتراضية هيdatasets.config.DEFAULT_MAX_BATCH_SIZE. - **sql_writer_kwargs (معلمات إضافية) —
معلمات تُمرَّر إلى
pandas.DataFrame.to_sqlفي pandas. تتخذ المعلمةindexالقيمة الافتراضيةFalseإذا لم تُحدَّد. إذا كنت ترغب في كتابة الفهرس، فمرِّرindex=Trueوحدِّد أيضًا اسمًا لعمود الفهرس عن طريق تمريرindex_label.
يعيد
int
عدد السجلات المكتوبة.
يُصدِّر مجموعة البيانات إلى قاعدة بيانات SQL.
push_to_hub
< source >( repo_id: strconfig_name: str = 'default'set_default: typing.Optional[bool] = Nonesplit: typing.Optional[str] = Nonedata_dir: typing.Optional[str] = Nonecommit_message: typing.Optional[str] = Nonecommit_description: typing.Optional[str] = Noneprivate: typing.Optional[bool] = Nonetoken: typing.Optional[str] = Nonerevision: typing.Optional[str] = Nonecreate_pr: typing.Optional[bool] = Falsemax_shard_size: typing.Union[str, int, NoneType] = Nonenum_shards: typing.Optional[int] = Noneembed_external_files: bool = Truenum_proc: typing.Optional[int] = None )
المعاملات
- repo_id (
str) — معرّف المستودع الذي تريد الدفع إليه، بالصيغة التالية:<user>/<dataset_name>أو<org>/<dataset_name>. كما يقبل<dataset_name>, والذي سيُستخدم افتراضيًا نطاق المستخدم المسجّل.كما يمكن أن يكون موقعًا داخل دلو، على سبيل المثال
buckets/<user_or_org>/<bucket_name>/... - config_name (
str، القيمة الافتراضية “default”) — اسم التهيئة (أو الجزء الفرعي) لمجموعة البيانات. القيمة الافتراضية هي “default”. - set_default (
bool، اختياري) — ما إذا كان يجب تعيين هذا الإعداد كإعداد افتراضي. وإلا، فإن الإعداد الافتراضي هو ذلك المسمى بـ “default”. - split (
str، اختياري) — اسم الجزء الذي سيُمنح لذلك مجموعة البيانات. القيمة الافتراضية هيself.split. - data_dir (
str، اختياري) — اسم المجلد الذي سيحتوي على ملفات البيانات المرفوعة. القيمة الافتراضية هيconfig_nameإذا كانت مختلفة عن “default”، وإلا فهي “data”. - commit_message (
str، اختياري) — الرسالة التي سيتم الالتزام بها أثناء الدفع. ستكون الافتراضية"Upload dataset". - commit_description (
str, اختياري) — وصف للالتزام الذي سيتم إنشاؤه. بالإضافة إلى ذلك، وصف لطلب الانضمام إذا تم إنشاؤه (create_prهو True). - private (
bool، اختياري) — ما إذا كان سيتم جعل المستودع خاصًا. إذا كانNone(الافتراضي)، فسيكون المستودع عامًا ما لم يكن الافتراضي للمنظمة هو الخاص. يتم تجاهل هذه القيمة إذا كان المستودع موجودًا بالفعل. - token (
str, اختياري) — رمز مصادقة اختياري لـ Hugging Face Hub. إذا لم يتم تمرير رمز، فسيتم افتراضياً استخدام الرمز المحفوظ محلياً عند تسجيل الدخول باستخدامhf auth login. سيُطلق خطأً إذا لم يتم تمرير رمز وكان المستخدم غير مسجّل الدخول. - revision (
str، اختياري) — الفرع الذي سيتم دفع الملفات المرفوعة إليه. الافتراضي هو الفرع"main". - create_pr (
bool، اختياري، القيمة الافتراضيةFalse) — ما إذا كان سيتم إنشاء طلب سحب (PR) بالملفات المرفوعة أم الالتزام مباشرة. - max_shard_size (
intأوstr، اختياري) — الحد الأقصى الاختياري لحجم أجزاء مجموعة البيانات التي سيتم رفعها إلى المستودع. إذا تم التعبير عنه كنص، فيجب أن يتكون من أرقام تليها وحدة (مثل"5MB"). إذا لم يُقدَّم، فإن عدد الأجزاء الافتراضي يكون مساويًا لـ.num_shardsلهذه المجموعة. - num_shards (
int, اختياري) — عدد الأجزاء (shards) المراد كتابتها. إذا تم تقديمmax_shard_sizeولم يتم تقديمnum_shards، فإن عدد الأجزاء يُقدَّر منmax_shard_size. يمكن أن يكون أكبر من.num_shardsلهذا مجموعة البيانات: في هذه الحالة، يتم توزيع كل جزء إدخال على عدة أجزاء إخراج عن طريق كتابة أمثلته إليها بطريقة الدوران (round-robin). - embed_external_files (
bool, الافتراضي هوTrue) — ما إذا كان يجب تضمين بايتات الملفات في الشرائح. على وجه التحديد، سيقوم بذلك قبل الدفع للحقول من النوع: - num_proc (
int، اختياري، القيمة الافتراضيةNone) — عدد العمليات عند تجهيز مجموعة البيانات ورفعها. يكون هذا مفيدًا إذا كانت مجموعة البيانات تتكون من عينات وتحويلات كثيرة. يستخدم سياق “spawn” للعمل مع hf_xet، وهو عميل rust للرفع السريع إلى HF. تكون المعالجة متعددة العمليات معطلةً افتراضيًا.
يدفع مجموعة البيانات إلى المستودع كمجموعة بيانات بصيغة Parquet. تُدفَع مجموعة البيانات باستخدام طلبات HTTP ولا تحتاج إلى تثبيت git أو git-lfs.
ملفات Parquet الناتجة مكتفية ذاتياً بشكل افتراضي. إذا احتوى مجموعة البيانات الخاصة بك على بيانات Image أو Audio أو Video، فستخزن ملفات Parquet البايتات الخاصة بصورك أو ملفات الصوت.
يمكنك تعطيل ذلك عن طريق تعيين embed_external_files إلى False.
مثال:
>>> dataset.push_to_hub("<organization>/<dataset_id>")
>>> dataset_dict.push_to_hub("<organization>/<dataset_id>", private=True)
>>> dataset.push_to_hub("<organization>/<dataset_id>", max_shard_size="1GB")
>>> dataset.push_to_hub("<organization>/<dataset_id>", num_shards=1024)إذا كانت مجموعة بياناتك تحتوي على عدة تقسيمات (مثل التدريب/التحقق/الاختبار):
>>> train_dataset.push_to_hub("<organization>/<dataset_id>", split="train")
>>> val_dataset.push_to_hub("<organization>/<dataset_id>", split="validation")
>>> # later
>>> dataset = load_dataset("<organization>/<dataset_id>")
>>> train_dataset = dataset["train"]
>>> val_dataset = dataset["validation"]إذا كنت ترغب في إضافة تكوين جديد (أو مجموعة فرعية) إلى مجموعة بيانات (على سبيل المثال، إذا كانت مجموعة البيانات تحتوي على مهام/إصدارات/لغات متعددة):
>>> english_dataset.push_to_hub("<organization>/<dataset_id>", "en")
>>> french_dataset.push_to_hub("<organization>/<dataset_id>", "fr")
>>> # later
>>> english_dataset = load_dataset("<organization>/<dataset_id>", "en")
>>> french_dataset = load_dataset("<organization>/<dataset_id>", "fr")حمّل state_dict الخاص بمجموعة البيانات. ستُستأنف عملية التكرار من المثال التالي لتلك اللحظة التي تم فيها حفظ الحالة.
يعود الاستئناف إلى النقطة التي تم فيها حفظ نقطة التفتيش بالضبط، باستثناء حالتين:
- تُفقد الأمثلة من مخازن الخلط عند استئناف التدريب وتُعاد تعبئة المخازن ببيانات جديدة
- قد تتسبب تركيبات
.with_format(arrow)و.map()المُجمَّعة في تخطي دفعة واحدة.
مثال:
>>> from datasets import Dataset, concatenate_datasets
>>> ds = Dataset.from_dict({"a": range(6)}).to_iterable_dataset(num_shards=3)
>>> for idx, example in enumerate(ds):
... print(example)
... if idx == 2:
... state_dict = ds.state_dict()
... print("checkpoint")
... break
>>> ds.load_state_dict(state_dict)
>>> print(f"restart from checkpoint")
>>> for example in ds:
... print(example)والذي يعيد:
{'a': 0}
{'a': 1}
{'a': 2}
checkpoint
restart from checkpoint
{'a': 3}
{'a': 4}
{'a': 5}>>> from torchdata.stateful_dataloader import StatefulDataLoader
>>> ds = load_dataset("deepmind/code_contests", streaming=True, split="train")
>>> dataloader = StatefulDataLoader(ds, batch_size=32, num_workers=4)
>>> # checkpoint
>>> state_dict = dataloader.state_dict() # uses ds.state_dict() under the hood
>>> # resume from checkpoint
>>> dataloader.load_state_dict(state_dict) # uses ds.load_state_dict() under the hoodاحصل على state_dict الحالي لمجموعة البيانات. يتوافق هذا مع الحالة عند آخر مثال تم إرجاؤه.
يعود الاستئناف إلى النقطة التي تم فيها حفظ نقطة التفتيش بالضبط، باستثناء حالتين:
- تُفقد الأمثلة من مخازن الخلط عند استئناف التدريب وتُعاد تعبئة المخازن ببيانات جديدة
- قد تتسبب تركيبات
.with_format(arrow)و.map()المُجمَّعة في تخطي دفعة واحدة.
مثال:
>>> from datasets import Dataset, concatenate_datasets
>>> ds = Dataset.from_dict({"a": range(6)}).to_iterable_dataset(num_shards=3)
>>> for idx, example in enumerate(ds):
... print(example)
... if idx == 2:
... state_dict = ds.state_dict()
... print("checkpoint")
... break
>>> ds.load_state_dict(state_dict)
>>> print(f"restart from checkpoint")
>>> for example in ds:
... print(example)والذي يعيد:
{'a': 0}
{'a': 1}
{'a': 2}
checkpoint
restart from checkpoint
{'a': 3}
{'a': 4}
{'a': 5}>>> from torchdata.stateful_dataloader import StatefulDataLoader
>>> ds = load_dataset("deepmind/code_contests", streaming=True, split="train")
>>> dataloader = StatefulDataLoader(ds, batch_size=32, num_workers=4)
>>> # checkpoint
>>> state_dict = dataloader.state_dict() # uses ds.state_dict() under the hood
>>> # resume from checkpoint
>>> dataloader.load_state_dict(state_dict) # uses ds.load_state_dict() under the hoodكائن DatasetInfo يحتوي على جميع البيانات الوصفية في مجموعة البيانات.
كائن NamedSplit يقابل تقسيماً مسمّى من مجموعة البيانات.
from_csv
< source >( path_or_paths: typing.Union[str, bytes, os.PathLike, list[typing.Union[str, bytes, os.PathLike]]]split: typing.Optional[datasets.splits.NamedSplit] = Nonefeatures: typing.Optional[datasets.features.features.Features] = Nonekeep_in_memory: bool = False**kwargs )
المعاملات
- path_or_paths (
path-likeأو قائمة منpath-like) — مسار أو مسارات ملفات CSV. - split (NamedSplit، اختياري) — اسم التقسيم الذي سيُسند إلى مجموعة البيانات.
- features (Features، اختياري) — مميزات مجموعة البيانات.
- keep_in_memory (
bool، القيمة الافتراضيةFalse) — ما إذا كان سيتم نسخ البيانات في الذاكرة. - **kwargs (معلمات إضافية بالكلمات المفتاحية) —
معلمات بالكلمات المفتاحية تُمرَّر إلى
pandas.read_csv.
إنشاء IterableDataset من ملف أو ملفات CSV.
from_json
< source >( path_or_paths: typing.Union[str, bytes, os.PathLike, list[typing.Union[str, bytes, os.PathLike]]]split: typing.Optional[datasets.splits.NamedSplit] = Nonefeatures: typing.Optional[datasets.features.features.Features] = Nonekeep_in_memory: bool = Falsefield: typing.Optional[str] = None**kwargs )
المعاملات
- path_or_paths (
path-likeأو قائمة منpath-like) — مسار أو مسارات ملفات JSON أو JSON Lines. - split (NamedSplit، اختياري) — اسم التقسيم الذي سيُسند إلى مجموعة البيانات.
- features (Features، اختياري) — مميزات مجموعة البيانات.
- keep_in_memory (
bool، القيمة الافتراضيةFalse) — ما إذا كان سيتم نسخ البيانات في الذاكرة. - field (
str، اختياري) — اسم الحقل في ملف JSON الذي يحتوي على مجموعة البيانات. - **kwargs (معلمات إضافية بالكلمات المفتاحية) —
معلمات بالكلمات المفتاحية تُمرَّر إلى
JsonConfig.
إنشاء IterableDataset من ملف أو ملفات JSON أو JSON Lines.
from_parquet
< source >( path_or_paths: typing.Union[str, bytes, os.PathLike, list[typing.Union[str, bytes, os.PathLike]]]split: typing.Optional[datasets.splits.NamedSplit] = Nonefeatures: typing.Optional[datasets.features.features.Features] = Nonekeep_in_memory: bool = Falsecolumns: typing.Optional[list[str]] = Nonefilters: typing.Union[pyarrow._compute.Expression, list[tuple], list[list[tuple]], NoneType] = Nonefragment_scan_options: typing.Optional[pyarrow._dataset_parquet.ParquetFragmentScanOptions] = Noneon_bad_files: typing.Literal['error', 'warn', 'skip'] = 'error'**kwargs )
المعاملات
- path_or_paths (
path-likeأو قائمة منpath-like) — مسار أو مسارات ملفات Parquet. - split (
NamedSplit، اختياري) — اسم التقسيم الذي سيُسند إلى مجموعة البيانات. - features (
Features، اختياري) — مميزات مجموعة البيانات. - keep_in_memory (
bool، القيمة الافتراضيةFalse) — ما إذا كان سيتم نسخ البيانات في الذاكرة. - columns (
List[str]، اختياري) — إذا لم يكنNone، فسيتم قراءة هذه الأعمدة فقط من الملف. قد يكون اسم العمدة بادئة لحقل متداخل، على سبيل المثال، ‘a’ سيحدد ‘a.b’ و ‘a.c’ و ‘a.d.e’. - filters (
Union[pyarrow.dataset.Expression, list[tuple], list[list[tuple]]]، اختياري) — إرجاع الصفوف المطابقة للمرشّح فقط. إذا كان ذلك ممكنًا، فسيتم دفع الشرط إلى الأسفل لاستغلال معلومات التقسيم أو البيانات الوصفية الداخلية الموجودة في مصدر البيانات، مثل إحصاءات Parquet. وإلا، فسيتم تصفية دفعات السجلات (RecordBatches) المحمّلة قبل تسليمها. - fragment_scan_options (
pyarrow.dataset.ParquetFragmentScanOptions, اختياري) — خيارات محددة للمسح الخاصة بقطع Parquet. هذا مفيد بشكل خاص لتكوين التخزين المؤقت والتخزين في الذاكرة.أُضيف في 4.2.0
- on_bad_files (
Literal["error", "warn", "skip"], اختياري, القيمة الافتراضية هي "error") — حدد الإجراء المتخذ عند مواجهة ملف معطوب (ملف لا يمكن قراءته). القيم المسموح بها هي:- ‘error’، ترمي استثناءً عند مواجهة ملف غير صالح.
- ‘warn’، إصدار تحذير عند مواجهة ملف غير صالح وتخطي ذلك الملف.
- ‘skip’، تخطي الملفات المعيبة دون رفع استثناء أو إصدار تحذير عند مواجهتها.
أُضيف في 4.2.0
- **kwargs (معلمات إضافية بالكلمات المفتاحية) —
معلمات بالكلمات المفتاحية تُمرَّر إلى
ParquetConfig.
إنشاء IterableDataset من ملف أو ملفات Parquet.
from_text
< source >( path_or_paths: typing.Union[str, bytes, os.PathLike, list[typing.Union[str, bytes, os.PathLike]]]split: typing.Optional[datasets.splits.NamedSplit] = Nonefeatures: typing.Optional[datasets.features.features.Features] = Nonekeep_in_memory: bool = Falsekeep_linebreaks: bool = Falsesample_by: typing.Literal['line', 'paragraph', 'document'] = 'line'**kwargs )
المعاملات
- path_or_paths (
path-likeأو قائمة منpath-like) — مسار(ات) ملف(ات) النص. - split (
NamedSplit، اختياري) — اسم التقسيم الذي سيُسند إلى مجموعة البيانات. - features (
Features، اختياري) — مميزات مجموعة البيانات. - keep_in_memory (
bool، القيمة الافتراضيةFalse) — ما إذا كان سيتم نسخ البيانات في الذاكرة. - keep_linebreaks — (
bool، الافتراضي False): ما إذا كان سيتم الإبقاء على علامات تبديل السطر. - sample_by (
Literal["line", "paragraph", "document"])، القيمة الافتراضية هي “line”) — ما إذا كان سيتم تحميل البيانات سطرًا سطرًا، أو فقرةً فقرةً، أو مستندًا مستندًا. افتراضيًا، كل صف في مجموعة البيانات = سطر واحد. - **kwargs (معلمات إضافية بالكلمات المفتاحية) —
معلمات بالكلمات المفتاحية تُمرَّر إلى
TextConfig.
إنشاء IterableDataset من ملف نصي أو أكثر.
class datasets.IterableColumn
< source >( source: typing.Union[ForwardRef('IterableDataset'), ForwardRef('IterableColumn')]column_name: str )
قابلة للتكرار لعمود محدد في IterableDataset.
مثال:
IterableDatasetDict
قاموس تُستخدم فيه الأسماء المقسّمة كمفاتيح (مثل ‘train’ و ‘test’)، وتُستخدم كائنات IterableDataset كقيم.
map
< source >( function: typing.Optional[typing.Callable] = Nonewith_indices: bool = Falsewith_split: bool = Falseinput_columns: typing.Union[str, list[str], NoneType] = Nonebatched: bool = Falsebatch_size: int = 1000drop_last_batch: bool = Falseremove_columns: typing.Union[str, list[str], NoneType] = Nonefn_kwargs: typing.Optional[dict] = None )
المعاملات
- function (
Callable, اختياري, القيمة الافتراضية هيNone) — دالة تُطبَّق على الفور على الأمثلة عند تكرار مجموعة البيانات. يجب أن يكون لها أحد التواقيع التالية:function(example: Dict[str, Any]) -> Dict[str, Any]إذا كانbatched=Falseوwith_indices=Falsefunction(example: Dict[str, Any], idx: int) -> Dict[str, Any]إذا كانbatched=Falseوwith_indices=Truefunction(batch: Dict[str, list]) -> Dict[str, list]إذا كانbatched=Trueوwith_indices=Falsefunction(batch: Dict[str, list], indices: list[int]) -> Dict[str, list]إذا كانbatched=Trueوwith_indices=True
للاستخدام المتقدم، يمكن للدالة أيضاً أن تُرجع
pyarrow.Table. إذا كانت الدالة غير متزامنة، فإنmapستنفّذ دالتك بالتوازي. علاوة على ذلك، إذا كانت دالتك لا تُرجع شيئاً (None)، فإنmapستنفّذ دالتك وتُرجع مجموعة البيانات دون تغيير. إذا لم تُوفَّر دالة، فسيتم افتراض دالة الهوية:lambda x: x. - with_indices (
bool، القيمة الافتراضيةFalse) — توفير فهارس أمثلة إلىfunction. لاحظ أنه في هذه الحالة يجب أن تكون التوقيع الخاص بـfunctionهوdef function(example, idx[, rank]): .... - input_columns (
[Union[str, list[str]]]، اختياري، القيمة الافتراضيةNone) — الأعمدة التي سيتم تمريرها إلىfunctionكحجج موضعية. إذا كانتNone، يتم تمرير قاموس يقابل جميع الأعمدة المنسّقة كحجة واحدة. - batched (
bool، الافتراضيFalse) — تقديم دفعة من الأمثلة إلىfunction. - batch_size (
int، اختياري، القيمة الافتراضية1000) — عدد الأمثلة في كل دفعة تُقدَّم إلىfunctionإذا كانbatched=True. - drop_last_batch (
bool، القيمة الافتراضيةFalse) — ما إذا كان يجب تجاهل الدفعة الأخيرة الأصغر منbatch_sizeبدلاً من معالجتها بواسطة الدالة. - remove_columns (
[list[str]]، اختياري، القيمة الافتراضيةNone) — إزالة مجموعة من الأعمدة أثناء تنفيذ عملية الخرائط (mapping). سيتم حذف الأعمدة قبل تحديث الأمثلة بمخرجاتfunction، أي إذا كانfunctionيضيف أعمدة بأسماء موجودة فيremove_columns، فسيتم الاحتفاظ بهذه الأعمدة. - fn_kwargs (
Dict، اختياري، القيمة الافتراضيةNone) — حجج الكلمات المفتاحية التي سيتم تمريرها إلىfunction
تطبيق دالة على جميع الأمثلة في مجموعة البيانات القابلة للتكرار (فردية أو على شكل دفعات) وتحديثها. إذا كانت دالتك تعيد عمودًا موجودًا مسبقًا، فإنها تستبدله. تُطبَّق الدالة على الأمثلة أثناء التكرار على مجموعة البيانات بشكل فوري. يُطبَّق التحويل على جميع مجموعات البيانات في قاموس مجموعة البيانات.
يمكنك تحديد ما إذا كان ينبغي تجميع الدالة أم لا باستخدام معامل batched:
- إذا كانت
False، فإن الدالة تستقبل مثالًا واحدًا ويجب أن تُرجع مثالًا واحدًا. المثال هو قاموس، مثل{"text": "Hello there !"}. - إذا كان
Trueوbatch_sizeيساوي 1، فإن الدالة تستقبل دفعة تحتوي على مثال واحد كمدخلات ويمكنها إرجاع دفعة تحتوي على مثال واحد أو أكثر. الدفعة هي قاموس، على سبيل المثال دفعة تحتوي على مثال واحد هي{"text": ["Hello there !"]}. - إذا كانت
Trueوbatch_sizeتساويn> 1، فإن الدالة تستقبل دفعة منnأمثلة كمدخلات، ويمكن أن تعيد دفعة تحتوي علىnأمثلة، أو على عدد عشوائي من الأمثلة. لاحظ أن الدفعة الأخيرة قد تحتوي على عدد أقل منnأمثلة. الدفعة هي قاموس، على سبيل المثال، دفعة منnأمثلة هي{"text": ["Hello there !"] * n}.
إذا كانت الدالة غير متزامنة، فإن map ستنفّذ دالتك بالتوازي، مع حد أقصى يبلغ ألف استدعاء متزامن.
يُوصى باستخدام asyncio.Semaphore في دالتك إذا كنت ترغب في تحديد الحد الأقصى لعدد العمليات التي يمكن تنفيذها في الوقت نفسه.
مثال:
>>> from datasets import load_dataset
>>> ds = load_dataset("cornell-movie-review-data/rotten_tomatoes", streaming=True)
>>> def add_prefix(example):
... example["text"] = "Review: " + example["text"]
... return example
>>> ds = ds.map(add_prefix)
>>> next(iter(ds["train"]))
{'label': 1,
'text': 'Review: the rock is destined to be the 21st century's new " conan " and that he's going to make a splash even greater than arnold schwarzenegger , jean-claud van damme or steven segal .'}فلتر
< source >( function: typing.Optional[typing.Callable] = Nonewith_indices = Falseinput_columns: typing.Union[str, list[str], NoneType] = Nonebatched: bool = Falsebatch_size: typing.Optional[int] = 1000fn_kwargs: typing.Optional[dict] = None )
المعاملات
- function (
Callable) — دالة قابلة للاستدعاء (Callable) تحمل أحد التواقيع التالية:function(example: Dict[str, Any]) -> boolإذا كانwith_indices=False, batched=Falsefunction(example: Dict[str, Any], indices: int) -> boolإذا كانwith_indices=True, batched=Falsefunction(example: Dict[str, list]) -> list[bool]إذا كانwith_indices=False, batched=Truefunction(example: Dict[str, list], indices: list[int]) -> list[bool]إذا كانwith_indices=True, batched=True
If no function is provided, defaults to an always True function:
lambda x: True. - with_indices (
bool، القيمة الافتراضيةFalse) — توفير فهارس أمثلة إلىfunction. لاحظ أنه في هذه الحالة يجب أن تكون التوقيع الخاص بـfunctionهوdef function(example, idx): .... - input_columns (
strأوlist[str]، اختياري) — الأعمدة التي سيتم تمريرها إلىfunctionكحجج موضعية. إذا كانتNone، يتم تمرير قاموس يقابل جميع الأعمدة المنسّقة كحجة واحدة. - batched (
bool، الافتراضيFalse) — تقديم دفعة من الأمثلة إلىfunction - batch_size (
int، اختياري، القيمة الافتراضية1000) — عدد الأمثلة في كل دفعة تُقدَّم إلىfunctionإذا كانbatched=True. - fn_kwargs (
Dict، اختياري، القيمة الافتراضيةNone) — حجج الكلمات المفتاحية التي سيتم تمريرها إلىfunction
تطبيق دالة تصفية على جميع العناصر بحيث تتضمن مجموعة البيانات أمثلةً فقط وفقًا لدالة التصفية. يتم إجراء التصفية على الفور أثناء التكرار على مجموعة البيانات. تُطبَّق التصفية على جميع مجموعات البيانات ضمن قاموس مجموعة البيانات.
مثال:
>>> from datasets import load_dataset
>>> ds = load_dataset("cornell-movie-review-data/rotten_tomatoes", streaming=True)
>>> ds = ds.filter(lambda x: x["label"] == 0)
>>> list(ds["train"].take(3))
[{'label': 0, 'text': 'Review: simplistic , silly and tedious .'},
{'label': 0,
'text': "Review: it's so laddish and juvenile , only teenage boys could possibly find it funny ."},
{'label': 0,
'text': 'Review: exploitative and largely devoid of the depth or sophistication that would make watching such a graphic treatment of the crimes bearable .'}]shuffle
< source >( seed = Nonegenerator: typing.Optional[numpy.random._generator.Generator] = Nonebuffer_size: int = 1000max_buffer_input_shards: int = 10 )
المعاملات
- seed (
int، اختياري، القيمة الافتراضيةNone) — بذرة عشوائية تُستخدم لخلط مجموعة البيانات. تُستخدم لأخذ عينات من مخزن الخلط (shuffle buffer) وكذلك لخلط شرائح البيانات (data shards). - generator (
numpy.random.Generator، اختياري) — مولّد عشوائي من Numpy يُستخدم لحساب تبديل صفوف مجموعة البيانات. إذا كانgenerator=None(الافتراضي)، يُستخدمnp.random.default_rng(مولّد البتات الافتراضي (PCG64) في NumPy). - buffer_size (
int، القيمة الافتراضية1000) — حجم المخزن المؤقت. - max_buffer_input_shards (
int، القيمة الافتراضية10) — الحد الأقصى لعدد الشرائح المستخدمة في تغذية المخزن المؤقت في كل مرة.
يُخلط عناصر مجموعة البيانات هذه عشوائيًا. يُطبَّق الخلط على جميع مجموعات البيانات في قاموس مجموعة البيانات.
تملأ هذه المجموعة بيانات مخزن مؤقت يحتوي على buffer_size عنصرًا، ثم تعيّن عناصر عشوائيًا من هذا المخزن المؤقت، مع استبدال العناصر المحددة بعناصر جديدة. وللخلط المثالي، يجب أن يكون حجم المخزن المؤقت أكبر من حجم المجموعة الكاملة أو مساويًا له.
على سبيل المثال، إذا كانت مجموعة البيانات الخاصة بك تحتوي على 10,000 عنصرًا لكن buffer_size مضبوط على 1000، فإن shuffle سيختار في البداية عنصرًا عشوائيًا من أول 1000 عنصر فقط في المخزن المؤقت. بمجرد اختيار عنصر، يتم استبدال مكانه في المخزن المؤقت بالعنصر التالي (أي العنصر رقم 1,001)، مع الحفاظ على مخزن مؤقت يتكون من 1000 عنصر.
إذا كان مجموعة البيانات مكوّنة من عدة أجزاء، فإنها تقوم أيضًا بـshuffle لترتيب هذه الأجزاء.
ومع ذلك، إذا تم تثبيت الترتيب باستخدام skip() أو take()، فإن ترتيب الأجزاء يبقى دون تغيير.
مثال:
>>> from datasets import load_dataset
>>> ds = load_dataset("cornell-movie-review-data/rotten_tomatoes", streaming=True)
>>> list(ds["train"].take(3))
[{'label': 1,
'text': 'the rock is destined to be the 21st century's new " conan " and that he's going to make a splash even greater than arnold schwarzenegger , jean-claud van damme or steven segal .'},
{'label': 1,
'text': 'the gorgeously elaborate continuation of " the lord of the rings " trilogy is so huge that a column of words cannot adequately describe co-writer/director peter jackson's expanded vision of j . r . r . tolkien's middle-earth .'},
{'label': 1, 'text': 'effective but too-tepid biopic'}]
>>> ds = ds.shuffle(seed=42)
>>> list(ds["train"].take(3))
[{'label': 1,
'text': "a sports movie with action that's exciting on the field and a story you care about off it ."},
{'label': 1,
'text': 'at its best , the good girl is a refreshingly adult take on adultery . . .'},
{'label': 1,
'text': "sam jones became a very lucky filmmaker the day wilco got dropped from their record label , proving that one man's ruin may be another's fortune ."}]with_format
< source >( type: typing.Optional[str] = None )
إرجاع مجموعة بيانات بالصيغة المحددة.
مثال:
>>> from datasets import load_dataset
>>> from transformers import AutoTokenizer
>>> ds = load_dataset("cornell-movie-review-data/rotten_tomatoes", split="validation", streaming=True)
>>> tokenizer = AutoTokenizer.from_pretrained("bert-base-cased")
>>> ds = ds.map(lambda x: tokenizer(x['text'], truncation=True, padding=True), batched=True)
>>> ds = ds.with_format("torch")
>>> next(iter(ds))
{'text': 'compassionately explores the seemingly irreconcilable situation between conservative christian parents and their estranged gay and lesbian children .',
'label': tensor(1),
'input_ids': tensor([ 101, 18027, 16310, 16001, 1103, 9321, 178, 11604, 7235, 6617,
1742, 2165, 2820, 1206, 6588, 22572, 12937, 1811, 2153, 1105,
1147, 12890, 19587, 6463, 1105, 15026, 1482, 119, 102, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0]),
'token_type_ids': tensor([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]),
'attention_mask': tensor([1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0])}cast
< source >( features: Features ) → IterableDatasetDict
المعاملات
- features (
Features) — الميزات الجديدة التي يجب تحويل مجموعة البيانات إليها. يجب أن تتطابق أسماء الحقول في الميزات مع أسماء الأعمدة الحالية. كما يجب أن يكون نوع البيانات قابلاً للتحويل من نوع إلى آخر. للتحويلات غير البسيطة، مثلstring<->ClassLabel، يجب عليك استخدامmapلتحديث مجموعة البيانات.
يعيد
نسخة من مجموعة البيانات مع الميزات المُحوَّلة.
قم بتحويل مجموعة البيانات إلى مجموعة ميزات جديدة. يتم تطبيق تحويل النوع على جميع مجموعات البيانات في قاموس مجموعة البيانات.
مثال:
>>> from datasets import load_dataset
>>> ds = load_dataset("cornell-movie-review-data/rotten_tomatoes", streaming=True)
>>> ds["train"].features
{'label': ClassLabel(names=['neg', 'pos']),
'text': Value('string')}
>>> new_features = ds["train"].features.copy()
>>> new_features['label'] = ClassLabel(names=['bad', 'good'])
>>> new_features['text'] = Value('large_string')
>>> ds = ds.cast(new_features)
>>> ds["train"].features
{'label': ClassLabel(names=['bad', 'good']),
'text': Value('large_string')}cast_column
< source >( column: strfeature: typing.Union[dict, list, tuple, datasets.features.features.Value, datasets.features.features.ClassLabel, datasets.features.translation.Translation, datasets.features.translation.TranslationVariableLanguages, datasets.features.features.LargeList, datasets.features.features.List, datasets.features.features.Array2D, datasets.features.features.Array3D, datasets.features.features.Array4D, datasets.features.features.Array5D, datasets.features.audio.Audio, datasets.features.image.Image, datasets.features.mesh.Mesh, datasets.features.video.Video, datasets.features.pdf.Pdf, datasets.features.nifti.Nifti, datasets.features.bio_sequence.BioSequence, datasets.features.bio_structure.BioStructure] )
تحويل العمود إلى ميزة للتحليل. يُطبَّق تحويل النوع على جميع مجموعات البيانات ضمن قاموس مجموعة البيانات.
مثال:
>>> from datasets import load_dataset, ClassLabel
>>> ds = load_dataset("cornell-movie-review-data/rotten_tomatoes", streaming=True)
>>> ds["train"].features
{'label': ClassLabel(names=['neg', 'pos']),
'text': Value('string')}
>>> ds = ds.cast_column('label', ClassLabel(names=['bad', 'good']))
>>> ds["train"].features
{'label': ClassLabel(names=['bad', 'good']),
'text': Value('string')}remove_columns
< source >( column_names: typing.Union[str, list[str]] ) → IterableDatasetDict
المعاملات
يعيد
نسخة من كائن مجموعة البيانات دون الأعمدة المراد إزالتها.
احذف عمودًا واحدًا أو عدة أعمدة من مجموعة البيانات والميزات المرتبطة بها. يتم إجراء الحذف على الفور على الأمثلة عند التكرار على مجموعة البيانات. يُطبَّق الحذف على جميع مجموعات البيانات في قاموس مجموعة البيانات.
مثال:
>>> from datasets import load_dataset
>>> ds = load_dataset("cornell-movie-review-data/rotten_tomatoes", streaming=True)
>>> ds = ds.remove_columns("label")
>>> next(iter(ds["train"]))
{'text': 'the rock is destined to be the 21st century's new " conan " and that he's going to make a splash even greater than arnold schwarzenegger , jean-claud van damme or steven segal .'}rename_column
< source >( original_column_name: strnew_column_name: str ) → IterableDatasetDict
إعادة تسمية عمود في مجموعة البيانات، ونقل الميزات المرتبطة بالعمود الأصلي إلى تحت اسم العمود الجديد. تُطبَّق إعادة التسمية على جميع مجموعات البيانات في قاموس مجموعة البيانات.
مثال:
>>> from datasets import load_dataset
>>> ds = load_dataset("cornell-movie-review-data/rotten_tomatoes", streaming=True)
>>> ds = ds.rename_column("text", "movie_review")
>>> next(iter(ds["train"]))
{'label': 1,
'movie_review': 'the rock is destined to be the 21st century's new " conan " and that he's going to make a splash even greater than arnold schwarzenegger , jean-claud van damme or steven segal .'}rename_columns
< source >( column_mapping: dict ) → IterableDatasetDict
المعاملات
يعيد
نسخة من مجموعة البيانات مع إعادة تسمية الأعمدة
أعد تسمية عدة أعمدة في مجموعة البيانات، وانقل الميزات المرتبطة بالأعمدة الأصلية إلى الأسماء الجديدة للأعمدة. يتم تطبيق إعادة التسمية على جميع مجموعات البيانات في قاموس مجموعة البيانات.
مثال:
>>> from datasets import load_dataset
>>> ds = load_dataset("cornell-movie-review-data/rotten_tomatoes", streaming=True)
>>> ds = ds.rename_columns({"text": "movie_review", "label": "rating"})
>>> next(iter(ds["train"]))
{'movie_review': 'the rock is destined to be the 21st century's new " conan " and that he's going to make a splash even greater than arnold schwarzenegger , jean-claud van damme or steven segal .',
'rating': 1}select_columns
< source >( column_names: typing.Union[str, list[str]] ) → IterableDatasetDict
المعاملات
يعيد
نسخة من كائن مجموعة البيانات تحتوي على الأعمدة المحددة فقط.
اختر عمودًا واحدًا أو عدة أعمدة في مجموعة البيانات والميزات المرتبطة بها. يتم تنفيذ الاختيار على الفور على الأمثلة عند التكرار على مجموعة البيانات. يُطبَّق الاختيار على جميع مجموعات البيانات في قاموس مجموعة البيانات.
مثال:
>>> from datasets import load_dataset
>>> ds = load_dataset("cornell-movie-review-data/rotten_tomatoes", streaming=True)
>>> ds = ds.select("text")
>>> next(iter(ds["train"]))
{'text': 'the rock is destined to be the 21st century's new " conan " and that he's going to make a splash even greater than arnold schwarzenegger , jean-claud van damme or steven segal .'}push_to_hub
< source >( repo_id: strconfig_name: str = 'default'set_default: typing.Optional[bool] = Nonedata_dir: typing.Optional[str] = Nonecommit_message: typing.Optional[str] = Nonecommit_description: typing.Optional[str] = Noneprivate: typing.Optional[bool] = Nonetoken: typing.Optional[str] = Nonerevision: typing.Optional[str] = Nonecreate_pr: typing.Optional[bool] = Falsemax_shard_size: typing.Union[str, int, NoneType] = Nonenum_shards: typing.Optional[dict[str, int]] = Noneembed_external_files: bool = Truenum_proc: typing.Optional[int] = None )
المعاملات
- repo_id (
str) — معرّف المستودع الذي تريد الدفع إليه، بالصيغة التالية:<user>/<dataset_name>أو<org>/<dataset_name>. كما يقبل<dataset_name>, والذي سيُستخدم افتراضيًا نطاق المستخدم المسجّل.كما يمكن أن يكون موقعًا داخل دلو، على سبيل المثال
buckets/<user_or_org>/<bucket_name>/... - config_name (
str) — اسم إعداد مجموعة البيانات. القيمة الافتراضية هي “default”. - set_default (
bool، اختياري) — ما إذا كان يجب تعيين هذا الإعداد كإعداد افتراضي. وإلا، فإن الإعداد الافتراضي هو ذلك المسمى بـ “default”. - data_dir (
str, اختياري) — اسم المجلد الذي سيحتوي على ملفات البيانات المرفوعة. القيمة الافتراضية هيconfig_nameإذا كانت مختلفة عن "default"، وإلا فهي "data".أُضيف في 2.17.0
- commit_message (
str، اختياري) — الرسالة التي سيتم الالتزام بها أثناء الدفع. ستكون الافتراضية"Upload dataset". - commit_description (
str, اختياري) — وصف للالتزام الذي سيتم إنشاؤه. بالإضافة إلى ذلك، وصف لطلب الانضمام إذا تم إنشاؤه (create_prهو True).أُضيف في 2.16.0
- private (
bool، اختياري) — ما إذا كان سيتم جعل المستودع خاصًا. إذا كانNone(الافتراضي)، فسيكون المستودع عامًا ما لم يكن الافتراضي للمنظمة هو الخاص. يتم تجاهل هذه القيمة إذا كان المستودع موجودًا بالفعل. - token (
str, اختياري) — رمز مصادقة اختياري لـ Hugging Face Hub. إذا لم يتم تمرير رمز، فسيتم افتراضياً استخدام الرمز المحفوظ محلياً عند تسجيل الدخول باستخدامhf auth login. سيُطلق خطأً إذا لم يتم تمرير رمز وكان المستخدم غير مسجّل الدخول. - revision (
str، اختياري) — الفرع الذي سيتم دفع الملفات المرفوعة إليه. الافتراضي هو الفرع"main". - create_pr (
bool، اختياري، القيمة الافتراضيةFalse) — ما إذا كان سيتم إنشاء طلب سحب (PR) بالملفات المرفوعة أم الالتزام مباشرة. - max_shard_size (
intأوstr، اختياري) — الحد الأقصى الاختياري لحجم شظايا مجموعة البيانات المراد رفعها إلى الحاضنة. إذا تم التعبير عنه كنص، فيجب أن يتكون من أرقام تليها وحدة (مثل"500MB"أو"1GB"). إذا لم يُقدَّم، فإن كل تقسيم يحافظ على عدد الشظايا الأصلي لمجموعة البيانات. - num_shards (
Dict[str, int], اختياري) — عدد الأجزاء (shards) التي سيتم كتابتها. استخدم قاموسًا لتعريف قيمة مختلفة لـnum_shardsلكل تقسيم (split). إذا تم تقديمmax_shard_sizeولم يتم تقديمnum_shardsلتقسيم معين، فإن عدد الأجزاء لذلك التقسيم يُقدَّر منmax_shard_size. - embed_external_files (
bool, الافتراضي هوTrue) — ما إذا كان يجب تضمين بايتات الملفات في الشرائح. على وجه التحديد، سيقوم بذلك قبل الدفع للحقول من النوع: - num_proc (
int, اختياري, القيمة الافتراضية هيNone) — عدد العمليات عند تجهيز مجموعة البيانات ورفعها. يُفيد هذا الأمر إذا كانت مجموعة البيانات تتكون من العديد من العينات أو ملفات الوسائط المضمنة. يستخدم سياق "spawn" للعمل مع hf_xet، وهو عميل rust للرفع السريع إلى HF. تُعطَّل المعالجة متعددة العمليات افتراضيًا.أُضيف في 4.0.0
يدفع IterableDatasetDict إلى المستودع كمجموعة بيانات Parquet. يتم دفع IterableDatasetDict باستخدام طلبات HTTP ولا يتطلب تثبيت git أو git-lfs.
سيتم دفع كل تقسيم من تقسيمات مجموعة البيانات بشكل مستقل. وستحتفظ مجموعة البيانات المُدَفوعة بأسماء التقسيمات الأصلية.
ملفات Parquet الناتجة مكتفية ذاتياً افتراضياً: إذا احتوى مجموعة البيانات الخاصة بك على بيانات Image أو Audio، فستخزن ملفات Parquet البايتات الخاصة بصورك أو ملفات الصوت.
يمكنك تعطيل ذلك عن طريق تعيين embed_external_files إلى False.
مثال:
>>> dataset_dict.push_to_hub("<organization>/<dataset_id>")
>>> dataset_dict.push_to_hub("<organization>/<dataset_id>", private=True)
>>> dataset_dict.push_to_hub("<organization>/<dataset_id>", max_shard_size="1GB")
>>> dataset_dict.push_to_hub("<organization>/<dataset_id>", num_shards={"train": 1024, "test": 8})إذا كنت ترغب في إضافة تكوين جديد (أو مجموعة فرعية) إلى مجموعة بيانات (على سبيل المثال، إذا كانت مجموعة البيانات تحتوي على مهام/إصدارات/لغات متعددة):
>>> english_dataset.push_to_hub("<organization>/<dataset_id>", "en")
>>> french_dataset.push_to_hub("<organization>/<dataset_id>", "fr")
>>> # later
>>> english_dataset = load_dataset("<organization>/<dataset_id>", "en")
>>> french_dataset = load_dataset("<organization>/<dataset_id>", "fr")الميزات
قاموس خاص يحدد البنية الداخلية لمجموعة البيانات.
يتم إنشاء الكائن باستخدام قاموس من النوع dict[str, FieldType]، حيث تكون المفاتيح هي أسماء الأعمدة المطلوبة، والقيم هي نوع العمود المعني.
يمكن أن يكون FieldType أحد ما يلي:
- تحدد ميزة Value قيمة لنوع بيانات واحد، مثل
int64أوstring. - تحدد ميزة ClassLabel مجموعة محددة مسبقًا من الفئات التي يمكن ربطها بوسوم، وستُخزَّن كأعداد صحيحة في مجموعة البيانات.
- يحدد
dictفي Python ميزة مركّبة تحتوي على تعيين من الحقول الفرعية إلى الميزات الفرعية. من الممكن وجود حقول متداخلة داخل حقول متداخلة بطريقة عشوائية. - يحدد List أو LargeList ميزة مركبة تحتوي على تسلسل من الميزات الفرعية، جميعها من نفس نوع الميزة.
- خاصية Array2D أو Array3D أو Array4D أو Array5D للمصفوفات متعددة الأبعاد.
- ميزة Audio لتخزين المسار المطلق إلى ملف صوتي أو قاموس يحتوي على المسار النسبي لملف صوتي (مفتاح “path”) ومحتواه البايتي (مفتاح “bytes”). تقوم هذه ميزة بتحميل الصوت بشكل كسول باستخدام مُفكّك.
- خاصية Image لتخزين المسار المطلق لملف صورة، أو كائن
np.ndarray، أو كائنPIL.Image.Image، أو قاموس يحتوي على المسار النسبي لملف الصورة (مفتاح “path”) ومحتواه البايتي (مفتاح “bytes”). تستخرج هذه الخاصية بيانات الصورة. - ميزة Video لتخزين المسار المطلق لملف فيديو، أو كائن
torchcodec.decoders.VideoDecoder، أو قاموس يحتوي على المسار النسبي لملف الفيديو (المفتاح “path”) ومحتواه البايتي (المفتاح “bytes”). تقوم هذه ميزة بتحميل الفيديو بشكل كسول باستخدام مُفكّك. - ميزة Pdf لتخزين المسار المطلق إلى ملف PDF، أو كائن
pdfplumber.pdf.PDF، أو قاموس يحتوي على المسار النسبي لملف PDF (المفتاح “path”) ومحتواه البايتي (المفتاح “bytes”). تقوم هذه ميزة بتحميل ملف PDF بشكل كسول باستخدام قارئ PDF. - ميزة Nifti لتخزين المسار المطلق إلى ملف تصوير عصبي بصيغة NIfTI، أو كائن
nibabel.Nifti1Imageأو قاموس يحتوي على المسار النسبي لملف NIfTI (المفتاح “path”) ومحتواه البايتي (المفتاح “bytes”). تقوم هذه ميزة بتحميل ملف NIfTI بشكل كسول باستخدام nibabel. - ميزة Translation أو TranslationVariableLanguages الخاصة بترجمة الآلة.
- ميزة Json لتخزين البيانات غير المهيكلة، مثل تلك التي تحتوي على أنواع مختلطة/عشوائية. تحت الغطاء
أنشئ نسخة عميقة من Features.
decode_batch
< source >( batch: dicttoken_per_repo_id: typing.Optional[dict[str, typing.Union[str, bool, NoneType]]] = None )
فك ترميز الدفعة باستخدام فك ترميز مخصص للميزات.
decode_column
< source >( column: listcolumn_name: strtoken_per_repo_id: typing.Optional[dict[str, typing.Union[str, bool, NoneType]]] = None )
فك ترميز العمود باستخدام فك ترميز مخصص للميزة.
decode_example
< source >( example: dicttoken_per_repo_id: typing.Optional[dict[str, typing.Union[str, bool, NoneType]]] = None )
مثال على فك الترميز مع فك ميزات مخصص.
encode_batch
< source >( batch )
ترميز الدفعة إلى صيغة Arrow.
encode_column
< source >( columncolumn_name: str )
ترميز العمود إلى صيغة مخصصة لـ Arrow.
encode_example
< source >( example )
ترميز المثال إلى صيغة Arrow.
تسطيح الميزات. يتم حذف كل عمود من نوع القاموس واستبداله بجميع الحقول الفرعية التي يحتويها. تُسمّى الحقول الجديدة عن طريق دمج اسم العمود الأصلي واسم الحقل الفرعي على النحو التالي: <original>.<subfield>.
إذا احتوت عمود على قواميس متداخلة، فإن أسماء الحقول الفرعية على المستويات الأدنى تُدمج أيضًا لتشكيل أعمدة جديدة: <original>.<subfield>.<subsubfield>، وما إلى ذلك.
مثال:
>>> from datasets import load_dataset
>>> ds = load_dataset("rajpurkar/squad", split="train")
>>> ds.features.flatten()
{'answers.answer_start': List(Value('int32'), id=None),
'answers.text': List(Value('string'), id=None),
'context': Value('string'),
'id': Value('string'),
'question': Value('string'),
'title': Value('string')}from_arrow_schema
< source >( pa_schema: Schema )
إنشاء Features من مخطط Arrow. كما يتحقق من بيانات وصفية المخطط بخصوص ميزات Hugging Face Datasets. لا يتم دعم الحقول غير القابلة للتبديل (Non-nullable) وتُضبط لتكون قابلة للتبديل (nullable).
كما أن pa.dictionary غير مدعوم، ويُستخدم النوع الأساسي بدلاً منه. لذلك، تقوم مجموعات البيانات بتحويل كائنات DictionaryArray إلى قيمها الفعلية.
إنشاء [Features] من قاموس.
أعد توليد كائن الميزة المتداخلة من قاموس مُفكك التسلسل. نستخدم المفتاح _type لاستنتاج اسم فئة البيانات الخاصة بالميزة FieldType.
يتيح ذلك استخدام بناءٍ مريح لتعريف الميزات من قواميس JSON المُفكَّكة. تُستخدم هذه الدالة على وجه الخصوص عند فكّ تسلسل [DatasetInfo] الذي تمّ تصديره إلى كائن JSON. تعمل هذه الدالة كمقابل لـ [Features.from_arrow_schema] وتتعامل مع الفوريّة المتكررة حقلًا بحقل، لكنها لا تتطلب أيّ خرائط إلى/من pyarrow، باستثناء أنها تستفيد من خرائط أنواع البيانات الأولية في pyarrow التي يقوم بها [Value] تلقائيًا.
reorder_fields_as
< source >( other: Features )
Reorder Features fields to match the field order of other [Features].
ترتيب الحقول مهم لأنه يؤثر على بيانات arrow الأساسية. إعادة ترتيب الحقول تتيح مطابقة نوع بيانات arrow الأساسية.
مثال:
>>> from datasets import Features, List, Value
>>> # let's say we have two features with a different order of nested fields (for a and b for example)
>>> f1 = Features({"root": {"a": Value("string"), "b": Value("string")}})
>>> f2 = Features({"root": {"b": Value("string"), "a": Value("string")}})
>>> assert f1.type != f2.type
>>> # re-ordering keeps the base structure (here List is defined at the root level), but makes the fields order match
>>> f1.reorder_fields_as(f2)
{'root': List({'b': Value('string'), 'a': Value('string')})}
>>> assert f1.reorder_fields_as(f2).type == f2.typeScalar
class datasets.Value
< source >( dtype: strid: typing.Optional[str] = None )
قيمة مكوّن قياسي من نوع بيانات محدد.
أنواع Value الممكنة هي كالتالي:
nullboolint8int16int32int64uint8uint16uint32uint64float16float32(مستعار float)float64(مستعار double)time32[(s|ms)]time64[(us|ns)]timestamp[(s|ms|us|ns)]timestamp[(s|ms|us|ns), tz=(tzstring)]date32date64duration[(s|ms|us|ns)]decimal128(precision, scale)decimal256(precision, scale)binarylarge_binarybinary_viewstringlarge_stringstring_view
فئة datasets.ClassLabel
< source >( num_classes: dataclasses.InitVar[typing.Optional[int]] = Nonenames: list = Nonenames_file: dataclasses.InitVar[typing.Optional[str]] = Noneid: typing.Optional[str] = None )
نوع الميزة لوسوم الفئات الصحيحة.
هناك 3 طرق لتعريف ClassLabel، تتوافق مع 3 معاملات:
num_classes: أنشئ تسميات من 0 إلى (num_classes-1).names: قائمة من نصوص التسميات.names_file: ملف يحتوي على قائمة التسميات.
تُخزَّن التسميات في الخلفية كأعداد صحيحة. يمكنك استخدام -1 لتمثيل التسميات المجهولة أو الناقصة.
مثال:
>>> from datasets import Features, ClassLabel
>>> features = Features({'label': ClassLabel(num_classes=3, names=['bad', 'ok', 'good'])})
>>> features
{'label': ClassLabel(names=['bad', 'ok', 'good'])}cast_storage
< source >( storage: typing.Union[pyarrow.lib.StringArray, pyarrow.lib.IntegerArray] ) → pa.Int64Array
قم بتحويل مصفوفة Arrow إلى نوع تخزين arrow الخاص بـ ClassLabel.
أنواع Arrow التي يمكن تحويلها إلى نوع تخزين pyarrow الخاص بـ ClassLabel هي:
pa.string()pa.int()
التحويل من integer إلى string لاسم الفئة.
بالنسبة إلى التسميات المجهولة/الناقصة: تمرير أعداد سالبة يثير ValueError.
اسم فئة التحويل string => integer.
مركّب
فئة datasets.LargeList
< source >( feature: typing.Anyid: typing.Optional[str] = None )
نوع الميزة لبيانات القوائم الكبيرة المكوّنة من نوع بيانات الميزات الفرعية.
يعتمد على pyarrow.LargeListType، وهو يشبه pyarrow.ListType لكنه يستخدم إزاحات 64-بت بدلاً من 32-بت.
class datasets.List
< source >( feature: typing.Anylength: int = -1id: typing.Optional[str] = None )
نوع الميزة لبيانات القوائم الكبيرة المكوّنة من نوع بيانات الميزات الفرعية.
يعتمد على pyarrow.ListType، الذي يستخدم إزاحات 32-بت أو طولًا ثابتًا.
فئة datasets.Sequence
< source >( feature = Nonelength = -1**kwargs )
يُعدّ Sequence أداة مساعدة تقوم تلقائيًا بتحويل ميزة القاموس الداخلية إلى قاموس من القوائم. تم تنفيذ هذا السلوك ليكون طبقة توافق مع مكتبة TensorFlow Datasets، لكنه قد لا يكون مرغوبًا فيه في بعض الحالات. إذا كنت لا تريد هذا السلوك، يمكنك استخدام List أو LargeList بدلاً من Sequence.
الترجمة
فئة datasets.Translation
< source >( languages: listid: typing.Optional[str] = None )
Feature للترجمات مع لغات ثابتة لكل مثال.
هنا من أجل التوافق مع tfds.
مثال:
>>> # At construction time:
>>> datasets.features.Translation(languages=['en', 'fr', 'de'])
>>> # During data generation:
>>> yield {
... 'en': 'the cat',
... 'fr': 'le chat',
... 'de': 'die katze'
... }Flatten ميزة الترجمة إلى قاموس.
class datasets.TranslationVariableLanguages
< source >( languages: typing.Optional[list] = Nonenum_languages: typing.Optional[int] = Noneid: typing.Optional[str] = None ) →
language or translation (variable-length 1D tf.Tensor of tf.string)
Feature للترجمات التي تتضمن لغات متغيرة لكل مثال.
هنا من أجل التوافق مع tfds.
مثال:
>>> # At construction time:
>>> datasets.features.TranslationVariableLanguages(languages=['en', 'fr', 'de'])
>>> # During data generation:
>>> yield {
... 'en': 'the cat',
... 'fr': ['le chat', 'la chatte,']
... 'de': 'die katze'
... }
>>> # Tensor returned :
>>> {
... 'language': ['en', 'de', 'fr', 'fr'],
... 'translation': ['the cat', 'die katze', 'la chatte', 'le chat'],
... }Flatten الخاصية TranslationVariableLanguages إلى قاموس.
المصفوفات
فئة datasets.Array2D
< source >( shape: tupledtype: strid: typing.Optional[str] = None )
أنشئ مصفوفة ثنائية الأبعاد.
class datasets.Array3D
< source >( shape: tupledtype: strid: typing.Optional[str] = None )
أنشئ مصفوفة ثلاثية الأبعاد.
class datasets.Array4D
< source >( shape: tupledtype: strid: typing.Optional[str] = None )
أنشئ مصفوفة رباعية الأبعاد.
class datasets.Array5D
< source >( shape: tupledtype: strid: typing.Optional[str] = None )
أنشئ مصفوفة خماسية الأبعاد.
الصوت
فئة datasets.Audio
< source >( sampling_rate: typing.Optional[int] = Nonedecode: bool = Truenum_channels: typing.Optional[int] = Nonestream_index: typing.Optional[int] = Noneid: typing.Optional[str] = None )
المعاملات
- sampling_rate (
int، اختياري) — معدل العينة المستهدف. إذا كانNone، يتم استخدام معدل العينة الأصلي. - num_channels (
int, اختياري) — عدد القنوات المطلوب للعينات. افتراضيًا، يُستخدم عدد قنوات المصدر. ستعيد فك ترميز الصوت عينات بشكل (num_channels, num_samples) حاليًاNone(عدد قنوات المصدر، الافتراضي)،1(أحادي) أو2(ستيريو) قنوات مدعومة. يُمررnum_channelsالحجج إلىtorchcodec.decoders.AudioDecoder.أُضيف في 4.4.0
- decode (
bool، القيمة الافتراضيةTrue) — ما إذا كان سيتم فك ترميز بيانات الصوت. إذا كانتFalse، فسيُعاد القاموس الأساسي بالصيغة{"path": audio_path, "bytes": audio_bytes}. - stream_index (
int, اختياري) — مؤشر البث المراد استخدامه من الملف. إذا كانNoneفسيتم افتراضياً استخدام المؤشر “الأفضل”.
مكوّن Feature الصوتي لاستخراج البيانات الصوتية من ملف صوتي.
المدخل: تقبل ميزة الصوت كمدخل:
str: المسار المطلق لملف الصوت (أي يُسمح بالوصول العشوائي).مسار
pathlib.Path: المسار إلى ملف الصوت (أي يُسمح بالوصول العشوائي).dictبالمفاتيح:path: نص يحتوي على المسار النسبي لملف الصوت إلى ملف الأرشيف.bytes: محتوى البايتات الخاص بملف الصوت.
يُعدّ هذا مفيدًا لملفات parquet أو webdataset التي تضمّن ملفات صوتية.
dictبالمفاتيح:array: مصفوفة تحتوي على عينة الصوتsampling_rate: عدد صحيح يقابل معدل أخذ العينات لعينة الصوت.
كائن
torchcodec.decoders.AudioDecoder: كائن مُفكِّك الصوت الخاص بـ torchcodec.
المخرجات: تُخرج ميزات الصوت البيانات ككائنات torchcodec.decoders.AudioDecoder، مع مفاتيح إضافية:
array: مصفوفة تحتوي على عينة الصوتsampling_rate: عدد صحيح يقابل معدل أخذ العينات لعينة الصوت.
مثال:
>>> from datasets import load_dataset, Audio
>>> ds = load_dataset("PolyAI/minds14", name="en-US", split="train")
>>> ds = ds.cast_column("audio", Audio(sampling_rate=44100, num_channels=2))
>>> ds[0]["audio"]
<datasets.features._torchcodec.AudioDecoder object at 0x11642b6a0>
>>> audio = ds[0]["audio"]
>>> audio.get_samples_played_in_range(0, 10)
AudioSamples:
data (shape): torch.Size([2, 110592])
pts_seconds: 0.0
duration_seconds: 2.507755102040816
sample_rate: 44100cast_storage
< source >( storage: typing.Union[pyarrow.lib.StringArray, pyarrow.lib.StructArray] ) → pa.StructArray
قم بتحويل مصفوفة Arrow إلى نوع تخزين Audio الخاص بـ arrow. أنواع Arrow التي يمكن تحويلها إلى نوع تخزين pyarrow الخاص بـ Audio هي:
pa.string()- يجب أن يحتوي على بيانات "path"pa.binary()- يجب أن يحتوي على بايتات الصوتpa.struct({"bytes": pa.binary()})pa.struct({"path": pa.string()})pa.struct({"bytes": pa.binary(), "path": pa.string()})- لا يهم الترتيب
decode_example
< source >( value: dicttoken_per_repo_id: typing.Optional[dict[str, typing.Union[str, bool, NoneType]]] = None )
decode ملف صوتي مثال إلى بيانات صوتية.
embed_storage
< source >( storage: StructArraytoken_per_repo_id = Nonelocal_files: bool = Trueremote_files: bool = True ) → pa.StructArray
المعاملات
- storage (
pa.StructArray) — مصفوفة PyArrow للتضمين. - token_per_repo_id (
dict, اختياري) — قاموس repo_id -> token لجلب بايتات الملفات. - local_files (
bool, الافتراضي هوTrue) — ما إذا كان يجب تضمين بيانات الملفات المحلية في المصفوفةأُضيف في 4.8.5
- remote_files (
bool, القيمة الافتراضية هيTrue) — ما إذا كان يجب تضمين بيانات الملفات البعيدة في المصفوفة. على سبيل المثال، الملفات التي تبدأ مساراتها بـ hf:// أو https://أُضيف في 4.8.5
يعيد
pa.StructArray
مصفوفة في نوع تخزين Audio arrow، وهو
pa.struct({"bytes": pa.binary(), "path": pa.string()}).
تضمين ملفات الصوت في مصفوفة Arrow.
encode_example
< source >( value: typing.Union[str, bytes, bytearray, dict, ForwardRef('AudioDecoder')] ) → dict
ترميز المثال إلى صيغة Arrow.
إذا كان في حالة قابلة للفك، فاطرح خطأً، وإلا فسطّح الميزة إلى قاموس.
صورة
فئة datasets.Image
< source >( mode: typing.Optional[str] = Nonedecode: bool = Trueid: typing.Optional[str] = None )
خاصية Feature لقراءة بيانات الصورة من ملف صورة.
المدخل: تقبل ميزة الصورة كمدخل:
str: المسار المطلق لملف الصورة (أي يُسمح بالوصول العشوائي).مسار
pathlib.Path: المسار إلى ملف الصورة (أي يُسمح بالوصول العشوائي).dictبالمفاتيح:path: نص يحتوي على المسار النسبي لملف الصورة إلى ملف الأرشيف.bytes: بايتات ملف الصورة.
يُعدّ هذا مفيدًا لملفات parquet أو webdataset التي تضمّن ملفات صور.
مصفوفة
np.ndarray: مصفوفة NumPy تمثل صورة.A
PIL.Image.Image: PIL image object.
المخرجات: تُخرج ميزات الصورة البيانات ككائنات PIL.Image.Image.
أمثلة:
>>> from datasets import load_dataset, Image
>>> ds = load_dataset("AI-Lab-Makerere/beans", split="train")
>>> ds.features["image"]
Image(decode=True, id=None)
>>> ds[0]["image"]
<PIL.JpegImagePlugin.JpegImageFile image mode=RGB size=500x500 at 0x15E52E7F0>
>>> ds = ds.cast_column('image', Image(decode=False))
{'bytes': None,
'path': '/root/.cache/huggingface/datasets/downloads/extracted/b0a21163f78769a2cf11f58dfc767fb458fc7cea5c05dccc0144a2c0f0bc1292/train/healthy/healthy_train.85.jpg'}cast_storage
< source >( storage: typing.Union[pyarrow.lib.StringArray, pyarrow.lib.StructArray, pyarrow.lib.ListArray] ) → pa.StructArray
قم بتحويل مصفوفة Arrow إلى نوع تخزين Image الخاص بـ arrow. أنواع Arrow التي يمكن تحويلها إلى نوع تخزين Image الخاص بـ pyarrow هي:
pa.string()- يجب أن يحتوي على بيانات "path"pa.large_string()- يجب أن يحتوي على بيانات "path" (سيتم تحويله إلى نص إذا أمكن)pa.binary()- يجب أن يحتوي على بايتات الصورةpa.struct({"bytes": pa.binary()})pa.struct({"path": pa.string()})pa.struct({"bytes": pa.binary(), "path": pa.string()})- لا يهم الترتيبpa.list(*)- يجب أن يحتوي على بيانات مصفوفة الصور
decode_example
< source >( value: dicttoken_per_repo_id = None )
المعاملات
- value (
strأوdict) — نص يحتوي على مسار مطلق لملف الصورة، أو قاموس بمفاتيح:path: نص يحتوي على مسار مطلق أو نسبي لملف الصورة.bytes: بايتات ملف الصورة.
- token_per_repo_id (
dict, اختياري) — للوصول إلى ملفات الصور وفك ترميزها من المستودعات الخاصة على Hub، يمكنك تمرير قاموس repo_id (str) -> token (boolأوstr).
فك ترميز ملف صورة مثال إلى بيانات صورة.
embed_storage
< source >( storage: StructArraytoken_per_repo_id = Nonelocal_files: bool = Trueremote_files: bool = True ) → pa.StructArray
المعاملات
- storage (
pa.StructArray) — مصفوفة PyArrow للتضمين. - token_per_repo_id (
dict, اختياري) — قاموس repo_id -> token لجلب بايتات الملفات. - local_files (
bool, الافتراضي هوTrue) — ما إذا كان يجب تضمين بيانات الملفات المحلية في المصفوفةأُضيف في 4.8.5
- remote_files (
bool, القيمة الافتراضية هيTrue) — ما إذا كان يجب تضمين بيانات الملفات البعيدة في المصفوفة. على سبيل المثال، الملفات التي تبدأ مساراتها بـ hf:// أو https://أُضيف في 4.8.5
يعيد
pa.StructArray
مصفوفة في نوع تخزين سهم الصورة، وهو
pa.struct({"bytes": pa.binary(), "path": pa.string()}).
تضمين ملفات الصور في مصفوفة Arrow.
encode_example
< source >( value: typing.Union[str, bytes, bytearray, dict, numpy.ndarray, ForwardRef('PIL.Image.Image')] )
ترميز المثال إلى صيغة Arrow.
إذا كان في حالة قابلة للفك، أعد الميزة نفسها، وإلا فسطّح الميزة إلى قاموس.
فيديو
فئة datasets.Video
< source >( decode: bool = Truestream_index: typing.Optional[int] = Nonedimension_order: typing.Literal['NCHW', 'NHWC'] = 'NCHW'num_ffmpeg_threads: int = 1device: typing.Union[str, ForwardRef('torch.device'), NoneType] = 'cpu'seek_mode: typing.Literal['exact', 'approximate'] = 'exact'id: typing.Optional[str] = None )
المعاملات
- decode (
bool، القيمة الافتراضيةTrue) — ما إذا كان سيتم فك ترميز بيانات الفيديو. إذا كانتFalse، فسيُعاد القاموس الأساسي بالصيغة{"path": video_path, "bytes": video_bytes}. - stream_index (
int, اختياري) — مؤشر البث المراد استخدامه من الملف. إذا كانNoneفسيتم افتراضياً استخدام المؤشر “الأفضل”. - dimension_order (
str, defaults toNCHW) — The dimension order of the decoded frames. where N is the batch size, C is the number of channels, H is the height, and W is the width of the frames. - num_ffmpeg_threads (
int، القيمة الافتراضية1) — عدد الخيوط المستخدمة لفك ترميز الفيديو. (يُوصى بإبقائها عند 1) - device (
strأوtorch.device، الافتراضيcpu) — الجهاز المستخدم لفك ترميز الفيديو. - seek_mode (
str، القيمة الافتراضيةexact) — يحدد ما إذا كان الوصول إلى الإطار سيكون “دقيقاً” (exact) أو “تقريبياً” (approximate). يضمن الوضع الدقيق أن طلب الإطار i سيعيد دائماً الإطار i، لكن ذلك يتطلب مسحاً أولياً للملف. الوضع التقريبي أسرع لأنه يتجنب مسح الملف، لكنه أقل دقة لأنه يستخدم بيانات وصفية الملف (metadata) لحساب الموقع المحتمل للإطار i. اقرأ المزيد هنا
ميزة Feature في الفيديو لقراءة بيانات الفيديو من ملف فيديو.
المدخل: تقبل ميزة الفيديو كمدخل:
str: المسار المطلق لملف الفيديو (أي يُسمح بالوصول العشوائي).مسار
pathlib.Path: المسار إلى ملف الفيديو (أي يُسمح بالوصول العشوائي).dictبالمفاتيح:path: نص يحتوي على المسار النسبي لملف الفيديو في مستودع مجموعة البيانات.bytes: بايتات ملف الفيديو.
يُعدّ هذا مفيدًا لملفات parquet أو webdataset التي تضمّن ملفات فيديو.
كائن
torchcodec.decoders.VideoDecoder: كائن مُفكِّك الفيديو الخاص بـ torchcodec.
المخرجات: تُميَّز مخرجات الفيديو البيانات ككائنات من نوع torchcodec.decoders.VideoDecoder.
أمثلة:
>>> from datasets import Dataset, Video
>>> ds = Dataset.from_dict({"video":["path/to/Screen Recording.mov"]}).cast_column("video", Video())
>>> ds.features["video"]
Video(decode=True, id=None)
>>> ds[0]["video"]
<torchcodec.decoders._video_decoder.VideoDecoder object at 0x14a61e080>
>>> video = ds[0]["video"]
>>> video.get_frames_in_range(0, 10)
FrameBatch:
data (shape): torch.Size([10, 3, 50, 66])
pts_seconds: tensor([0.4333, 0.4333, 0.4333, 0.4333, 0.4333, 0.4333, 0.4333, 0.4333, 0.4333,
0.4333], dtype=torch.float64)
duration_seconds: tensor([0.0167, 0.0167, 0.0167, 0.0167, 0.0167, 0.0167, 0.0167, 0.0167, 0.0167,
0.0167], dtype=torch.float64)
>>> ds.cast_column('video', Video(decode=False))[0]["video]
{'bytes': None,
'path': 'path/to/Screen Recording.mov'}cast_storage
< source >( storage: typing.Union[pyarrow.lib.StringArray, pyarrow.lib.StructArray, pyarrow.lib.ListArray] ) → pa.StructArray
قم بتحويل مصفوفة Arrow إلى نوع تخزين Video الخاص بـ arrow. أنواع Arrow التي يمكن تحويلها إلى نوع تخزين pyarrow الخاص بـ Video هي:
pa.string()- يجب أن يحتوي على بيانات "path"pa.binary()- يجب أن يحتوي على بايتات الفيديوpa.struct({"bytes": pa.binary()})pa.struct({"path": pa.string()})pa.struct({"bytes": pa.binary(), "path": pa.string()})- لا يهم الترتيبpa.list(*)- يجب أن يحتوي على بيانات مصفوفة الفيديو
decode_example
< source >( value: typing.Union[str, datasets.features.video.Example]token_per_repo_id: typing.Optional[dict[str, typing.Union[bool, str]]] = None )
المعاملات
- value (
strأوdict) — نص يحتوي على مسار مطلق لملف الفيديو، أو قاموس بمفاتيح:path: نص يحتوي على مسار مطلق أو نسبي لملف الفيديو.bytes: بايتات ملف الفيديو.
- token_per_repo_id (
dict, اختياري) — للوصول إلى ملفات الفيديو في المستودعات الخاصة على Hub وفك ترميزها، يمكنك تمرير قاموس repo_id (str) -> token (boolأوstr).
Decode ملف فيديو كمثال إلى بيانات فيديو.
embed_storage
< source >( storage: StructArraytoken_per_repo_id = Nonelocal_files: bool = Trueremote_files: bool = True ) → pa.StructArray
المعاملات
- storage (
pa.StructArray) — مصفوفة PyArrow للتضمين. - token_per_repo_id (
dict, اختياري) — قاموس repo_id -> token لجلب بايتات الملفات. - local_files (
bool, الافتراضي هوTrue) — ما إذا كان يجب تضمين بيانات الملفات المحلية في المصفوفةأُضيف في 4.8.5
- remote_files (
bool, القيمة الافتراضية هيTrue) — ما إذا كان يجب تضمين بيانات الملفات البعيدة في المصفوفة. على سبيل المثال، الملفات التي تبدأ مساراتها بـ hf:// أو https://أُضيف في 4.8.5
يعيد
pa.StructArray
مصفوفة في نوع تخزين السهم بالفيديو، وهو
pa.struct({"bytes": pa.binary(), "path": pa.string()}).
تضمين ملفات الصور في مصفوفة Arrow.
encode_example
< source >( value: typing.Union[str, bytes, bytearray, datasets.features.video.Example, numpy.ndarray, ForwardRef('VideoDecoder')] )
ترميز المثال إلى صيغة Arrow.
إذا كان في حالة قابلة للفك، أعد الميزة نفسها، وإلا فسطّح الميزة إلى قاموس.
شبكة
فئة datasets.Mesh
< source >( decode: bool = Trueid: typing.Optional[str] = None )
شبكة Feature لقراءة بيانات الشبكات ثلاثية الأبعاد من ملف.
المدخل: تقبل ميزة Mesh كمدخل:
str: المسار المطلق لملف الشبكة (أي يُسمح بالوصول العشوائي).pathlib.Path: مسار إلى ملف الشبكة (أي يُسمح بالوصول العشوائي).dictبالمفاتيح:path: نص يحتوي على المسار النسبي لملف الشبكة (mesh) إلى ملف الأرشيف.bytes: بايتات ملف الشبكة.
يُعدّ هذا مفيدًا لملفات parquet أو webdataset التي تضمّن ملفات mesh.
A
trimesh.Trimeshortrimesh.Scene: 3D mesh or scene object.
المخرجات: تُخرج ميزة Mesh البيانات ككائنات trimesh.Trimesh أو trimesh.Scene.
cast_storage
< source >( storage: typing.Union[pyarrow.lib.StringArray, pyarrow.lib.StructArray] ) → pa.StructArray
قم بتحويل مصفوفة Arrow إلى نوع تخزين Mesh arrow. أنواع Arrow التي يمكن تحويلها إلى نوع تخزين Mesh pyarrow هي:
pa.string()- يجب أن يحتوي على بيانات "path"pa.large_string()- يجب أن يحتوي على بيانات "path" (سيتم تحويله إلى نص إذا أمكن)pa.binary()- يجب أن يحتوي على بايتات الشبكةpa.struct({"bytes": pa.binary()})pa.struct({"path": pa.string()})pa.struct({"bytes": pa.binary(), "path": pa.string()})- لا يهم الترتيب
decode_example
< source >( value: dicttoken_per_repo_id = None )
Decode example mesh file.
embed_storage
< source >( storage: StructArraytoken_per_repo_id = Nonelocal_files: bool = Trueremote_files: bool = True ) → pa.StructArray
المعاملات
- storage (
pa.StructArray) — مصفوفة PyArrow للتضمين. - token_per_repo_id (
dict, اختياري) — قاموس repo_id -> token لجلب بايتات الملفات. - local_files (
bool، القيمة الافتراضيةTrue) — ما إذا كان يجب تضمين بيانات الملفات المحلية في المصفوفة. - remote_files (
bool، القيمة الافتراضيةTrue) — ما إذا كان يجب تضمين بيانات الملفات البعيدة في المصفوفة.
يعيد
pa.StructArray
مصفوفة في نوع تخزين Mesh arrow، وهو
pa.struct({"bytes": pa.binary(), "path": pa.string()}).
تضمين ملفات الشبكة في مصفوفة Arrow.
encode_example
< source >( value: typing.Union[str, bytes, bytearray, dict, ForwardRef('trimesh.Trimesh'), ForwardRef('trimesh.Scene')] )
ترميز المثال إلى صيغة Arrow.
إذا كان في حالة قابلة للفك، أعد الميزة نفسها، وإلا فسطّح الميزة إلى قاموس.
Json
نوع الميزة الخاص بـ JSON objects.
تُخزَّن الكائنات في الخلفية كنصوص مشفّرة بصيغة JSON.
مثال:
>>> from datasets import Features, Json
>>> features = Features({'json': Json()})
>>> features
{'json': Json()}>>> from datasets import Dataset, Features, Json, List
>>> features = Features({"a": List(Json())})
>>> ds = Dataset.from_dict({"a": [[{"b": 0}, {"c": 0}]]}, features=features)
>>> # OR
>>> ds = Dataset.from_dict({"a": [[{"b": 0}, {"c": 0}]]}, on_mixed_types="use_json")
>>> ds.features
{'a': List(Json())}
>>> ds[0]
{'a': [{'b': 0}, {'c': 0}]}
>>> def f(x):
... for y in x["a"]:
... y["d"] = "foo"
... return x
>>> ds = ds.map(f)
>>> ds.features
>>> ds[0]
{'a': [{'b': 0, 'd': 'foo'}, {'c': 0, 'd': 'foo'}]}cast_storage
< source >( storage: Array ) → pa.JsonArray
قم بتحويل مصفوفة Arrow إلى نوع تخزين arrow الخاص بـ Json.
class datasets.Pdf
< source >( decode: bool = Trueid: typing.Optional[str] = None )
تجريبي. ميزة Feature لقراءة مستندات pdf من ملف pdf.
المدخل: تقبل ميزة Pdf كمدخل:
str: المسار المطلق لملف pdf (أي يُسمح بالوصول العشوائي).مسار من نوع
pathlib.Path: المسار إلى ملف pdf (أي يُسمح بالوصول العشوائي).dictبالمفاتيح:path: نص يحتوي على المسار النسبي لملف pdf في مستودع مجموعة البيانات.bytes: بايتات ملف pdf. يُعدّ هذا مفيدًا للملفات المؤرشفة التي يتم الوصول إليها بشكل تسلسلي.
pdfplumber.pdf.PDF: كائن pdfplumber pdf.
أمثلة:
>>> from datasets import Dataset, Pdf
>>> ds = Dataset.from_dict({"pdf": ["path/to/pdf/file.pdf"]}).cast_column("pdf", Pdf())
>>> ds.features["pdf"]
Pdf(decode=True, id=None)
>>> ds[0]["pdf"]
<pdfplumber.pdf.PDF object at 0x7f8a1c2d8f40>
>>> ds = ds.cast_column("pdf", Pdf(decode=False))
>>> ds[0]["pdf"]
{'bytes': None,
'path': 'path/to/pdf/file.pdf'}cast_storage
< source >( storage: typing.Union[pyarrow.lib.StringArray, pyarrow.lib.StructArray, pyarrow.lib.ListArray] ) → pa.StructArray
قم بتحويل مصفوفة Arrow إلى نوع تخزين Pdf الخاص بـ arrow. أنواع Arrow التي يمكن تحويلها إلى نوع تخزين pyarrow الخاص بـ Pdf هي:
pa.string()- يجب أن يحتوي على بيانات "path"pa.binary()- يجب أن يحتوي على بايتات الصورةpa.struct({"bytes": pa.binary()})pa.struct({"path": pa.string()})pa.struct({"bytes": pa.binary(), "path": pa.string()})- لا يهم الترتيبpa.list(*)- يجب أن يحتوي على بيانات مصفوفة pdf
decode_example
< source >( value: dicttoken_per_repo_id = None )
المعاملات
- value (
strأوdict) — نص يحتوي على مسار ملف pdf المطلق، أو قاموس بمفاتيح:path: نص يحتوي على مسار مطلق أو نسبي لملف pdf.bytes: بايتات ملف pdf.
- token_per_repo_id (
dict, اختياري) — للوصول إلى ملفات pdf في المستودعات الخاصة على الـ Hub وفك ترميزها، يمكنك تمرير قاموس repo_id (str) -> token (boolأوstr).
تحويل ملف pdf مثال إلى بيانات pdf.
embed_storage
< source >( storage: StructArraytoken_per_repo_id = Nonelocal_files: bool = Trueremote_files: bool = True ) → pa.StructArray
المعاملات
- storage (
pa.StructArray) — مصفوفة PyArrow للتضمين. - token_per_repo_id (
dict, اختياري) — قاموس repo_id -> token لجلب بايتات الملفات. - local_files (
bool, الافتراضي هوTrue) — ما إذا كان يجب تضمين بيانات الملفات المحلية في المصفوفةأُضيف في 4.8.5
- remote_files (
bool, القيمة الافتراضية هيTrue) — ما إذا كان يجب تضمين بيانات الملفات البعيدة في المصفوفة. على سبيل المثال، الملفات التي تبدأ مساراتها بـ hf:// أو https://أُضيف في 4.8.5
يعيد
pa.StructArray
مصفوفة في نوع تخزين PDF السهمي، وهو
pa.struct({"bytes": pa.binary(), "path": pa.string()}).
تضمين ملفات PDF في مصفوفة Arrow.
encode_example
< source >( value: typing.Union[str, bytes, bytearray, dict, ForwardRef('pdfplumber.pdf.PDF')] )
ترميز المثال إلى صيغة Arrow.
إذا كان في حالة قابلة للفك، أعد الميزة نفسها، وإلا فسطّح الميزة إلى قاموس.
Nifti
class datasets.Nifti
< source >( decode: bool = Trueid: typing.Optional[str] = None )
تجريبي. ميزة Feature من Nifti لقراءة ملفات التصوير العصبي بصيغة NIfTI.
المدخل: تقبل ميزة Nifti كمدخل:
str: المسار المطلق إلى ملف NIfTI (أي يُسمح بالوصول العشوائي).مسار
pathlib.Path: المسار إلى ملف NIfTI (أي يُسمح بالوصول العشوائي).dictبالمفاتيح:path: نص يحتوي على المسار النسبي لملف NIfTI في مستودع مجموعة البيانات.bytes: بايتات ملف NIfTI. يُعدّ هذا مفيدًا للملفات المؤرشفة التي يتم الوصول إليها بشكل تسلسلي.
كائن صورة
nibabel(مثلnibabel.nifti1.Nifti1Image).
أمثلة:
>>> from datasets import Dataset, Nifti
>>> ds = Dataset.from_dict({"nifti": ["path/to/file.nii.gz"]}).cast_column("nifti", Nifti())
>>> ds.features["nifti"]
Nifti(decode=True, id=None)
>>> ds[0]["nifti"]
<nibabel.nifti1.Nifti1Image object at 0x7f8a1c2d8f40>
>>> ds = ds.cast_column("nifti", Nifti(decode=False))
>>> ds[0]["nifti"]
{'bytes': None,
'path': 'path/to/file.nii.gz'}cast_storage
< source >( storage: typing.Union[pyarrow.lib.StringArray, pyarrow.lib.StructArray, pyarrow.lib.BinaryArray] ) → pa.StructArray
قم بتحويل مصفوفة Arrow إلى نوع تخزين Nifti arrow. أنواع Arrow التي يمكن تحويلها إلى نوع تخزين Nifti pyarrow هي:
pa.string()- يجب أن يحتوي على بيانات "path"pa.binary()- يجب أن يحتوي على بايتات NIfTIpa.struct({"bytes": pa.binary()})pa.struct({"path": pa.string()})pa.struct({"bytes": pa.binary(), "path": pa.string()})- لا يهم الترتيب
decode_example
< source >( value: dicttoken_per_repo_id = None )
المعاملات
- value (
strأوdict) — نص يحتوي على مسار ملف NIfTI المطلق، أو قاموس بمفاتيح:path: نص يحتوي على مسار مطلق أو نسبي لملف NIfTI.bytes: بايتات ملف NIfTI.
- token_per_repo_id (
dict, اختياري) — للوصول إلى ملفات NIfTI الخاصة بالمستودعات الخاصة على الـ Hub وفك ترميزها، يمكنك تمرير قاموس repo_id (str) -> token (boolأوstr).
فكّ ترميز ملف NIfTI التجريبي إلى كائن صورة nibabel.
embed_storage
< source >( storage: StructArraytoken_per_repo_id = Nonelocal_files: bool = Trueremote_files: bool = True ) → pa.StructArray
المعاملات
- storage (
pa.StructArray) — مصفوفة PyArrow للتضمين. - token_per_repo_id (
dict, اختياري) — قاموس repo_id -> token لجلب بايتات الملفات. - local_files (
bool, الافتراضي هوTrue) — ما إذا كان يجب تضمين بيانات الملفات المحلية في المصفوفةأُضيف في 4.8.5
- remote_files (
bool, القيمة الافتراضية هيTrue) — ما إذا كان يجب تضمين بيانات الملفات البعيدة في المصفوفة. على سبيل المثال، الملفات التي تبدأ مساراتها بـ hf:// أو https://أُضيف في 4.8.5
يعيد
pa.StructArray
مصفوفة في نوع تخزين NifTI arrow، وهو
pa.struct({"bytes": pa.binary(), "path": pa.string()}).
تضمين ملفات NifTI في مصفوفة Arrow.
encode_example
< source >( value: typing.Union[str, bytes, bytearray, dict, ForwardRef('nib.Nifti1Image')] )
ترميز المثال إلى صيغة Arrow.
إذا كان في حالة قابلة للفك، أعد الميزة نفسها، وإلا فسطّح الميزة إلى قاموس.
BioSequence
فئة datasets.BioSequence
< source >( format: str = 'fasta'decode: bool = Trueid: typing.Optional[str] = None )
تجريبي. ميزة Feature في BioSequence لقراءة سجلات التسلسلات البيولوجية من ملف تسلسل.
يحتوي ملف التسلسل على سجل واحد أو أكثر من بقايا الأحماض الأمينية مع معرّفاتها وتعليقاتها. تتشابه صيغ FASTA وFASTQ وGenBank في هذا المستوى من حيث الشكل، ولا تختلف إلا في المُحلِّل (parser) المستخدم، لذا يختار format المُحلِّل بدلاً من تحديد النوع.
المدخل: تقبل ميزة BioSequence كمدخل:
str: المسار المطلق إلى ملف التسلسل (أي يُسمح بالوصول العشوائي).مسار من نوع
pathlib.Path: المسار إلى ملف التسلسل (أي يُسمح بالوصول العشوائي).dictبالمفاتيح:path: نص يحتوي على المسار النسبي لملف التسلسل في مستودع مجموعة البيانات.bytes: بايتات ملف التسلسل. يُعدّ هذا مفيدًا للملفات المؤرشفة التي يتم الوصول إليها بشكل تسلسلي.
سجل تسلسل
Bio.SeqRecord.SeqRecord: سجل تسلسل في مكتبة بيوبايثون.
أمثلة:
>>> from datasets import Dataset, BioSequence
>>> ds = Dataset.from_dict({"seq": ["path/to/sequences.fasta"]}).cast_column("seq", BioSequence())
>>> ds.features["seq"]
BioSequence(format='fasta', decode=True)
>>> ds[0]["seq"]
SeqRecord(seq=Seq('ACGT'), id='seq1', name='seq1', description='seq1', dbxrefs=[])
>>> ds = ds.cast_column("seq", BioSequence(decode=False))
>>> ds[0]["seq"]
{'bytes': None,
'path': 'path/to/sequences.fasta'}cast_storage
< source >( storage: typing.Union[pyarrow.lib.StringArray, pyarrow.lib.StructArray] ) → pa.StructArray
قم بتحويل مصفوفة Arrow إلى نوع تخزين BioSequence الخاص بـ arrow. أنواع Arrow التي يمكن تحويلها إلى نوع تخزين pyarrow الخاص بـ BioSequence هي:
pa.string()- يجب أن يحتوي على بيانات "path"pa.binary()- يجب أن يحتوي على بايتات الملفpa.struct({"bytes": pa.binary()})pa.struct({"path": pa.string()})pa.struct({"bytes": pa.binary(), "path": pa.string()})- لا يهم الترتيب
Decode example sequence file into a biopython record.
قد يحتوي الملف على العديد من السجلات؛ ويعيد هذا الأمر السجل الأول، لأن الصف الواحد يمثل سجلاً واحداً. استخدم محمّلات التسلسل المعبأة لتوسيع ملف متعدد السجلات إلى صف لكل سجل.
embed_storage
< source >( storage: StructArraytoken_per_repo_id = Nonelocal_files: bool = Trueremote_files: bool = True ) → pa.StructArray
المعاملات
- storage (
pa.StructArray) — مصفوفة PyArrow للتضمين. - token_per_repo_id (
dict, اختياري) — قاموس repo_id -> token لجلب بايتات الملفات. - local_files (
bool، القيمة الافتراضيةTrue) — ما إذا كان يجب تضمين بيانات الملفات المحلية في المصفوفة. - remote_files (
bool، القيمة الافتراضيةTrue) — ما إذا كان يجب تضمين بيانات الملفات البعيدة في المصفوفة.
يعيد
pa.StructArray
مصفوفة في نوع تخزين BioSequence الخاص بـ arrow.
تضمين ملفات التسلسل في مصفوفة Arrow.
encode_example
< source >( value: typing.Union[str, bytes, bytearray, dict, ForwardRef('SeqRecord')] )
ترميز المثال إلى صيغة Arrow.
إذا كان في حالة قابلة للفك، أعد الميزة نفسها، وإلا فسطّح الميزة إلى قاموس.
BioStructure
class datasets.BioStructure
< source >( format: str = 'pdb'decode: bool = Trueid: typing.Optional[str] = None )
تجريبي. ميزة Feature في BioStructure لقراءة الهياكل الجزيئية الكبيرة من ملف بنية.
يحتوي ملف البنية على الإحداثيات ثلاثية الأبعاد لذرات الجزيء، مجمّعة في سلاسل ومخلفات. يصف PDB وmmCIF نفس الكائنات ولا يختلفان إلا في المُحلِّل المستخدم، لذا يختار format المُحلِّل بدلاً من النوع.
المدخل: تقبل ميزة BioStructure كمدخل:
str: المسار المطلق إلى ملف البنية (أي يُسمح بالوصول العشوائي).مسار من نوع
pathlib.Path: يشير إلى ملف البنية (أي يُسمح بالوصول العشوائي).dictبالمفاتيح:path: نص يحتوي على المسار النسبي لملف البنية في مستودع مجموعة البيانات.bytes: بايتات ملف البنية. يُعدّ هذا مفيدًا للملفات المؤرشفة التي يتم الوصول إليها بشكل تسلسلي.
Bio.PDB.Structure.Structure: هيكل bioPython.
أمثلة:
>>> from datasets import Dataset, BioStructure
>>> ds = Dataset.from_dict({"st": ["path/to/1abc.pdb"]}).cast_column("st", BioStructure())
>>> ds.features["st"]
BioStructure(format='pdb', decode=True)
>>> ds[0]["st"]
<Structure id=1abc>
>>> ds = ds.cast_column("st", BioStructure(decode=False))
>>> ds[0]["st"]
{'bytes': None,
'path': 'path/to/1abc.pdb'}cast_storage
< source >( storage: typing.Union[pyarrow.lib.StringArray, pyarrow.lib.StructArray] ) → pa.StructArray
قم بتحويل مصفوفة Arrow إلى نوع تخزين arrow الخاص بـ BioStructure. أنواع Arrow التي يمكن تحويلها إلى نوع تخزين pyarrow الخاص بـ BioStructure هي:
pa.string()- يجب أن يحتوي على بيانات "path"pa.binary()- يجب أن يحتوي على بايتات الملفpa.struct({"bytes": pa.binary()})pa.struct({"path": pa.string()})pa.struct({"bytes": pa.binary(), "path": pa.string()})- لا يهم الترتيب
Decode example structure file into a biopython structure.
embed_storage
< source >( storage: StructArraytoken_per_repo_id = Nonelocal_files: bool = Trueremote_files: bool = True ) → pa.StructArray
المعاملات
- storage (
pa.StructArray) — مصفوفة PyArrow للتضمين. - token_per_repo_id (
dict, اختياري) — قاموس repo_id -> token لجلب بايتات الملفات. - local_files (
bool، القيمة الافتراضيةTrue) — ما إذا كان يجب تضمين بيانات الملفات المحلية في المصفوفة. - remote_files (
bool، القيمة الافتراضيةTrue) — ما إذا كان يجب تضمين بيانات الملفات البعيدة في المصفوفة.
يعيد
pa.StructArray
مصفوفة في نوع تخزين arrow الخاص بـ BioStructure.
تضمين ملفات البنية في مصفوفة Arrow.
encode_example
< source >( value: typing.Union[str, bytes, bytearray, dict, ForwardRef('Structure')] )
ترميز المثال إلى صيغة Arrow.
إذا كان في حالة قابلة للفك، أعد الميزة نفسها، وإلا فسطّح الميزة إلى قاموس.
أنظمة الملفات
datasets.filesystems.is_remote_filesystem
< source >( fs: AbstractFileSystem )
يتحقق مما إذا كان fs نظام ملفات عن بُعد.
بصمة
Hasher يقبل كائنات Python كمدخلات.