Datasets documentation
Các lớp chính
Các lớp chính
DatasetInfo
lớp 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 )
Tham số
- description (
str) — Mô tả của bộ dữ liệu. - citation (
str) — Trích dẫn BibTeX của bộ dữ liệu. - homepage (
str) — Một URL trỏ đến trang chủ chính thức của bộ dữ liệu. - license (
str) — Giấy phép của bộ dữ liệu. Có thể là tên của giấy phép hoặc một đoạn văn chứa các điều khoản của giấy phép. - features (Features, tùy chọn) — Các đặc trưng được sử dụng để xác định kiểu của các cột trong bộ dữ liệu.
- post_processed (
PostProcessedInfo, tùy chọn) — Đã bị ngừng hỗ trợ. Thông tin về các tài nguyên của một quy trình hậu xử lý có thể có của bộ dữ liệu. Ví dụ, nó có thể chứa thông tin về một chỉ mục. - supervised_keys (
SupervisedKeysData, tùy chọn) — Chỉ định đặc trưng đầu vào và nhãn cho học có giám sát nếu áp dụng cho bộ dữ liệu (di sản từ TFDS). - builder_name (
str, tùy chọn) — Tên của lớp conGeneratorBasedBuilderđược sử dụng để tạo bộ dữ liệu. Đây cũng là phiên bản snake_case của tên lớp builder bộ dữ liệu. - config_name (
str, tùy chọn) — Tên của cấu hình được suy ra từ BuilderConfig. - version (
strhoặc Version, tùy chọn) — Phiên bản của bộ dữ liệu. - splits (
dict, tùy chọn) — Bản ánh xạ giữa tên split và metadata. - download_checksums (
dict, tùy chọn) — Bản ánh xạ giữa URL để tải xuống các checksum của bộ dữ liệu và các metadata tương ứng. - download_size (
int, tùy chọn) — Kích thước của các tệp cần tải xuống để tạo bộ dữ liệu, tính bằng byte. - post_processing_size (
int, tùy chọn) — Đã bị hủy bỏ. Kích thước của bộ dữ liệu tính bằng byte sau khi xử lý hậu kỳ, nếu có. - dataset_size (
int, tùy chọn) — Tổng kích thước tính bằng byte của các bảng Arrow cho tất cả các phần chia. - size_in_bytes (
int, tùy chọn) — Tổng kích thước tính bằng byte của tất cả các tệp liên quan đến bộ dữ liệu (tệp đã tải xuống + tệp Arrow). - **config_kwargs (các tham số từ khóa bổ sung) — Các tham số từ khóa được truyền cho BuilderConfig và được sử dụng trong DatasetBuilder.
Thông tin về một bộ dữ liệu.
DatasetInfo mô tả các dataset, bao gồm tên, phiên bản và các đặc trưng (features).
Xem các đối số của constructor và các thuộc tính để có danh sách đầy đủ.
Không phải tất cả các trường đều được biết đến khi khởi tạo và có thể được cập nhật sau đó.
from_directory
< source >( dataset_info_dir: strstorage_options: typing.Optional[dict] = None )
Tạo DatasetInfo từ tệp JSON trong dataset_info_dir.
Hàm này cập nhật tất cả các trường được tạo động (num_examples, hash, thời gian tạo,…) của DatasetInfo.
Điều này sẽ ghi đè lên tất cả các metadata trước đó.
write_to_directory
< source >( dataset_info_dirpretty_print = Falsestorage_options: typing.Optional[dict] = None )
Viết DatasetInfo và giấy phép (nếu có) dưới dạng tệp JSON vào dataset_info_dir.
Bộ dữ liệu
Lớp cơ sở Dataset triển khai một Dataset được hỗ trợ bởi bảng Apache Arrow.
lớp 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 )
Một Dataset được hỗ trợ bởi một bảng 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 )
Thêm cột vào Dataset.
Được thêm vào 1.7
add_item
< source >( item: dictnew_fingerprint: typing.Optional[str] = None )
Thêm mục vào Dataset.
Được thêm vào 1.7
Ví dụ:
>>> 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 )
Tham số
- filename (
str) — Tên tệp của bộ dữ liệu. - info (
DatasetInfo, tùy chọn) — Thông tin về bộ dữ liệu, chẳng hạn như mô tả, trích dẫn, v.v. - split (
NamedSplit, tuỳ chọn) — Tên của phần chia bộ dữ liệu. - indices_filename (
str, tùy chọn) — Tên tệp của các chỉ mục. - in_memory (
bool, mặc định làFalse) — Có sao chép dữ liệu trong bộ nhớ hay không.
Tạo một Dataset dựa trên bảng Arrow tại 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 )
Tạo một Dataset được hỗ trợ bởi bộ đệm 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 )
Tham số
- df (
pandas.DataFrame) — Dataframe chứa bộ dữ liệu. - features (Features, tùy chọn) — Các đặc trưng của tập dữ liệu.
- info (
DatasetInfo, tùy chọn) — Thông tin về bộ dữ liệu, chẳng hạn như mô tả, trích dẫn, v.v. - split (
NamedSplit, tuỳ chọn) — Tên của phần chia bộ dữ liệu. - preserve_index (
bool, tùy chọn) — Có lưu trữ chỉ mục như một cột bổ sung trong Dataset kết quả hay không. Giá trị mặc địnhNonesẽ lưu trữ chỉ mục như một cột, ngoại trừRangeIndexchỉ được lưu trữ dưới dạng metadata. Sử dụngpreserve_index=Trueđể buộc lưu trữ dưới dạng cột.
Chuyển đổi pandas.DataFrame thành pyarrow.Table để tạo một Dataset.
Các kiểu cột trong Arrow Table kết quả được suy ra từ dtypes của pandas.Series trong DataFrame. Đối với các Series không phải object, NumPy dtype được chuyển đổi sang tương đương Arrow của nó. Đối với object, chúng ta cần đoán kiểu dữ liệu bằng cách xem xét các đối tượng Python trong Series này.
Lưu ý rằng các Series có dtype object không chứa đủ thông tin để luôn dẫn đến một kiểu Arrow có ý nghĩa. Trong trường hợp không thể suy luận được kiểu, ví dụ vì DataFrame có độ dài 0 hoặc Series chỉ chứa các đối tượng None/nan, kiểu sẽ được đặt thành null. Có thể tránh hành vi này bằng cách xây dựng các feature rõ ràng và truyền chúng vào hàm này.
Quan trọng: một dataset được tạo bằng from_pandas() sẽ nằm trong bộ nhớ và do đó không có thư mục cache liên quan. Điều này có thể thay đổi trong tương lai, nhưng trong thời gian chờ đợi, nếu bạn muốn giảm mức sử dụng bộ nhớ thì nên ghi lại xuống đĩa và tải lại bằng cách sử dụng ví dụ 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 )
Tham số
- mapping (
Mapping) — Bản ánh xạ từ chuỗi sang các mảng hoặc danh sách Python. - features (Features, tùy chọn) — Các đặc trưng của tập dữ liệu.
- info (
DatasetInfo, tùy chọn) — Thông tin về bộ dữ liệu, chẳng hạn như mô tả, trích dẫn, v.v. - split (
NamedSplit, tuỳ chọn) — Tên của phần chia bộ dữ liệu. - on_mixed_types (
Literal["use_json"], tuỳ chọn, mặc định làNone) — Nếu là “use_json”, hãy dùng kiểu Json() cho các trường có kiểu dữ liệu hỗn hợp, tức là các trường không có cấu trúc chứa dữ liệu không có schema được định nghĩa trước. Trong trường hợp này, một trường có kiểu hỗn hợp sẽ được đặt thành Json().Điều này cho phép nạp các danh sách có sự pha trộn giữa chuỗi/số nguyên/số thực, chẳng hạn, hoặc các từ điển có kiểu giá trị tùy ý.
Được thêm vào 4.7.0
Chuyển đổi dict thành pyarrow.Table để tạo một Dataset.
Quan trọng: một dataset được tạo bằng from_dict() sẽ nằm trong bộ nhớ và do đó không có thư mục cache liên quan. Điều này có thể thay đổi trong tương lai, nhưng trong lúc chờ đợi, nếu bạn muốn giảm mức sử dụng bộ nhớ thì nên ghi lại xuống đĩa và tải lại bằng cách sử dụng ví dụ save_to_disk / load_from_disk.
Ví dụ:
Tạo một Dataset từ một từ điển chứa một danh sách cho mỗi cột:
>>> ds = Dataset.from_dict({"text": ["hello there !", "general kenobi !"]})Truyền features để đặt kiểu cho các cột, ví dụ với một tập dữ liệu ảnh:
>>> features = Features({"image": Image()})
>>> ds = Dataset.from_dict({"image": ["path/to/image.png"]}, features=features)Datasets được xây dựng dựa trên Arrow, một định dạng cột, do đó chúng yêu cầu mọi example phải có cùng type và subtypes, và các dictionary phải có cùng các key và value types. Việc tải một dataset sẽ gây lỗi khi các field có type không khớp, và điền các field thiếu trong dictionary bằng None để tất cả các dictionary đều có cùng các key và value types.
Để tránh điều này và cho phép các kiểu dữ liệu hỗn hợp mà không gặp lỗi, bạn có thể sử dụng on_mixed_types="use_json" hoặc chỉ định features= với kiểu 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"}]Điều này cũng hữu ích cho các danh sách từ điển có các khóa và giá trị tùy ý, để tránh điền các trường thiếu bằng 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}]] # OKMột ví dụ khác với dữ liệu gọi công cụ:
>>> 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 )
Tham số
- mapping (
List[dict]) — Một danh sách các ánh xạ từ chuỗi sang giá trị hàng. - features (
Features, tùy chọn) — Các đặc trưng của tập dữ liệu. - info (
DatasetInfo, optional) — Thông tin về bộ dữ liệu, chẳng hạn như mô tả, trích dẫn, v.v. - split (
NamedSplit, tùy chọn) — Tên của phần chia bộ dữ liệu. - on_mixed_types (
Literal["use_json"], tuỳ chọn, mặc định làNone) — Nếu là “use_json”, hãy dùng kiểu Json() cho các trường có kiểu dữ liệu hỗn hợp, tức là các trường không có cấu trúc chứa dữ liệu không có schema được định nghĩa trước. Trong trường hợp này, một trường có kiểu hỗn hợp sẽ được đặt thành Json().Điều này cho phép nạp các danh sách có sự pha trộn giữa chuỗi/số nguyên/số thực, chẳng hạn, hoặc các từ điển có kiểu giá trị tùy ý.
Được thêm vào 4.7.0
Chuyển đổi một danh sách các dict thành pyarrow.Table để tạo một Dataset`
Lưu ý rằng các khóa của mục đầu tiên sẽ được sử dụng để xác định các cột của bộ dữ liệu, bất kể giá trị nào được truyền vào features.
Quan trọng: một dataset được tạo bằng from_list() sẽ nằm trong bộ nhớ và do đó không có thư mục cache liên quan. Điều này có thể thay đổi trong tương lai, nhưng trong thời gian chờ đợi, nếu bạn muốn giảm mức sử dụng bộ nhớ thì nên ghi lại xuống đĩa và tải lại bằng cách sử dụng ví dụ save_to_disk / load_from_disk.
Ví dụ:
Tạo một Dataset từ danh sách chứa các ví dụ:
>>> ds = Dataset.from_list([{"text": "hello there !"}, {"text": "general kenobi !"}]})Truyền features để đặt kiểu cho các cột, ví dụ với một tập dữ liệu ảnh:
>>> features = Features({"image": Image()})
>>> ds = Dataset.from_list([{"image": "path/to/image.png"}], features=features)Datasets được xây dựng dựa trên Arrow, một định dạng cột, do đó chúng yêu cầu mọi example phải có cùng type và subtypes, và các dictionary phải có cùng các key và value types. Việc tải một dataset sẽ gây lỗi khi các field có type không khớp, và điền các field thiếu trong dictionary bằng None để tất cả các dictionary đều có cùng các key và value types.
Để tránh điều này và cho phép các kiểu dữ liệu hỗn hợp mà không gặp lỗi, bạn có thể sử dụng on_mixed_types="use_json" hoặc chỉ định features= với kiểu 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"}]Điều này cũng hữu ích cho các danh sách từ điển có các khóa và giá trị tùy ý, để tránh điền các trường thiếu bằng 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}]] # OKMột ví dụ khác với dữ liệu gọi công cụ:
>>> 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 )
Tham số
- generator ( —
Callable): Một hàm generatoryieldscác ví dụ. - features (Features, tùy chọn) — Các đặc trưng của tập dữ liệu.
- cache_dir (
str, tùy chọn, mặc định là"~/.cache/huggingface/datasets") — Thư mục để lưu trữ bộ nhớ đệm dữ liệu. - keep_in_memory (
bool, mặc định làFalse) — Có sao chép dữ liệu trong bộ nhớ hay không. - gen_kwargs(
dict, tùy chọn) — Các đối số từ khóa để truyền cho callablegenerator. Bạn có thể định nghĩa một tập dữ liệu phân mảnh bằng cách truyền danh sách các phân mảnh tronggen_kwargsvà đặtnum_proclớn hơn 1. - num_proc (
int, tuỳ chọn, mặc định làNone) — Số lượng tiến trình khi tải xuống và tạo dataset cục bộ. Điều này hữu ích nếu dataset được tạo từ nhiều tệp. Multiprocessing bị tắt theo mặc định. Nếunum_proclớn hơn một, thì tất cả các giá trị danh sách tronggen_kwargsphải có cùng độ dài. Các giá trị này sẽ được chia cho các lần gọi bộ sinh. Số lượng shard sẽ là giá trị nhỏ nhất giữa danh sách ngắn nhất tronggen_kwargsvànum_proc.Được thêm vào 2.7.0
- split (NamedSplit, mặc định là
Split.TRAIN) — Tên split được gán cho dataset.Được thêm vào 2.21.0
- fingerprint (
str, tùy chọn) — Fingerprint sẽ được sử dụng để tạo dataset ID. Mặc địnhfingerprintđược tạo bằng cách băm (hash) hàm generator và tất cả các args, điều này có thể chậm nếu nó sử dụng các đối tượng lớn như mô hình AI.Được thêm vào 4.3.0
- **kwargs (các tham số từ khóa bổ sung) —
Các tham số từ khóa sẽ được truyền vào :
GeneratorConfig.
Tạo một Dataset từ một generator.
Tải dữ liệu từ trình tạo, lưu trữ tạm dữ liệu trên đĩa ở định dạng Arrow và trả về Dataset từ dữ liệu Arrow được ánh xạ bộ nhớ trên đĩa.
Bảng Apache Arrow hỗ trợ cho bộ dữ liệu.
Ví dụ:
>>> 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]]Các tệp cache chứa bảng Apache Arrow hỗ trợ cho bộ dữ liệu.
Ví dụ:
>>> 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'}]Số cột trong bộ dữ liệu.
Số dòng trong bộ dữ liệu (giống như Dataset.len()).
Tên của các cột trong bộ dữ liệu.
Hình dạng của bộ dữ liệu (số cột, số hàng).
độc nhất
< source >( column: str ) → list
Tham số
- column (
str) — Tên cột (liệt kê tất cả tên cột bằng column_names).
Trả về
list
Danh sách các phần tử duy nhất trong cột được cho.
Trả về danh sách các phần tử duy nhất trong một cột.
Điều này được triển khai trong backend cấp thấp và do đó, rất nhanh.
flatten
< source >( new_fingerprint: typing.Optional[str] = Nonemax_depth = 16 ) → Dataset
Phẳng hóa bảng. Mỗi cột có kiểu struct được phẳng hóa thành một cột cho mỗi trường của struct. Các cột khác được giữ nguyên.
Ví dụ:
>>> 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
Tham số
- features (Features) —
Các tính năng mới để chuyển đổi (cast) dataset sang.
Tên của các trường trong features phải khớp với tên cột hiện tại.
Loại dữ liệu cũng phải có thể chuyển đổi từ loại này sang loại khác.
Đối với các phép chuyển đổi không đơn giản, ví dụ
str<->ClassLabel, bạn nên sử dụng map() để cập nhật Dataset. - batch_size (
int, mặc định là1000) — Số lượng ví dụ trong mỗi batch được cung cấp cho cast. Nếubatch_size <= 0hoặcbatch_size == Nonethì cung cấp toàn bộ dataset như một batch duy nhất cho cast. - keep_in_memory (
bool, mặc định làFalse) — Có sao chép dữ liệu trong bộ nhớ hay không. - load_from_cache_file (
bool, mặc định làTruenếu bật bộ nhớ đệm) — Nếu có thể xác định một tệp bộ nhớ đệm lưu trữ kết quả tính toán hiện tại củafunction, hãy sử dụng tệp đó thay vì tính toán lại. - cache_file_name (
str, tùy chọn, mặc định làNone) — Cung cấp tên đường dẫn cho tệp cache. Nó được dùng để lưu trữ kết quả của phép tính thay vì tên tệp cache được tạo tự động. - writer_batch_size (
int, mặc định là1000) — Số dòng cho mỗi thao tác ghi của trình ghi tệp cache. Giá trị này là sự cân bằng tốt giữa mức sử dụng bộ nhớ trong quá trình xử lý và tốc độ xử lý. Giá trị cao hơn giúp quá trình xử lý thực hiện ít lần tra cứu hơn, trong khi giá trị thấp hơn tiêu thụ ít bộ nhớ tạm hơn khi chạy map(). - num_proc (
int, tùy chọn, mặc định làNone) — Số lượng tiến trình cho đa tiến trình. Mặc định không sử dụng đa tiến trình.
Trả về
Một bản sao của bộ dữ liệu với các đặc trưng đã được chuyển đổi kiểu.
Đổ khuôn (cast) bộ dữ liệu sang một tập tính năng mới.
Ví dụ:
>>> 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 )
Đổ cột sang tính năng để giải mã.
Ví dụ:
>>> 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
Tham số
- column_names (
Union[str, List[str]]) — Tên của cột (các cột) cần xóa. - new_fingerprint (
str, tùy chọn) — Dấu vân tay mới của bộ dữ liệu sau khi biến đổi. Nếu làNone, dấu vân tay mới sẽ được tính toán bằng cách sử dụng băm của dấu vân tay trước đó và các đối số biến đổi.
Trả về
Một bản sao của đối tượng bộ dữ liệu không bao gồm các cột cần xóa.
Xóa một hoặc nhiều cột trong bộ dữ liệu và các đặc trưng liên quan đến chúng.
Bạn cũng có thể xóa một cột bằng cách sử dụng map() với remove_columns nhưng phương pháp hiện tại không sao chép dữ liệu của các cột còn lại nên nhanh hơn.
Ví dụ:
>>> 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
Tham số
- original_column_name (
str) — Tên của cột cần đổi tên. - new_column_name (
str) — Tên mới cho cột. - new_fingerprint (
str, tùy chọn) — Dấu vân tay mới của bộ dữ liệu sau khi biến đổi. Nếu làNone, dấu vân tay mới sẽ được tính toán bằng cách sử dụng băm của dấu vân tay trước đó và các đối số biến đổi.
Trả về
Một bản sao của bộ dữ liệu với một cột đã được đổi tên.
Đổi tên một cột trong bộ dữ liệu, và di chuyển các đặc trưng liên quan đến cột gốc sang dưới tên cột mới.
rename_columns
< source >( column_mapping: dictnew_fingerprint: typing.Optional[str] = None ) → Dataset
Tham số
- column_mapping (
Dict[str, str]) — Bản ánh xạ các cột cần đổi tên sang tên mới - new_fingerprint (
str, tùy chọn) — Dấu vân tay mới của bộ dữ liệu sau khi biến đổi. Nếu làNone, dấu vân tay mới sẽ được tính toán bằng cách sử dụng băm của dấu vân tay trước đó và các đối số biến đổi.
Trả về
Một bản sao của bộ dữ liệu với các cột đã được đổi tên
Đổi tên một số cột trong bộ dữ liệu, và di chuyển các đặc trưng liên quan đến các cột gốc sang dưới tên cột mới.
select_columns
< source >( column_names: typing.Union[str, list[str]]new_fingerprint: typing.Optional[str] = None ) → Dataset
Tham số
- column_names (
Union[str, List[str]]) — Tên của cột (các cột) cần giữ lại. - new_fingerprint (
str, tùy chọn) — Dấu vân tay mới của bộ dữ liệu sau khi biến đổi. Nếu làNone, dấu vân tay mới sẽ được tính toán bằng cách băm (hash) dấu vân tay trước đó và các đối số của phép biến đổi.
Trả về
Một bản sao của đối tượng tập dữ liệu chỉ bao gồm các cột được chọn.
Chọn một hoặc nhiều cột trong bộ dữ liệu và các đặc trưng liên quan đến chúng.
class_encode_column
< source >( column: strinclude_nulls: bool = False )
Tham số
- column (
str) — Tên của cột cần chuyển đổi (liệt kê tất cả tên cột bằng column_names) - include_nulls (
bool, mặc định làFalse) — Liệu có bao gồm các giá trị null trong nhãn lớp hay không. NếuTrue, các giá trị null sẽ được mã hóa thành nhãn lớp"None".Được thêm vào 1.14.2
Đổ cột đã cho sang ClassLabel và cập nhật bảng.
Ví dụ:
>>> 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')}Số dòng trong bộ dữ liệu.
Lặp qua các ví dụ.
Nếu một định dạng được đặt bằng Dataset.set_format(), các hàng sẽ được trả về với định dạng đã chọn.
iter
< source >( batch_size: intdrop_last_batch: bool = False )
Lặp qua các lô có kích thước batch_size.
Nếu một định dạng được đặt bằng [~datasets.Dataset.set_format], các hàng sẽ được trả về với định dạng đã chọn.
formatted_as
< source >( type: typing.Optional[str] = Nonecolumns: typing.Optional[list] = Noneoutput_all_columns: bool = False**format_kwargs )
Tham số
- type (
str, tùy chọn) — Loại đầu ra được chọn trong[None, 'numpy', 'torch', 'tensorflow', 'jax', 'arrow', 'pandas', 'polars'].Nonecó nghĩa là `getitem“ trả về các đối tượng python (mặc định). - columns (
List[str], tùy chọn) — Các cột cần định dạng trong đầu ra.Nonecó nghĩa là__getitem__trả về tất cả các cột (mặc định). - output_all_columns (
bool, mặc định làFalse) — Giữ lại cả các cột chưa được định dạng trong đầu ra (dưới dạng đối tượng python). - **format_kwargs (các tham số từ khóa bổ sung) —
Các tham số từ khóa được truyền cho hàm chuyển đổi như
np.array,torch.tensorhoặctensorflow.ragged.constant.
Được sử dụng trong một câu lệnh with. Đặt định dạng trả về của __getitem__ (kiểu và các cột).
set_format
< source >( type: typing.Optional[str] = Nonecolumns: typing.Optional[list] = Noneoutput_all_columns: bool = False**format_kwargs )
Tham số
- type (
str, tùy chọn) — Loại đầu ra được chọn trong[None, 'numpy', 'torch', 'tensorflow', 'jax', 'arrow', 'pandas', 'polars'].Nonecó nghĩa là__getitem__trả về các đối tượng python (mặc định). - columns (
List[str], tùy chọn) — Các cột cần định dạng trong đầu ra.Nonecó nghĩa là__getitem__trả về tất cả các cột (mặc định). - output_all_columns (
bool, mặc định làFalse) — Giữ lại cả các cột chưa được định dạng trong đầu ra (dưới dạng đối tượng python). - **format_kwargs (các tham số từ khóa bổ sung) —
Các tham số từ khóa được truyền cho hàm chuyển đổi như
np.array,torch.tensorhoặctensorflow.ragged.constant.
Định dạng trả về của __getitem__ (kiểu và các cột). Việc định dạng dữ liệu được áp dụng theo thời gian thực.
Kiểu type (ví dụ “numpy”) được dùng để định dạng các lô dữ liệu khi sử dụng __getitem__.
Cũng có thể sử dụng các phép biến đổi tùy chỉnh để định dạng bằng cách dùng set_transform().
Có thể gọi map() sau khi gọi set_format. Vì map có thể thêm các cột mới, nên danh sách các cột đã định dạng
được cập nhật. Trong trường hợp này, nếu bạn áp dụng map lên một dataset để thêm một cột mới, thì cột này sẽ được định dạng như sau:
new formatted columns = (all columns - previously unformatted columns)Ví dụ:
>>> 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 )
Tham số
- transform (
Callable, tùy chọn) — Biến đổi định dạng do người dùng định nghĩa, thay thế định dạng được định nghĩa bởi set_format(). Hàm định dạng là một callable nhận một batch (dưới dạngdict) làm đầu vào và trả về một batch. Hàm này được áp dụng ngay trước khi trả về các đối tượng trong__getitem__. - columns (
List[str], tùy chọn) — Các cột cần định dạng trong đầu ra. Nếu được chỉ định, thì batch đầu vào của transform chỉ chứa các cột đó. - output_all_columns (
bool, mặc định làFalse) — Giữ lại các cột chưa được định dạng trong đầu ra (dưới dạng đối tượng python). Nếu đặt thành True, các cột chưa được định dạng khác sẽ được giữ lại cùng với kết quả của phép biến đổi.
Định dạng trả về của __getitem__ bằng cách sử dụng transform này. Transform được áp dụng trực tiếp trên các batch khi __getitem__ được gọi.
Giống như set_format(), điều này có thể được đặt lại bằng reset_format().
Ví dụ:
>>> 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])}Đặt lại định dạng trả về của __getitem__ thành các đối tượng python và tất cả các cột.
Tương tự như self.set_format()
Ví dụ:
>>> 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 )
Tham số
- type (
str, tùy chọn) — Loại đầu ra được chọn trong[None, 'numpy', 'torch', 'tensorflow', 'jax', 'arrow', 'pandas', 'polars'].Nonecó nghĩa là__getitem__trả về các đối tượng python (mặc định). - columns (
List[str], tùy chọn) — Các cột cần định dạng trong đầu ra.Nonecó nghĩa là__getitem__trả về tất cả các cột (mặc định). - output_all_columns (
bool, mặc định làFalse) — Giữ lại cả các cột chưa được định dạng trong đầu ra (dưới dạng đối tượng python). - **format_kwargs (các tham số từ khóa bổ sung) —
Các tham số từ khóa được truyền cho hàm chuyển đổi như
np.array,torch.tensorhoặctensorflow.ragged.constant.
Định dạng trả về của __getitem__ (kiểu và các cột). Việc định dạng dữ liệu được áp dụng theo thời gian thực.
Kiểu type (ví dụ “numpy”) được dùng để định dạng các lô dữ liệu khi sử dụng __getitem__.
Bạn cũng có thể sử dụng các transform tùy chỉnh để định dạng bằng with_transform().
Ngược lại với set_format(), with_format trả về một đối tượng Dataset mới.
Ví dụ:
>>> 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 )
Tham số
- transform (
Callable,optional) — Biến đổi định dạng do người dùng định nghĩa, thay thế định dạng được định nghĩa bởi set_format(). Hàm định dạng là một callable nhận một batch (dưới dạngdict) làm đầu vào và trả về một batch. Hàm này được áp dụng ngay trước khi trả về các đối tượng trong__getitem__. - columns (
List[str],optional) — Các cột cần định dạng trong đầu ra. Nếu được chỉ định, thì batch đầu vào của transform chỉ chứa các cột đó. - output_all_columns (
bool, mặc định làFalse) — Giữ lại cả các cột chưa được định dạng trong đầu ra (dưới dạng đối tượng python). Nếu đặt thànhTrue, các cột chưa được định dạng khác sẽ được giữ lại cùng với kết quả của phép biến đổi.
Định dạng trả về của __getitem__ bằng cách sử dụng transform này. Transform được áp dụng trực tiếp trên các batch khi __getitem__ được gọi.
Giống như set_format(), điều này có thể được đặt lại bằng reset_format().
Ngược lại với set_transform(), with_transform trả về một đối tượng Dataset mới.
Ví dụ:
>>> 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])}Có thể được sử dụng để chỉ định các cột (theo tên chuỗi) hoặc các hàng (theo chỉ mục nguyên hoặc khả lặp của các chỉ mục hoặc giá trị bool).
Dọn dẹp tất cả các tệp cache trong thư mục cache của bộ dữ liệu, ngoại trừ tệp cache đang được sử dụng (nếu có).
Hãy cẩn thận khi chạy lệnh này để đảm bảo không có tiến trình nào khác đang sử dụng các tệp cache khác.
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' )
Tham số
- function (
Callable) — Hàm có một trong các chữ ký sau:function(example: Dict[str, Any]) -> Dict[str, Any]nếubatched=Falsevàwith_indices=Falsevàwith_rank=Falsefunction(example: Dict[str, Any], *extra_args) -> Dict[str, Any]nếubatched=Falsevàwith_indices=Truevà/hoặcwith_rank=True(mỗi tham số bổ sung thêm một đối số)function(batch: Dict[str, List]) -> Dict[str, List]nếubatched=Truevàwith_indices=Falsevàwith_rank=Falsefunction(batch: Dict[str, List], *extra_args) -> Dict[str, List]nếubatched=Truevàwith_indices=Truevà/hoặcwith_rank=True(mỗi tham số bổ sung thêm một đối số)
Đối với cách sử dụng nâng cao, hàm cũng có thể trả về một
pyarrow.Table. Nếu hàm là bất đồng bộ, thìmapsẽ chạy hàm của bạn song song. Hơn nữa, nếu hàm của bạn không trả về gì (None), thìmapsẽ chạy hàm của bạn và trả về dataset không thay đổi. Nếu không cung cấp hàm, mặc định dùng hàm đồng nhất:lambda x: x. - with_indices (
bool, mặc định làFalse) — Cung cấp các chỉ mục ví dụ chofunction. Lưu ý rằng trong trường hợp này, chữ ký củafunctionphải làdef function(example, idx[, rank]): .... - with_rank (
bool, mặc định làFalse) — Cung cấp process rank chofunction. Lưu ý rằng trong trường hợp này, signature củafunctionphải làdef function(example[, idx], rank): .... - input_columns (
Optional[Union[str, List[str]]], mặc định làNone) — Các cột được truyền vàofunctiondưới dạng các đối số vị trí. Nếu làNone, mộtdictánh xạ đến tất cả các cột đã định dạng sẽ được truyền dưới dạng một đối số duy nhất. - batched (
bool, mặc định làFalse) — Cung cấp một lô các ví dụ chofunction. - batch_size (
int, tùy chọn, mặc định là1000) — Số lượng ví dụ trong mỗi batch được cung cấp chofunctionnếubatched=True. Nếubatch_size <= 0hoặcbatch_size == None, cung cấp toàn bộ tập dữ liệu như một batch duy nhất chofunction. - drop_last_batch (
bool, mặc định làFalse) — Liệu một batch cuối nhỏ hơn batch_size có nên bị loại bỏ thay vì được xử lý bởi hàm hay không. - remove_columns (
Optional[Union[str, List[str]]], mặc định làNone) — Xóa một tập các cột trong khi thực hiện ánh xạ. Các cột sẽ bị xóa trước khi cập nhật các ví dụ bằng kết quả đầu ra củafunction, tức là nếufunctionthêm các cột có tên nằm trongremove_columns, các cột này sẽ được giữ lại. - keep_in_memory (
bool, mặc định làFalse) — Giữ bộ dữ liệu trong bộ nhớ thay vì ghi nó vào tệp cache. - load_from_cache_file (
Optional[bool], mặc định làTruenếu bật bộ nhớ đệm) — Nếu có thể xác định một tệp bộ nhớ đệm lưu trữ kết quả tính toán hiện tại củafunction, hãy sử dụng tệp đó thay vì tính toán lại. - cache_file_name (
str, tùy chọn, mặc định làNone) — Cung cấp tên đường dẫn cho tệp cache. Nó được dùng để lưu trữ kết quả của phép tính thay vì tên tệp cache được tạo tự động. - writer_batch_size (
int, mặc định là1000) — Số dòng cho mỗi thao tác ghi của trình ghi tệp cache. Giá trị này là sự đánh đổi hợp lý giữa mức sử dụng bộ nhớ trong quá trình xử lý và tốc độ xử lý. Giá trị cao hơn giúp quá trình xử lý thực hiện ít lần tra cứu hơn, trong khi giá trị thấp hơn tiêu thụ ít bộ nhớ tạm hơn khi chạymap. - features (
Optional[datasets.Features], mặc định làNone) — Sử dụng một Features cụ thể để lưu tệp cache thay vì tệp được tạo tự động. - disable_nullable (
bool, mặc định làFalse) — Không cho phép giá trị null trong bảng. - fn_kwargs (
Dict, tùy chọn, mặc định làNone) — Các đối số dạng từ khóa để truyền chofunction. - num_proc (
int, tuỳ chọn, mặc định làNone) — Số lượng tiến trình để sử dụng cho multiprocessing. Nếu là None hoặc 0, sẽ không sử dụng multiprocessing và thao tác sẽ chạy trong tiến trình chính. Nếu lớn hơn 1, một hoặc nhiều tiến trình worker sẽ được sử dụng để xử lý dữ liệu song song. Lưu ý: Hàm được truyền vào map() phải có thể picklable để multiprocessing hoạt động chính xác (tức là nên ưu tiên các hàm được định nghĩa ở cấp trên cùng của một module, không nên đặt bên trong một hàm hoặc lớp khác).- Nếu là
Nonehoặc0, không sử dụng đa tiến trình và thao tác sẽ chạy trong tiến trình chính. - 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.
- Nếu là
- new_fingerprint (
str, tùy chọn, mặc định làNone) — Dấu vân tay mới của bộ dữ liệu sau khi biến đổi. Nếu làNone, dấu vân tay mới sẽ được tính bằng cách băm (hash) dấu vân tay trước đó và các đối số của phép biến đổi. - desc (
str, tùy chọn, mặc định làNone) — Mô tả có ý nghĩa để hiển thị cùng với thanh tiến trình trong khi ánh xạ các ví dụ. - try_original_type (
Optional[bool], mặc định làTrue) — Thử giữ nguyên kiểu dữ liệu của các cột gốc (ví dụ: int32 -> int32). Đặt thành False nếu bạn muốn luôn suy luận các kiểu dữ liệu mới. - on_mixed_types (
Literal["use_json"], tuỳ chọn, mặc định làNone) — Nếu là “use_json”, hãy dùng kiểu Json() cho các trường có kiểu dữ liệu hỗn hợp, tức là các trường không có cấu trúc chứa dữ liệu không có schema được định nghĩa trước. Trong trường hợp này, một trường có kiểu hỗn hợp sẽ được đặt thành Json().Điều này cho phép nạp các danh sách có sự pha trộn giữa chuỗi/số nguyên/số thực, chẳng hạn, hoặc các từ điển có kiểu giá trị tùy ý.
Được thêm vào 4.7.0
Áp dụng một hàm lên tất cả các ví dụ trong bảng (riêng lẻ hoặc theo lô) và cập nhật bảng. Nếu hàm của bạn trả về một cột đã tồn tại, thì nó sẽ ghi đè lên cột đó.
Bạn có thể chỉ định xem hàm có nên được xử lý theo lô (batched) hay không bằng tham số batched:
- Nếu
False, thì hàm nhận vào 1 ví dụ và phải trả về 1 ví dụ. Một ví dụ là một từ điển, ví dụ{"text": "Hello there !"}. - Nếu
Truevàbatch_sizelà 1, thì hàm nhận vào một batch gồm 1 ví dụ và có thể trả về một batch gồm 1 hoặc nhiều hơn các ví dụ. Một batch là một từ điển, ví dụ một batch gồm 1 ví dụ là{"text": ["Hello there !"]}. - Nếu
Truevàbatch_sizelàn > 1, thì hàm nhận vào một batch gồmnví dụ và có thể trả về một batch gồmnví dụ, hoặc một số lượng ví dụ bất kỳ. Lưu ý rằng batch cuối cùng có thể có ít hơnnví dụ. Một batch là một từ điển, ví dụ một batch gồmnví dụ là{"text": ["Hello there !"] * n}.
Nếu hàm là bất đồng bộ, thì map sẽ chạy hàm của bạn song song, với tối đa một nghìn cuộc gọi đồng thời.
Khuyến nghị sử dụng asyncio.Semaphore trong hàm của bạn nếu bạn muốn đặt số lượng tối đa các thao tác có thể chạy cùng lúc.
Ví dụ:
>>> 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)lọc
< 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 )
Tham số
- function (
Callable) — Callable có một trong các chữ ký sau:function(example: Dict[str, Any]) -> boolnếubatched=Falsevàwith_indices=Falsevàwith_rank=Falsefunction(example: Dict[str, Any], *extra_args) -> boolnếubatched=Falsevàwith_indices=Truevà/hoặcwith_rank=True(mỗi tham số bổ sung thêm một đối số)function(batch: Dict[str, List]) -> List[bool]nếubatched=Truevàwith_indices=Falsevàwith_rank=Falsefunction(batch: Dict[str, List], *extra_args) -> List[bool]nếubatched=Truevàwith_indices=Truevà/hoặcwith_rank=True(mỗi tham số bổ sung thêm một đối số)
Nếu hàm là bất đồng bộ, thì
filtersẽ chạy hàm của bạn song song. Nếu không cung cấp hàm nào, mặc định là một hàm luôn trả vềTrue:lambda x: True. - with_indices (
bool, mặc định làFalse) — Cung cấp các chỉ mục ví dụ chofunction. Lưu ý rằng trong trường hợp này, chữ ký củafunctionphải làdef function(example, idx[, rank]): .... - with_rank (
bool, mặc định làFalse) — Cung cấp process rank chofunction. Lưu ý rằng trong trường hợp này, signature củafunctionphải làdef function(example[, idx], rank): .... - input_columns (
strhoặcList[str], tùy chọn) — Các cột được truyền vàofunctiondưới dạng các đối số vị trí. Nếu làNone, mộtdictánh xạ đến tất cả các cột đã định dạng sẽ được truyền dưới dạng một đối số duy nhất. - batched (
bool, mặc định làFalse) — Cung cấp một lô các ví dụ chofunction. - batch_size (
int, tùy chọn, mặc định là1000) — Số lượng ví dụ trong mỗi batch được cung cấp chofunctionnếubatched = True. Nếubatched = False, một ví dụ mỗi batch sẽ được truyền chofunction. Nếubatch_size <= 0hoặcbatch_size == None, toàn bộ tập dữ liệu sẽ được cung cấp như một batch duy nhất chofunction. - keep_in_memory (
bool, mặc định làFalse) — Giữ bộ dữ liệu trong bộ nhớ thay vì ghi nó vào tệp cache. - load_from_cache_file (
Optional[bool], mặc định làTruenếu bật bộ nhớ đệm) — Nếu có thể xác định một tệp bộ nhớ đệm lưu trữ kết quả tính toán hiện tại củafunction, hãy sử dụng tệp đó thay vì tính toán lại. - cache_file_name (
str, tùy chọn) — Cung cấp tên đường dẫn cho tệp cache. Nó được dùng để lưu trữ kết quả của phép tính thay vì tên tệp cache được tạo tự động. - writer_batch_size (
int, mặc định là1000) — Số dòng cho mỗi thao tác ghi của trình ghi tệp cache. Giá trị này là sự đánh đổi hợp lý giữa mức sử dụng bộ nhớ trong quá trình xử lý và tốc độ xử lý. Giá trị cao hơn giúp quá trình xử lý thực hiện ít lần tra cứu hơn, trong khi giá trị thấp hơn tiêu thụ ít bộ nhớ tạm hơn khi chạymap. - fn_kwargs (
dict, tùy chọn) — Các đối số dạng từ khóa để truyền chofunction. - num_proc (
int, tùy chọn, mặc định làNone) — Số lượng tiến trình để sử dụng cho multiprocessing. Nếu là None hoặc 0, multiprocessing sẽ không được sử dụng và thao tác sẽ chạy trong tiến trình chính. Nếu lớn hơn 1, một hoặc nhiều tiến trình worker sẽ được sử dụng để xử lý dữ liệu song song. Lưu ý: Hàm được truyền vào map() phải có thể picklable để multiprocessing hoạt động chính xác (tức là nên ưu tiên các hàm được định nghĩa ở cấp trên cùng của một module, không nên đặt bên trong một hàm hoặc lớp khác).- Nếu là
Nonehoặc0, không sử dụng đa tiến trình và thao tác sẽ chạy trong tiến trình chính. - Nếu lớn hơn
1, một hoặc nhiều tiến trình worker sẽ được sử dụng để xử lý dữ liệu song song. Lưu ý: Hàm được truyền vàomap()phải có thể picklable để multiprocessing hoạt động chính xác (tức là, ưu tiên các hàm được định nghĩa ở cấp trên cùng của một module, không phải bên trong một hàm hoặc lớp khác).
- Nếu là
- suffix_template (
str) — Nếucache_file_nameđược chỉ định, hậu tố này sẽ được thêm vào cuối tên gốc của mỗi tệp. Ví dụ, nếucache_file_namelà"processed.arrow", thì vớirank = 1vànum_proc = 4, tệp kết quả sẽ là"processed_00001_of_00004.arrow"với hậu tố mặc định (mặc định_{rank:05d}_of_{num_proc:05d}). - new_fingerprint (
str, tùy chọn) — Dấu vân tay mới của bộ dữ liệu sau khi biến đổi. Nếu làNone, dấu vân tay mới sẽ được tính toán bằng cách sử dụng băm của dấu vân tay trước đó và các đối số biến đổi. - desc (
str, tùy chọn, mặc định làNone) — Mô tả có ý nghĩa để hiển thị cùng với thanh tiến trình trong khi lọc các ví dụ.
Áp dụng một hàm lọc lên tất cả các phần tử trong bảng theo từng lô và cập nhật bảng để tập dữ liệu chỉ bao gồm các ví dụ theo hàm lọc.
Nếu hàm là bất đồng bộ, thì filter sẽ chạy hàm của bạn song song, với tối đa một nghìn cuộc gọi đồng thời (có thể cấu hình).
Khuyến nghị sử dụng asyncio.Semaphore trong hàm của bạn nếu bạn muốn đặt số lượng tối đa các thao tác có thể chạy cùng một lúc.
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 )
Tham số
- indices (
range,list,iterable,ndarrayhoặcSeries) — Dải, danh sách hoặc mảng 1 chiều chứa các chỉ số nguyên để lập chỉ mục. Nếu các chỉ số tương ứng với một dải liên tục, bảng Arrow sẽ chỉ được cắt (slice). Tuy nhiên, việc truyền vào một danh sách các chỉ số không liên tục sẽ tạo ra ánh xạ chỉ số, kém hiệu quả hơn nhiều, nhưng vẫn nhanh hơn việc tạo lại một bảng Arrow gồm các hàng được yêu cầu. - keep_in_memory (
bool, mặc định làFalse) — Giữ ánh xạ chỉ mục trong bộ nhớ thay vì ghi vào tệp cache. - indices_cache_file_name (
str, tùy chọn, mặc định làNone) — Cung cấp tên đường dẫn cho tệp cache. Nó được dùng để lưu ánh xạ các chỉ số thay vì tên tệp cache được tạo tự động. - writer_batch_size (
int, mặc định là1000) — Số dòng cho mỗi thao tác ghi của trình ghi tệp cache. Giá trị này là sự đánh đổi hợp lý giữa mức sử dụng bộ nhớ trong quá trình xử lý và tốc độ xử lý. Giá trị cao hơn giúp quá trình xử lý thực hiện ít lần tra cứu hơn, trong khi giá trị thấp hơn tiêu thụ ít bộ nhớ tạm hơn khi chạymap. - new_fingerprint (
str, tùy chọn, mặc định làNone) — Dấu vân tay mới của bộ dữ liệu sau khi biến đổi. Nếu làNone, dấu vân tay mới sẽ được tính bằng cách băm (hash) dấu vân tay trước đó và các đối số của phép biến đổi.
Tạo một tập dữ liệu mới với các dòng được chọn theo danh sách/mảng các chỉ số.
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 )
Tham số
- column_names (
Union[str, Sequence[str]]) — Tên cột để sắp xếp. - reverse (
Union[bool, Sequence[bool]], mặc định làFalse) — NếuTrue, sắp xếp theo thứ tự giảm dần thay vì tăng dần. Nếu chỉ cung cấp một giá trị bool, giá trị này sẽ được áp dụng cho việc sắp xếp của tất cả các tên cột. Ngược lại, phải cung cấp một danh sách các giá trị bool có độ dài và thứ tự giống như column_names. - null_placement (
str, mặc định làat_end) — Đặt các giá trịNoneở đầu nếuat_starthoặcfirsthoặc ở cuối nếuat_endhoặclastĐược thêm vào 1.14.2
- keep_in_memory (
bool, mặc định làFalse) — Giữ các chỉ số đã sắp xếp trong bộ nhớ thay vì ghi chúng vào tệp cache. - load_from_cache_file (
Optional[bool], mặc định làTruenếu bật bộ nhớ đệm) — Nếu có thể xác định tệp bộ nhớ đệm lưu trữ các chỉ số đã sắp xếp, hãy sử dụng tệp đó thay vì tính toán lại. - indices_cache_file_name (
str, tùy chọn, mặc định làNone) — Cung cấp tên đường dẫn cho tệp cache. Nó được dùng để lưu trữ các chỉ số đã sắp xếp thay vì tên tệp cache được tạo tự động. - writer_batch_size (
int, mặc định là1000) — Số dòng cho mỗi thao tác ghi của trình ghi tệp cache. Giá trị cao hơn tạo ra tệp cache nhỏ hơn, giá trị thấp hơn tiêu thụ ít bộ nhớ tạm hơn. - new_fingerprint (
str, tùy chọn, mặc định làNone) — Dấu vân tay mới của bộ dữ liệu sau khi biến đổi. NếuNone, dấu vân tay mới sẽ được tính toán bằng cách sử dụng băm của dấu vân tay trước đó và các đối số biến đổi
Tạo một tập dữ liệu mới được sắp xếp theo một hoặc nhiều cột.
Ví dụ:
>>> 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 )
Tham số
- seed (
int, tùy chọn) — Một seed để khởi tạo BitGenerator mặc định nếugenerator=None. NếuNone, thì entropy mới, không thể đoán trước sẽ được lấy từ hệ điều hành. Nếu mộtinthoặcarray_like[ints]được truyền vào, thì nó sẽ được truyền đến SeedSequence để suy ra trạng thái BitGenerator ban đầu. - generator (
numpy.random.Generator, tùy chọn) — Numpy random Generator được sử dụng để tính hoán vị các dòng của tập dữ liệu. Nếugenerator=None(mặc định), sẽ sử dụngnp.random.default_rng(BitGenerator mặc định (PCG64) của NumPy). - keep_in_memory (
bool, mặc địnhFalse) — Giữ các chỉ số đã xáo trộn trong bộ nhớ thay vì ghi chúng vào tệp cache. - load_from_cache_file (
Optional[bool], mặc định làTruenếu bật bộ nhớ đệm) — Nếu có thể xác định tệp bộ nhớ đệm lưu trữ các chỉ số đã xáo trộn, hãy sử dụng tệp đó thay vì tính toán lại. - indices_cache_file_name (
str, tùy chọn) — Cung cấp tên đường dẫn cho tệp cache. Nó được dùng để lưu trữ các chỉ số đã xáo trộn thay vì tên tệp cache được tạo tự động. - writer_batch_size (
int, mặc định là1000) — Số dòng cho mỗi thao tác ghi của trình ghi tệp cache. Giá trị này là sự đánh đổi hợp lý giữa mức sử dụng bộ nhớ trong quá trình xử lý và tốc độ xử lý. Giá trị cao hơn giúp quá trình xử lý thực hiện ít lần tra cứu hơn, trong khi giá trị thấp hơn tiêu thụ ít bộ nhớ tạm hơn khi chạymap. - new_fingerprint (
str, tùy chọn, mặc định làNone) — Dấu vân tay mới của bộ dữ liệu sau khi biến đổi. Nếu làNone, dấu vân tay mới sẽ được tính bằng cách băm (hash) dấu vân tay trước đó và các đối số của phép biến đổi.
Tạo một Dataset mới trong đó các hàng được xáo trộn.
Hiện tại, shuffling sử dụng các bộ tạo ngẫu nhiên của numpy. Bạn có thể cung cấp một NumPy BitGenerator để sử dụng, hoặc một seed để khởi tạo bộ tạo ngẫu nhiên mặc định của NumPy (PCG64).
Shuffling lấy danh sách các chỉ số [0:len(my_dataset)] và xáo trộn nó để tạo ra một ánh xạ chỉ số.
Tuy nhiên, ngay khi Dataset của bạn có một ánh xạ chỉ số, tốc độ có thể chậm đi 10 lần.
Điều này là do có một bước bổ sung để lấy chỉ số hàng cần đọc bằng cách sử dụng ánh xạ chỉ số, và quan trọng nhất là bạn không còn đọc các khối dữ liệu liên tục nữa.
Để khôi phục tốc độ, bạn cần ghi đè lại toàn bộ dataset trên đĩa của mình bằng cách sử dụng Dataset.flatten_indices(), hàm này sẽ loại bỏ ánh xạ chỉ số.
Tuy nhiên, quá trình này có thể mất rất nhiều thời gian tùy thuộc vào kích thước bộ dữ liệu của bạn:
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 againTrong trường hợp này, chúng tôi khuyến nghị chuyển sang IterableDataset và tận dụng phương pháp xáo trộn gần đúng nhanh của nó IterableDataset.shuffle().
Nó chỉ xáo trộn thứ tự các shard và thêm một bộ đệm xáo trộn vào tập dữ liệu của bạn, giúp duy trì tốc độ tối ưu cho tập dữ liệu:
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
passTạo một Dataset mới bỏ qua n phần tử đầu tiên.
Ví dụ:
>>> 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 .'}]Tạo một Dataset mới chỉ chứa n phần tử đầu tiên.
Ví dụ:
>>> 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 )
Tham số
- test_size (
Union[float, int, None], tuỳ chọn) — Kích thước của phần chia kiểm tra Nếu làfloat, giá trị phải nằm trong khoảng từ0.0đến1.0và đại diện cho tỷ lệ tập dữ liệu được đưa vào phần chia kiểm tra. Nếu làint, đại diện cho số lượng mẫu kiểm tra tuyệt đối. Nếu làNone, giá trị sẽ được đặt bằng phần bù của kích thước tập huấn luyện. Nếutrain_sizecũng làNone, giá trị sẽ được đặt thành0.25. - train_size (
Union[float, int, None], tùy chọn) — Kích thước của phần chia train Nếu làfloat, giá trị phải nằm trong khoảng từ0.0đến1.0và đại diện cho tỷ lệ tập dữ liệu được đưa vào phần chia train. Nếu làint, đại diện cho số lượng mẫu train tuyệt đối. Nếu làNone, giá trị sẽ được đặt tự động thành phần bù của kích thước test. - shuffle (
bool, tùy chọn, mặc định làTrue) — Có xáo trộn dữ liệu trước khi tách hay không. - stratify_by_column (
str, tùy chọn, mặc định làNone) — Tên cột chứa nhãn được sử dụng để thực hiện chia dữ liệu theo phân tầng (stratified split). - seed (
int, tùy chọn) — Một seed để khởi tạo BitGenerator mặc định nếugenerator=None. NếuNone, thì entropy mới, không thể đoán trước sẽ được lấy từ hệ điều hành. Nếu mộtinthoặcarray_like[ints]được truyền vào, thì nó sẽ được truyền đến SeedSequence để suy ra trạng thái BitGenerator ban đầu. - generator (
numpy.random.Generator, tùy chọn) — Numpy random Generator được sử dụng để tính hoán vị các dòng của tập dữ liệu. Nếugenerator=None(mặc định), sẽ sử dụngnp.random.default_rng(BitGenerator mặc định (PCG64) của NumPy). - keep_in_memory (
bool, mặc định làFalse) — Giữ các chỉ số phân chia trong bộ nhớ thay vì ghi chúng vào tệp cache. - load_from_cache_file (
Optional[bool], mặc định làTruenếu bật bộ nhớ đệm) — Nếu có thể xác định được tệp bộ nhớ đệm lưu trữ các chỉ số phân chia, hãy sử dụng tệp đó thay vì tính toán lại. - train_cache_file_name (
str, tùy chọn) — Cung cấp tên đường dẫn cho tệp cache. Nó được dùng để lưu trữ các chỉ số của phần chia train thay vì tên tệp cache được tạo tự động. - test_cache_file_name (
str, tùy chọn) — Cung cấp tên đường dẫn cho tệp cache. Nó được dùng để lưu trữ các chỉ số của tập kiểm tra thay vì tên tệp cache được tạo tự động. - writer_batch_size (
int, mặc định là1000) — Số dòng cho mỗi thao tác ghi của trình ghi tệp cache. Giá trị này là sự đánh đổi hợp lý giữa mức sử dụng bộ nhớ trong quá trình xử lý và tốc độ xử lý. Giá trị cao hơn giúp quá trình xử lý thực hiện ít lần tra cứu hơn, trong khi giá trị thấp hơn tiêu thụ ít bộ nhớ tạm hơn khi chạymap. - train_new_fingerprint (
str, tùy chọn, mặc định làNone) — Dấu vân tay mới của tập train sau khi transform. NếuNone, dấu vân tay mới sẽ được tính bằng cách băm (hash) dấu vân tay trước đó và các đối số của transform - test_new_fingerprint (
str, tuỳ chọn, mặc định làNone) — Dấu vân tay mới của tập dữ liệu kiểm tra sau khi biến đổi. NếuNone, dấu vân tay mới sẽ được tính toán bằng cách băm dấu vân tay trước đó và các đối số của phép biến đổi
Trả về một từ điển (datasets.DatasetDict) chứa hai tập con train và test ngẫu nhiên (các phần chia Dataset train và test).
Các phần chia được tạo từ tập dữ liệu dựa trên test_size, train_size và shuffle.
Phương pháp này tương tự như train_test_split của scikit-learn.
Ví dụ:
>>> 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
})
})shard
< source >( num_shards: intindex: intcontiguous: bool = Truekeep_in_memory: bool = Falseindices_cache_file_name: typing.Optional[str] = Nonewriter_batch_size: typing.Optional[int] = 1000 )
Tham số
- num_shards (
int) — Số lượng shard để chia bộ dữ liệu. - index (
int) — Chỉ định shard cần chọn và trả về. - contiguous — (
bool, mặc định làTrue): Có nên chọn các khối chỉ số liên tục cho các shard hay không. - keep_in_memory (
bool, mặc định làFalse) — Giữ bộ dữ liệu trong bộ nhớ thay vì ghi nó vào tệp cache. - indices_cache_file_name (
str, tùy chọn) — Cung cấp tên đường dẫn cho tệp cache. Nó được dùng để lưu trữ các chỉ số của từng shard thay vì tên tệp cache được tạo tự động. - writer_batch_size (
int, mặc định là1000) — Điều này chỉ liên quan đến ánh xạ chỉ mục. Số lượng chỉ mục cho mỗi thao tác ghi của trình ghi tệp cache. Giá trị này là sự đánh đổi hợp lý giữa mức sử dụng bộ nhớ trong quá trình xử lý và tốc độ xử lý. Giá trị cao hơn giúp quá trình xử lý thực hiện ít thao tác tra cứu hơn, trong khi giá trị thấp hơn tiêu thụ ít bộ nhớ tạm hơn khi chạymap.
Trả về shard thứ index từ tập dữ liệu được chia thành num_shards phần.
Thao tác này chia nhỏ dữ liệu một cách tất định. dataset.shard(n, i) chia bộ dữ liệu thành các khối liên tục,
nên có thể dễ dàng nối lại sau khi xử lý. Nếu len(dataset) % n == l, thì
l bộ dữ liệu đầu tiên mỗi bộ có độ dài (len(dataset) // n) + 1, và các bộ dữ liệu còn lại có độ dài (len(dataset) // n). datasets.concatenate_datasets([dset.shard(n, i) for i in range(n)]) trả về một bộ dữ liệu có cùng thứ tự như bản gốc.
Lưu ý: n phải nhỏ hơn hoặc bằng số phần tử trong tập dữ liệu len(dataset).
Mặt khác, dataset.shard(n, i, contiguous=False) chứa tất cả các phần tử của tập dữ liệu có chỉ số mod n = i.
Hãy đảm bảo thực hiện chia shard trước khi sử dụng bất kỳ toán tử ngẫu nhiên hóa nào (chẳng hạn như shuffle).
Tốt nhất là toán tử shard nên được sử dụng sớm trong pipeline của dataset.
Tạo một Dataset mới lặp lại tập dữ liệu cơ bản num_times lần.
Tương tự như itertools.repeat, việc lặp lại một lần chỉ trả về toàn bộ tập dữ liệu.
Ví dụ:
>>> 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 )
Tham số
- batch_size (
int, tùy chọn) — Kích thước của các batch để tải từ dataset. Mặc định làNone, điều này có nghĩa là dataset sẽ không được chia thành batch, nhưng dataset trả về có thể được chia batch sau đó bằngtf_dataset.batch(batch_size). - columns (
List[str]hoặcstr, tùy chọn) — Cột dữ liệu (dataset column) cần nạp vàotf.data.Dataset. Có thể sử dụng tên các cột được tạo bởicollate_fnvà không tồn tại trong dataset gốc. - shuffle(
bool, mặc định làFalse) — Trộn thứ tự của tập dữ liệu khi tải. Khuyến nghị dùngTruecho huấn luyện,Falsecho kiểm tra/đánh giá. - drop_remainder(
bool, mặc định làFalse) — Bỏ qua lô dữ liệu cuối cùng không đầy đủ khi tải. Đảm bảo rằng tất cả các lô dữ liệu do tập dữ liệu tạo ra sẽ có cùng độ dài trên chiều lô dữ liệu. - collate_fn(
Callable, tuỳ chọn) — Một hàm hoặc đối tượng có thể gọi (chẳng hạn nhưDataCollator) sẽ gom các danh sách mẫu thành một batch. - collate_fn_args (
Dict, tùy chọn) — Mộtdicttùy chọn chứa các đối số từ khóa để truyền chocollate_fn. - label_cols (
List[str]hoặcstr, mặc định làNone) — Cột dữ liệu (dataset) để tải dưới dạng nhãn. Lưu ý rằng nhiều mô hình tự tính toán loss bên trong thay vì để Keras thực hiện, trong trường hợp đó việc truyền nhãn ở đây là tùy chọn, miễn là chúng có mặt trong cáccolumnsđầu vào. - prefetch (
bool, mặc định làTrue) — Có chạy dataloader trong một thread riêng và duy trì một bộ đệm nhỏ các batch cho việc huấn luyện hay không. Cải thiện hiệu suất bằng cách cho phép tải dữ liệu ở nền trong khi mô hình đang được huấn luyện. - num_workers (
int, mặc định là0) — Số lượng worker được sử dụng để tải bộ dữ liệu. - num_test_batches (
int, mặc định là20) — Số lượng batch được sử dụng để suy ra chữ ký đầu ra của tập dữ liệu. Số này càng cao thì chữ ký càng chính xác, nhưng thời gian tạo tập dữ liệu sẽ càng lâu.
Tạo một tf.data.Dataset từ Dataset cơ sở. tf.data.Dataset này sẽ tải và collate các batch từ Dataset, và phù hợp để truyền vào các phương thức như model.fit() hoặc model.predict(). Dataset sẽ trả về các dicts cho cả inputs và labels, trừ khi dict chỉ chứa một key duy nhất, trong trường hợp đó một tf.Tensor thô sẽ được trả về thay thế.
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 )
Tham số
- repo_id (
str) — ID của kho cần đẩy lên, theo định dạng:<user>/<dataset_name>hoặc<org>/<dataset_name>. Cũng chấp nhận<dataset_name>, mặc định sẽ dùng namespace của người dùng đang đăng nhập.Nó cũng có thể là một vị trí bên trong một bucket, ví dụ
buckets/<user_or_org>/<bucket_name>/... - config_name (
str, mặc định là “default”) — Tên cấu hình (hoặc tập con) của một bộ dữ liệu. Mặc định là “default”. - set_default (
bool, tùy chọn) — Có nên đặt cấu hình này làm cấu hình mặc định hay không. Nếu không, cấu hình mặc định sẽ là cấu hình có tên “default”. - split (
str, tuỳ chọn) — Tên của phần chia (split) sẽ được gán cho tập dữ liệu đó. Mặc định làself.split. - data_dir (
str, tùy chọn) — Tên thư mục sẽ chứa các tệp dữ liệu đã tải lên. Mặc định làconfig_namenếu khác “default”, nếu không thì là “data”.Được thêm vào 2.17.0
- commit_message (
str, tùy chọn) — Thông điệp để commit khi đẩy. Mặc định là"Upload dataset". - commit_description (
str, tuỳ chọn) — Mô tả của commit sẽ được tạo. Ngoài ra, mô tả của PR nếu một PR được tạo (create_prlà True).Được thêm vào 2.16.0
- private (
bool, optional) — Xác định có làm cho kho (repo) ở chế độ riêng tư hay không. Nếu làNone(mặc định), kho sẽ ở chế độ công khai trừ khi mặc định của tổ chức là riêng tư. Giá trị này bị bỏ qua nếu kho đã tồn tại. - token (
str, tùy chọn) — Một token xác thực tùy chọn cho Hugging Face Hub. Nếu không truyền token, hệ thống sẽ mặc định sử dụng token được lưu cục bộ khi đăng nhập bằnghf auth login. Sẽ gây ra lỗi nếu không truyền token và người dùng chưa đăng nhập. - revision (
str, tuỳ chọn) — Branch để đẩy các tệp đã tải lên. Mặc định là branch"main".Được thêm vào 2.15.0
- create_pr (
bool, tuỳ chọn, mặc định làFalse) — Liệu có tạo PR với các tệp đã tải lên hay commit trực tiếp.Được thêm vào 2.15.0
- max_shard_size (
inthoặcstr, tùy chọn, mặc định là"500MB") — Kích thước tối đa của các shard dữ liệu sẽ được tải lên hub. Nếu được biểu diễn dưới dạng chuỗi, cần là các chữ số theo sau bởi một đơn vị (ví dụ"5MB"). - num_shards (
int, tuỳ chọn) — Số lượng shard cần ghi. Mặc định, số lượng shard phụ thuộc vàomax_shard_size.Được thêm vào 2.8.0
- embed_external_files (
bool, mặc định làTrue) — Có nên nhúng byte của tệp vào các shard hay không. Cụ thể, trước khi push, thao tác này sẽ thực hiện các bước sau cho các trường có kiểu: - num_proc (
int, tùy chọn, mặc định làNone) — Số lượng tiến trình khi chuẩn bị và tải lên dataset. Điều này hữu ích nếu dataset bao gồm nhiều mẫu hoặc tệp media cần nhúng. I sử dụng ngữ cảnh “spawn” để hoạt động với hf_xet, client rust cho việc tải lên HF nhanh chóng. Multiprocessing bị vô hiệu hóa theo mặc định.Được thêm vào 4.0.0
Đẩy dataset lên hub dưới dạng dataset Parquet. Dataset được đẩy bằng các yêu cầu HTTP và không cần cài đặt git hoặc git-lfs.
Các tệp Parquet kết quả mặc định là tự chứa. Nếu tập dữ liệu của bạn chứa dữ liệu Image, Audio hoặc Video, các tệp Parquet sẽ lưu trữ các byte của hình ảnh hoặc tệp âm thanh của bạn.
Bạn có thể tắt điều này bằng cách đặt embed_external_files thành False.
Ví dụ:
>>> 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)Nếu tập dữ liệu của bạn có nhiều phần chia (ví dụ: train/validation/test):
>>> 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"]Nếu bạn muốn thêm một cấu hình (hoặc tập con) mới vào một tập dữ liệu (ví dụ: nếu tập dữ liệu có nhiều tác bản/phân bản/ngôn ngữ):
>>> 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 )
Tham số
- dataset_path (
path-like) — Đường dẫn (ví dụ:dataset/train) hoặc URI từ xa (ví dụ:s3://my-bucket/dataset/train) của thư mục dataset nơi bộ dữ liệu sẽ được lưu. - max_shard_size (
inthoặcstr, tùy chọn, mặc định là"500MB") — Kích thước tối đa của các shard dataset sẽ được lưu vào hệ thống tệp. Nếu được biểu diễn dưới dạng chuỗi, cần phải là các chữ số theo sau bởi một đơn vị (ví dụ"50MB"). - num_shards (
int, tuỳ chọn) — Số lượng shard cần ghi. Mặc định, số lượng shard phụ thuộc vàomax_shard_sizevànum_proc.Được thêm vào 2.8.0
- num_proc (
int, tùy chọn) — Số lượng tiến trình khi tải xuống và tạo dataset cục bộ. Multiprocessing bị tắt theo mặc định.Được thêm vào 2.8.0
- storage_options (
dict, tùy chọn) — Các cặp khóa/giá trị được truyền đến backend hệ thống tệp, nếu có.Được thêm vào 2.8.0
Lưu một dataset vào thư mục dataset, hoặc vào hệ thống tệp bằng bất kỳ cài đặt nào của fsspec.spec.AbstractFileSystem.
Đối với dữ liệu Image, Audio và Video:
Tất cả dữ liệu Image(), Audio() và Video() được lưu trữ trong các tệp arrow. Nếu bạn muốn lưu trữ đường dẫn hoặc url, vui lòng sử dụng kiểu 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
Tham số
- dataset_path (
path-like) — Đường dẫn (ví dụ:"dataset/train") hoặc URI từ xa (ví dụ:"s3//my-bucket/dataset/train") của thư mục bộ dữ liệu mà bộ dữ liệu sẽ được tải từ đó. - keep_in_memory (
bool, mặc định làNone) — Có sao chép bộ dữ liệu trong bộ nhớ hay không. Nếu làNone, bộ dữ liệu sẽ không được sao chép trong bộ nhớ trừ khi được bật rõ ràng bằng cách đặtdatasets.config.IN_MEMORY_MAX_SIZEkhác không. Xem thêm chi tiết trong phần cải thiện hiệu suất. - storage_options (
dict, tùy chọn) — Các cặp khóa/giá trị được truyền đến backend hệ thống tệp, nếu có.Được thêm vào 2.8.0
Trả về
Dataset hoặc DatasetDict
- Nếu
dataset_pathlà đường dẫn của một thư mục dataset, thì đó là dataset được yêu cầu. - Nếu
dataset_pathlà đường dẫn của một thư mục dict tập dữ liệu, mộtdatasets.DatasetDictvới mỗi split.
Tải một tập dữ liệu đã được lưu trước đó bằng save_to_disk từ một thư mục tập dữ liệu, hoặc từ một hệ thống tệp bằng bất kỳ triển khai nào của 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 )
Tham số
- keep_in_memory (
bool, mặc định làFalse) — Giữ bộ dữ liệu trong bộ nhớ thay vì ghi nó vào tệp cache. - cache_file_name (
str, tùy chọn, mặc địnhNone) — Cung cấp tên đường dẫn cho tệp cache. Nó được dùng để lưu trữ kết quả của phép tính thay vì tên tệp cache được tạo tự động. - writer_batch_size (
int, mặc định là1000) — Số dòng cho mỗi thao tác ghi của trình ghi tệp cache. Giá trị này là sự đánh đổi hợp lý giữa mức sử dụng bộ nhớ trong quá trình xử lý và tốc độ xử lý. Giá trị cao hơn giúp quá trình xử lý thực hiện ít lần tra cứu hơn, trong khi giá trị thấp hơn tiêu thụ ít bộ nhớ tạm hơn khi chạymap. - features (
Optional[datasets.Features], mặc định làNone) — Sử dụng một Features cụ thể để lưu tệp cache thay vì tệp được tạo tự động. - disable_nullable (
bool, mặc định làFalse) — Cho phép các giá trị null trong bảng. - num_proc (
int, tùy chọn, mặc địnhNone) — Số lượng tiến trình tối đa khi tạo bộ nhớ đệm. Các shard đã được lưu trong bộ nhớ đệm sẽ được tải tuần tự - new_fingerprint (
str, tùy chọn, mặc định làNone) — Dấu vân tay mới của bộ dữ liệu sau khi biến đổi. NếuNone, dấu vân tay mới sẽ được tính toán bằng cách sử dụng băm của dấu vân tay trước đó và các đối số biến đổi
Tạo và lưu vào bộ nhớ đệm một Dataset mới bằng cách làm phẳng ánh xạ chỉ số.
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
Tham số
- path_or_buf (
PathLikehoặcFileOrBuffer) — Là đường dẫn đến một tệp (ví dụ:file.csv), một URI từ xa (ví dụ:hf://datasets/username/my_dataset_name/data.csv), hoặc một BinaryIO, nơi bộ dữ liệu sẽ được lưu trữ theo định dạng được chỉ định. - batch_size (
int, tùy chọn) — Kích thước của batch để nạp vào bộ nhớ và ghi lại một lần. Mặc định làdatasets.config.DEFAULT_MAX_BATCH_SIZE. - num_proc (
int, tùy chọn) — Số lượng tiến trình cho multiprocessing. Mặc định không sử dụng multiprocessing.batch_sizetrong trường hợp này mặc định làdatasets.config.DEFAULT_MAX_BATCH_SIZEnhưng bạn có thể tăng lên 5 lần hoặc 10 lần giá trị mặc định nếu có đủ sức mạnh tính toán. - storage_options (
dict, tùy chọn) — Các cặp khóa/giá trị được truyền đến backend hệ thống tệp, nếu có.Được thêm vào 2.19.0
- **to_csv_kwargs (các tham số từ khóa bổ sung) —
Các tham số để truyền cho
pandas.DataFrame.to_csv.Đã thay đổi trong 2.10.0
Bây giờ,
indexmặc định làFalsenếu không được chỉ định.Nếu bạn muốn ghi chỉ mục, hãy truyền
index=Truevà đặt tên cho cột chỉ mục bằng cách truyềnindex_label.
Trả về
int
Số lượng ký tự hoặc byte đã được ghi.
Xuất bộ dữ liệu ra csv
Trả về tập dữ liệu dưới dạng pandas.DataFrame. Cũng có thể trả về một generator cho các tập dữ liệu lớn.
Trả về tập dữ liệu dưới dạng dict Python. Cũng có thể trả về một generator cho các tập dữ liệu lớn.
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
Tham số
- path_or_buf (
PathLikehoặcFileOrBuffer) — Là đường dẫn đến một tệp (ví dụ:file.json), một URI từ xa (ví dụ:hf://datasets/username/my_dataset_name/data.json), hoặc một BinaryIO, nơi bộ dữ liệu sẽ được lưu trữ theo định dạng được chỉ định. - batch_size (
int, tùy chọn) — Kích thước của batch để nạp vào bộ nhớ và ghi lại một lần. Mặc định làdatasets.config.DEFAULT_MAX_BATCH_SIZE. - num_proc (
int, tùy chọn) — Số lượng tiến trình cho multiprocessing. Mặc định, nó không dùng multiprocessing.batch_sizetrong trường hợp này mặc định làdatasets.config.DEFAULT_MAX_BATCH_SIZEnhưng bạn có thể tăng lên 5 lần hoặc 10 lần giá trị mặc định nếu bạn có đủ sức mạnh tính toán. - storage_options (
dict, tùy chọn) — Các cặp khóa/giá trị được truyền đến backend hệ thống tệp, nếu có.Được thêm vào 2.19.0
- **to_json_kwargs ((các tham số keyword bổ sung) —
Các tham số để truyền cho
pandas.DataFrame.to_json. Các tham số mặc định làlines=Truevà `orient=“records”.Đã thay đổi trong 2.11.0
Tham số
indexmặc định làFalsenếuorientlà"split"hoặc"table".Nếu bạn muốn ghi chỉ mục, hãy truyền
index=True.
Trả về
int
Số lượng ký tự hoặc byte đã được ghi.
Xuất dataset ra JSON Lines hoặc JSON.
Định dạng đầu ra mặc định là JSON Lines.
Để xuất ra JSON, hãy truyền tham số lines=False và orient mong muốn.
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
Tham số
- path_or_buf (
PathLikehoặcFileOrBuffer) — Là đường dẫn đến một tệp (ví dụ:file.parquet), một URI từ xa (ví dụ:hf://datasets/username/my_dataset_name/data.parquet), hoặc một BinaryIO, nơi bộ dữ liệu sẽ được lưu trữ theo định dạng được chỉ định. - batch_size (
int, tùy chọn) — Kích thước của batch để nạp vào bộ nhớ và ghi một lần. Mặc định, nó hướng tới các nhóm hàng có kích thước byte chưa nén tối đa là “100MB”, được định nghĩa bởidatasets.config.MAX_ROW_GROUP_SIZE. - storage_options (
dict, tùy chọn) — Các cặp khóa/giá trị được truyền đến backend hệ thống tệp, nếu có.Được thêm vào 2.19.0
- **parquet_writer_kwargs (các tham số bổ sung) —
Các tham số để truyền cho
pyarrow.parquet.ParquetWritercủa PyArrow.
Trả về
int
Số lượng ký tự hoặc byte đã được ghi.
Xuất bộ dữ liệu ra 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
Tham số
- name (
str) — Tên bảng SQL. - con (
strhoặcsqlite3.Connectionhoặcsqlalchemy.engine.Connectionhoặcsqlalchemy.engine.Connection) — Một chuỗi URI hoặc một đối tượng kết nối SQLite3/SQLAlchemy được sử dụng để ghi vào cơ sở dữ liệu. - batch_size (
int, tùy chọn) — Kích thước của batch để nạp vào bộ nhớ và ghi lại một lần. Mặc định làdatasets.config.DEFAULT_MAX_BATCH_SIZE. - num_proc (
int, tùy chọn) — Số lượng tiến trình cho multiprocessing. Mặc định, nó không dùng multiprocessing.batch_sizetrong trường hợp này mặc định làdatasets.config.DEFAULT_MAX_BATCH_SIZEnhưng bạn có thể tăng lên 5 lần hoặc 10 lần giá trị mặc định nếu bạn có đủ sức mạnh tính toán. - **sql_writer_kwargs ((các tham số keyword bổ sung) —
Các tham số để truyền cho
pandas.DataFrame.to_sql.Đã thay đổi trong 2.11.0
Bây giờ,
indexmặc định làFalsenếu không được chỉ định.Nếu bạn muốn ghi chỉ mục, hãy truyền
index=Truevà đặt tên cho cột chỉ mục bằng cách truyềnindex_label.
Trả về
int
Số lượng bản ghi đã được ghi.
Xuất bộ dữ liệu ra cơ sở dữ liệu SQL.
to_iterable_dataset
< source >( num_shards: typing.Optional[int] = 1 )
Tham số
- num_shards (
int, mặc định là1) — Số lượng shard cần định nghĩa khi khởi tạo bộ dữ liệu dạng iterable. Điều này đặc biệt hữu ích cho các bộ dữ liệu lớn để có thể xáo trộn (shuffle) đúng cách, và cũng cho phép tải song song nhanh chóng bằng cách sử dụng PyTorch DataLoader hoặc trong các cấu hình phân tán, chẳng hạn. Các shard được định nghĩa bằng datasets.Dataset.shard(): nó chỉ đơn giản là cắt dữ liệu mà không ghi bất cứ thứ gì xuống đĩa.
Lấy một datasets.IterableDataset từ một datasets.Dataset dạng map. Điều này tương đương với việc tải một dataset ở chế độ streaming bằng datasets.load_dataset(), nhưng nhanh hơn nhiều vì dữ liệu được stream từ các tệp cục bộ.
Ngược lại với các tập dữ liệu dạng map, các tập dữ liệu dạng iterable là lười (lazy) và chỉ có thể được lặp qua (ví dụ: sử dụng vòng lặp for). Vì chúng được đọc tuần tự trong các vòng lặp huấn luyện, các tập dữ liệu dạng iterable nhanh hơn nhiều so với các tập dữ liệu dạng map. Tất cả các phép biến đổi được áp dụng cho các tập dữ liệu dạng iterable, chẳng hạn như lọc hoặc xử lý, đều được thực hiện theo thời gian thực khi bạn bắt đầu lặp qua tập dữ liệu.
Tuy nhiên, bạn vẫn có thể xáo trộn một tập dữ liệu dạng lặp được bằng cách sử dụng datasets.IterableDataset.shuffle(). Đây là một phương pháp xáo trộn gần đúng nhanh chóng, hoạt động tốt nhất khi bạn có nhiều shard và khi bạn chỉ định kích thước bộ đệm đủ lớn.
Để đạt hiệu suất tốc độ tốt nhất, hãy đảm bảo bộ dữ liệu của bạn không có ánh xạ chỉ số.
Nếu có, dữ liệu sẽ không được đọc liên tục, điều này đôi khi có thể gây chậm.
Bạn có thể sử dụng ds = ds.flatten_indices() để ghi bộ dữ liệu của bạn thành các khối dữ liệu liên tục và có tốc độ tối ưu trước khi chuyển sang bộ dữ liệu dạng lặp.
Ví dụ:
Với lọc và xử lý theo kiểu lười (lazy):
>>> 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:
... passVới sharding để cho phép xáo trộn hiệu quả:
>>> 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:
... passVới một 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:
... passVới PyTorch DataLoader và xáo trộn:
>>> 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:
... passTrong một cấu hình phân tán như PyTorch DDP với PyTorch DataLoader và xáo trộn
>>> 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:
... passVới việc xáo trộn và nhiều epoch:
>>> 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'> )
Tham số
- column (
str) — Cột chứa các vector cần thêm vào chỉ mục. - index_name (
str, tùy chọn) —index_name/định danh của chỉ mục. Đây làindex_nameđược dùng để gọi get_nearest_examples() hoặc search(). Mặc định, nó tương ứng vớicolumn. - device (
Union[int, List[int]], không bắt buộc) — Nếu là số nguyên dương, đây là chỉ số của GPU cần sử dụng. Nếu là số nguyên âm, sử dụng tất cả các GPU. Nếu truyền vào một danh sách các số nguyên dương, chỉ chạy trên những GPU đó. Mặc định sử dụng CPU. - string_factory (
str, optional) — Giá trị này được truyền vào index factory của Faiss để tạo index. Lớp index mặc định làIndexFlat. - metric_type (
int, tùy chọn) — Loại của metric. Ví dụ:faiss.METRIC_INNER_PRODUCThoặcfaiss.METRIC_L2. - custom_index (
faiss.Index, tuỳ chọn) — Chỉ mục Faiss tùy chỉnh mà bạn đã khởi tạo và cấu hình sẵn cho nhu cầu của mình. - batch_size (
int) — Kích thước của batch được sử dụng khi thêm vector vàoFaissIndex. Giá trị mặc định là1000.Được thêm vào 2.4.0
- train_size (
int, tùy chọn) — Nếu index cần một bước huấn luyện, chỉ định số lượng vector sẽ được sử dụng để huấn luyện index. - faiss_verbose (
bool, mặc định làFalse) — Bật tính năng hiển thị chi tiết của chỉ mục Faiss. - dtype (
data-type) — Dtype của các mảng numpy được chỉ mục. Mặc định lànp.float32.
Thêm một chỉ mục dense bằng Faiss để truy xuất nhanh.
Mặc định, chỉ mục được tạo trên các vector của cột được chỉ định.
Bạn có thể chỉ định device nếu muốn chạy trên GPU (device phải là chỉ số của GPU).
Bạn có thể tìm thêm thông tin về Faiss tại đây:
- Dành cho nhà máy chuỗi
Ví dụ:
>>> 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'> )
Tham số
- external_arrays (
np.array) — Nếu bạn muốn sử dụng các mảng từ bên ngoài thư viện cho chỉ mục, bạn có thể đặtexternal_arrays. Nó sẽ sử dụngexternal_arraysđể tạo chỉ mục Faiss thay vì các mảng trongcolumnđược chỉ định. - index_name (
str) —index_name/định danh của index. Đây làindex_nameđược dùng để gọi get_nearest_examples() hoặc search(). - device (Tùy chọn
Union[int, List[int]], optional) — Nếu là số nguyên dương, đây là chỉ số của GPU cần sử dụng. Nếu là số nguyên âm, sử dụng tất cả các GPU. Nếu truyền vào một danh sách các số nguyên dương, chỉ chạy trên những GPU đó. Mặc định sử dụng CPU. - string_factory (
str, optional) — Giá trị này được truyền vào index factory của Faiss để tạo index. Lớp index mặc định làIndexFlat. - metric_type (
int, tùy chọn) — Loại của metric. Ví dụ:faiss.faiss.METRIC_INNER_PRODUCThoặcfaiss.METRIC_L2. - custom_index (
faiss.Index, tuỳ chọn) — Chỉ mục Faiss tùy chỉnh mà bạn đã khởi tạo và cấu hình sẵn cho nhu cầu của mình. - batch_size (
int, tuỳ chọn) — Kích thước của batch được sử dụng khi thêm vector vào FaissIndex. Giá trị mặc định là 1000.Được thêm vào 2.4.0
- train_size (
int, tùy chọn) — Nếu index cần một bước huấn luyện, chỉ định số lượng vector sẽ được sử dụng để huấn luyện index. - faiss_verbose (
bool, mặc định là False) — Bật tính năng hiển thị chi tiết của chỉ mục Faiss. - dtype (
numpy.dtype) — Dtype của các mảng numpy được chỉ mục. Mặc định là np.float32.
Thêm một chỉ mục dense bằng Faiss để truy xuất nhanh.
Chỉ mục được tạo bằng các vector của external_arrays.
Bạn có thể chỉ định device nếu muốn chạy trên GPU (device phải là chỉ số của GPU).
Bạn có thể tìm thêm thông tin về Faiss tại đây:
- Dành cho nhà máy chuỗi
save_faiss_index
< source >( index_name: strfile: typing.Union[str, pathlib.PurePath]storage_options: typing.Optional[dict] = None )
Tham số
- index_name (
str) — index_name/định danh của index. Đây là index_name được dùng để gọi.get_nearesthoặc.search. - file (
str) — Đường dẫn đến chỉ mục faiss đã được serialize trên đĩa hoặc URI từ xa (ví dụ:"s3://my-bucket/index.faiss"). - storage_options (
dict, tùy chọn) — Các cặp khóa/giá trị được truyền đến backend hệ thống tệp, nếu có.Được thêm vào 2.11.0
Lưu một FaissIndex trên đĩa.
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 )
Tham số
- index_name (
str) — index_name/định danh của index. Đây là index_name được dùng để gọi.get_nearesthoặc.search. - file (
str) — Đường dẫn đến chỉ mục faiss đã được serialize trên đĩa hoặc URI từ xa (ví dụ:"s3://my-bucket/index.faiss"). - device (Tùy chọn
Union[int, List[int]]) — Nếu là số nguyên dương, đây là chỉ số của GPU cần sử dụng. Nếu là số nguyên âm, sử dụng tất cả các GPU. Nếu truyền vào một danh sách các số nguyên dương, chỉ chạy trên những GPU đó. Mặc định sử dụng CPU. - storage_options (
dict, tùy chọn) — Các cặp khóa/giá trị được truyền đến backend hệ thống tệp, nếu có.Được thêm vào 2.11.0
Tải một FaissIndex từ đĩa.
Nếu bạn muốn thực hiện các cấu hình bổ sung, bạn có thể truy cập vào đối tượng chỉ mục faiss bằng cách thực hiện .get_index(index_name).faiss_index để phù hợp với nhu cầu của mình.
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 )
Tham số
- column (
str) — Cột của các tài liệu cần thêm vào chỉ mục. - index_name (
str, tùy chọn) —index_name/định danh của chỉ mục. Đây là tên chỉ mục được dùng để gọi get_nearest_examples() hoặc search(). Mặc định, nó tương ứng vớicolumn. - host (
str, tùy chọn, mặc định làlocalhost) — Máy chủ nơi ElasticSearch đang chạy. - port (
str, tùy chọn, mặc định là9200) — Cổng nơi ElasticSearch đang chạy. - es_client (
elasticsearch.Elasticsearch, tùy chọn) — Khách hàng elasticsearch được sử dụng để tạo chỉ mục nếu host và port làNone. - es_index_name (
str, tùy chọn) — Tên index elasticsearch được sử dụng để tạo index. - es_index_config (
dict, tùy chọn) — Cấu hình của chỉ mục elasticsearch. Cấu hình mặc định là:
Thêm một chỉ mục văn bản bằng ElasticSearch để truy xuất nhanh. Thao tác này được thực hiện tại chỗ.
Ví dụ:
>>> 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 )
Tham số
- index_name (
str) —index_name/định danh của index. Đây là tên index được dùng để gọiget_nearesthoặcsearch. - es_index_name (
str) — Tên của index elasticsearch cần tải. - host (
str, tùy chọn, mặc định làlocalhost) — Máy chủ nơi ElasticSearch đang chạy. - port (
str, tùy chọn, mặc định là9200) — Cổng nơi ElasticSearch đang chạy. - es_client (
elasticsearch.Elasticsearch, tùy chọn) — Khách hàng elasticsearch được sử dụng để tạo chỉ mục nếu host và port làNone. - es_index_config (
dict, tùy chọn) — Cấu hình của chỉ mục elasticsearch. Cấu hình mặc định là:
Tải một chỉ mục văn bản hiện có bằng ElasticSearch để truy xuất nhanh.
Liệt kê colindex_nameumns/định danh của tất cả các chỉ mục đã gắn.
Liệt kê index_name/định danh của tất cả các chỉ mục đã gắn.
drop_index
< source >( index_name: str )
Xóa chỉ mục với cột được chỉ định.
tìm kiếm
< source >( index_name: strquery: typing.Union[str, <built-in function array>]k: int = 10**kwargs ) → (scores, indices)
Tham số
- index_name (
str) — Tên/định danh của index. - query (
Union[str, np.ndarray]) — Truy vấn dưới dạng chuỗi nếuindex_namelà chỉ mục văn bản, hoặc dưới dạng mảng numpy nếuindex_namelà chỉ mục vector. - k (
int) — Số lượng ví dụ cần lấy.
Trả về
(scores, indices)
Một tuple của (scores, indices) trong đó:
- scores (
List[List[float]): điểm truy xuất từ FAISS (mặc định làIndexFlatL2) hoặc ElasticSearch của các ví dụ đã được truy xuất - indices (
List[List[int]]): các chỉ số của các ví dụ đã được truy xuất
Tìm các chỉ mục của các ví dụ gần nhất trong bộ dữ liệu so với truy vấn.
search_batch
< source >( index_name: strqueries: typing.Union[list[str], <built-in function array>]k: int = 10**kwargs ) → (total_scores, total_indices)
Tham số
- index_name (
str) —index_name/định danh của index. - queries (
Union[List[str], np.ndarray]) — Các truy vấn dưới dạng danh sách các chuỗi nếuindex_namelà chỉ mục văn bản, hoặc dưới dạng mảng numpy nếuindex_namelà chỉ mục vector. - k (
int) — Số lượng ví dụ cần lấy cho mỗi truy vấn.
Trả về
(total_scores, total_indices)
Một tuple của (total_scores, total_indices) trong đó:
- total_scores (
List[List[float]): điểm truy xuất từ FAISS (mặc định làIndexFlatL2) hoặc ElasticSearch của các ví dụ được truy xuất cho mỗi truy vấn - total_indices (
List[List[int]]): các chỉ số của các ví dụ được truy xuất cho mỗi truy vấn
Tìm các chỉ mục của các ví dụ gần nhất trong bộ dữ liệu so với truy vấn.
get_nearest_examples
< source >( index_name: strquery: typing.Union[str, <built-in function array>]k: int = 10**kwargs ) → (scores, examples)
Tham số
- index_name (
str) — Tên index/định danh của index. - query (
Union[str, np.ndarray]) — Truy vấn dưới dạng chuỗi nếuindex_namelà chỉ mục văn bản, hoặc dưới dạng mảng numpy nếuindex_namelà chỉ mục vector. - k (
int) — Số lượng ví dụ cần lấy.
Trả về
(scores, examples)
Một tuple của (scores, examples) trong đó:
- scores (
List[float]): điểm truy xuất từ FAISS (mặc định làIndexFlatL2) hoặc ElasticSearch của các ví dụ đã được truy xuất - examples (
dict): các ví dụ đã được truy xuất
Tìm các ví dụ gần nhất trong bộ dữ liệu so với truy vấn.
get_nearest_examples_batch
< source >( index_name: strqueries: typing.Union[list[str], <built-in function array>]k: int = 10**kwargs ) → (total_scores, total_examples)
Tham số
- index_name (
str) —index_name/định danh của index. - queries (
Union[List[str], np.ndarray]) — Các truy vấn dưới dạng danh sách các chuỗi nếuindex_namelà chỉ mục văn bản, hoặc dưới dạng mảng numpy nếuindex_namelà chỉ mục vector. - k (
int) — Số lượng ví dụ cần lấy cho mỗi truy vấn.
Trả về
(total_scores, total_examples)
Một tuple của (total_scores, total_examples) trong đó:
- total_scores (
List[List[float]): điểm truy xuất từ FAISS (mặc định làIndexFlatL2) hoặc ElasticSearch của các ví dụ được truy xuất cho mỗi truy vấn - total_examples (
List[dict]): các ví dụ được truy xuất cho mỗi truy vấn
Tìm các ví dụ gần nhất trong bộ dữ liệu so với truy vấn.
đối tượng DatasetInfo chứa tất cả các metadata trong dataset.
đối tượng NamedSplit tương ứng với một phần chia (split) có tên của tập dữ liệu.
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 )
Tham số
- path_or_paths (
path-likehoặc danh sáchpath-like) — Đường dẫn của tệp CSV. - split (NamedSplit, tuỳ chọn) — Tên phân tách được gán cho tập dữ liệu.
- features (Features, tùy chọn) — Các đặc trưng của tập dữ liệu.
- cache_dir (
str, tùy chọn, mặc định là"~/.cache/huggingface/datasets") — Thư mục để lưu trữ bộ nhớ đệm dữ liệu. - keep_in_memory (
bool, mặc định làFalse) — Có sao chép dữ liệu trong bộ nhớ hay không. - num_proc (
int, tùy chọn, mặc định làNone) — Số lượng tiến trình khi tải xuống và tạo dataset cục bộ. Điều này hữu ích nếu dataset được tạo từ nhiều tệp. Multiprocessing bị tắt theo mặc định.Được thêm vào 2.8.0
- **kwargs (các tham số từ khóa bổ sung) —
Các tham số từ khóa được truyền cho
pandas.read_csv.
Tạo Dataset từ tệp CSV.
Đọc các tệp CSV, lưu trữ dữ liệu vào bộ nhớ đệm trên đĩa ở định dạng Arrow và trả về Dataset từ dữ liệu Arrow được ánh xạ bộ nhớ trên đĩa.
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 )
Tham số
- path_or_paths (
path-likehoặc danh sáchpath-like) — Đường dẫn của tệp JSON hoặc JSON Lines. - split (NamedSplit, tuỳ chọn) — Tên phân tách được gán cho tập dữ liệu.
- features (Features, tùy chọn) — Các đặc trưng của tập dữ liệu.
- cache_dir (
str, tùy chọn, mặc định là"~/.cache/huggingface/datasets") — Thư mục để lưu trữ bộ nhớ đệm dữ liệu. - keep_in_memory (
bool, mặc định làFalse) — Có sao chép dữ liệu trong bộ nhớ hay không. - field (
str, tùy chọn) — Tên trường của tệp JSON chứa bộ dữ liệu. - num_proc (
int, tuỳ chọn mặc định làNone) — Số lượng tiến trình khi tải xuống và tạo dataset cục bộ. Điều này hữu ích nếu dataset được tạo từ nhiều tệp. Multiprocessing bị tắt theo mặc định.Được thêm vào 2.8.0
- **kwargs (các tham số từ khóa bổ sung) —
Các tham số từ khóa sẽ được truyền vào
JsonConfig.
Tạo Dataset từ tệp JSON hoặc JSON Lines.
Đọc các tệp JSON, lưu trữ bộ nhớ đệm dữ liệu ở định dạng Arrow trên đĩa và trả về Dataset từ dữ liệu Arrow được ánh xạ bộ nhớ trên đĩa.
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 )
Tham số
- path_or_paths (
path-likehoặc danh sáchpath-like) — Đường dẫn của tệp Parquet. - split (
NamedSplit, tuỳ chọn) — Tên chia được gán cho tập dữ liệu. - features (
Features, tùy chọn) — Các đặc trưng của tập dữ liệu. - cache_dir (
str, tùy chọn, mặc định là"~/.cache/huggingface/datasets") — Thư mục để lưu trữ bộ nhớ đệm dữ liệu. - keep_in_memory (
bool, mặc định làFalse) — Có sao chép dữ liệu trong bộ nhớ hay không. - columns (
List[str], tùy chọn) — Nếu không phảiNone, chỉ các cột này sẽ được đọc từ tệp. Tên cột có thể là tiền tố của một trường lồng nhau, ví dụ ‘a’ sẽ chọn ‘a.b’, ‘a.c’, và ‘a.d.e’. - num_proc (
int, tùy chọn, mặc định làNone) — Số lượng tiến trình khi tải xuống và tạo dataset cục bộ. Điều này hữu ích nếu dataset được tạo từ nhiều tệp. Multiprocessing bị tắt theo mặc định.Được thêm vào 2.8.0
- filters (
Union[pyarrow.dataset.Expression, list[tuple], list[list[tuple]]], tùy chọn) — Chỉ trả về các dòng khớp với bộ lọc. Nếu có thể, điều kiện sẽ được đẩy xuống để khai thác thông tin phân vùng hoặc siêu dữ liệu bên trong tìm thấy trong nguồn dữ liệu, ví dụ như thống kê Parquet. Nếu không, bộ lọc sẽ được áp dụng lên các RecordBatch đã tải trước khi trả về chúng. - fragment_scan_options (
pyarrow.dataset.ParquetFragmentScanOptions, tuỳ chọn) — Các tuỳ chọn quét dành riêng cho các fragment Parquet. Điều này đặc biệt hữu ích để cấu hình bộ đệm và bộ nhớ đệm.Được thêm vào 4.2.0
- on_bad_files (
Literal["error", "warn", "skip"], tuỳ chọn, mặc định là “error”) — Chỉ định cách xử lý khi gặp tệp lỗi (tệp không thể đọc được). Các giá trị được phép là :- ‘error’, ném một Exception khi gặp tệp không hợp lệ.
- ‘warn’, phát ra cảnh báo khi gặp tệp không hợp lệ và bỏ qua tệp đó.
- ‘skip’, bỏ qua các tệp lỗi mà không gây ra ngoại lệ hay cảnh báo khi gặp chúng.
Được thêm vào 4.2.0
- **kwargs (các tham số từ khóa bổ sung) —
Các tham số từ khóa sẽ được truyền vào
ParquetConfig.
Tạo Dataset từ tệp Parquet.
Đọc các tệp Parquet, lưu trữ bộ đệm dữ liệu ở định dạng Arrow trên đĩa và trả về Dataset từ dữ liệu Arrow được ánh xạ bộ nhớ trên đĩa.
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 )
Tham số
- path_or_paths (
path-likehoặc danh sáchpath-like) — Đường dẫn của tệp văn bản. - split (
NamedSplit, tuỳ chọn) — Tên chia được gán cho tập dữ liệu. - features (
Features, tùy chọn) — Các đặc trưng của tập dữ liệu. - cache_dir (
str, tùy chọn, mặc định là"~/.cache/huggingface/datasets") — Thư mục để lưu trữ bộ nhớ đệm dữ liệu. - keep_in_memory (
bool, mặc định làFalse) — Có sao chép dữ liệu trong bộ nhớ hay không. - num_proc (
int, tùy chọn, mặc định làNone) — Số lượng tiến trình khi tải xuống và tạo dataset cục bộ. Điều này hữu ích nếu dataset được tạo từ nhiều tệp. Multiprocessing bị tắt theo mặc định.Được thêm vào 2.8.0
- keep_linebreaks — (
bool, mặc định là False): Có nên giữ các ký tự xuống dòng hay không. - sample_by (
Literal["line", "paragraph", "document"], mặc định là “line”) — Xác định việc nạp dữ liệu theo từng dòng, đoạn văn hay tài liệu. Mặc định, một hàng trong bộ dữ liệu = một dòng. - **kwargs (các tham số từ khóa bổ sung) —
Các tham số từ khóa sẽ được truyền vào
TextConfig.
Tạo Dataset từ tệp văn bản.
Đọc các tệp văn bản, lưu trữ bộ nhớ đệm dữ liệu ở định dạng Arrow trên đĩa và trả về Dataset từ dữ liệu Arrow được ánh xạ bộ nhớ trên đĩa.
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 )
Tham số
- sql (
strhoặcsqlalchemy.sql.Selectable) — Truy vấn SQL cần thực thi hoặc tên bảng. - con (
strhoặcsqlite3.Connectionhoặcsqlalchemy.engine.Connectionhoặcsqlalchemy.engine.Connection) — Một chuỗi URI được dùng để khởi tạo kết nối cơ sở dữ liệu hoặc một đối tượng kết nối SQLite3/SQLAlchemy. - features (Features, tùy chọn) — Các đặc trưng của tập dữ liệu.
- cache_dir (
str, tùy chọn, mặc định là"~/.cache/huggingface/datasets") — Thư mục để lưu trữ bộ nhớ đệm dữ liệu. - keep_in_memory (
bool, mặc định làFalse) — Có sao chép dữ liệu trong bộ nhớ hay không. - **kwargs (các tham số từ khóa bổ sung) —
Các tham số từ khóa sẽ được truyền vào
SqlConfig.
Tạo Dataset từ truy vấn SQL hoặc bảng cơ sở dữ liệu.
Truy vấn cơ sở dữ liệu SQL, lưu trữ dữ liệu đệm trên đĩa ở định dạng Arrow và trả về Dataset từ dữ liệu Arrow được ánh xạ bộ nhớ trên đĩa.
Ví dụ:
>>> # 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")Bộ dữ liệu được trả về chỉ có thể được lưu vào bộ nhớ đệm nếu
conđược chỉ định dưới dạng chuỗi URI.
align_labels_with_mapping
< source >( label2id: dictlabel_column: str )
Căn chỉnh ánh xạ ID nhãn và tên nhãn của bộ dữ liệu để khớp với ánh xạ label2id đầu vào.
Điều này hữu ích khi bạn muốn đảm bảo rằng các nhãn dự đoán của mô hình được căn chỉnh với bộ dữ liệu.
Việc căn chỉnh được thực hiện bằng cách sử dụng tên nhãn viết thường.
Ví dụ:
>>> # 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 )
Tham số
- dsets (
List[datasets.Dataset]hoặcList[datasets.IterableDataset]) — Danh sách các Dataset để nối lại với nhau. - info (
DatasetInfo, tùy chọn) — Thông tin về bộ dữ liệu, chẳng hạn như mô tả, trích dẫn, v.v. - split (
NamedSplit, tuỳ chọn) — Tên của phần chia bộ dữ liệu. - axis (
{0, 1}, mặc định là0) — Trục để ghép nối, trong đó0có nghĩa là theo hàng (theo chiều dọc) và1có nghĩa là theo cột (theo chiều ngang).Được thêm vào 1.6.0
Nối nhiều bộ dữ liệu (nguồn) thành một bộ dữ liệu duy nhất.
Sử dụng axis=0 để ghép dọc (mặc định), hoặc axis=1 để ghép ngang.
Lưu ý dành cho các tập dữ liệu dạng lặp:
- nếu axis=0,
num_shardscủa dataset kết quả là tổngnum_shardscủa từng dataset. - nếu axis=1, tập dữ liệu kết quả sẽ có một (1) shard để không làm lệch dữ liệu.
- nếu các bộ dữ liệu được chia bằng datasets.distributed.split_dataset_by_node(), tất cả chúng phải được chia theo cùng một cách, và bộ dữ liệu kết quả sẽ giữ nguyên cách chia đó.
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
Tham số
- datasets (
List[Dataset]hoặcList[IterableDataset]) — Danh sách các dataset để xen kẽ. - probabilities (
List[float], tùy chọn, mặc định làNone) — Nếu được chỉ định, tập dữ liệu mới sẽ được xây dựng bằng cách lấy mẫu các ví dụ từ một nguồn tại một thời điểm theo các xác suất này. - seed (
int, tùy chọn, mặc định làNone) — Hạt ngẫu nhiên được sử dụng để chọn một nguồn cho mỗi ví dụ. - info (DatasetInfo, tùy chọn) —
Thông tin về dataset, như mô tả, trích dẫn, v.v.
Được thêm vào 2.4.0
- split (NamedSplit, tùy chọn) —
Tên của phần chia (split) của dataset.
Được thêm vào 2.4.0
- stopping_strategy (
str, mặc định làfirst_exhausted) — Hiện tại có ba chiến lược được đề xuất,first_exhausted,all_exhaustedvàall_exhausted_without_replacement. Theo mặc định,first_exhaustedlà chiến lược lấy mẫu thiếu (undersampling), tức là việc xây dựng tập dữ liệu sẽ dừng lại ngay khi một tập dữ liệu hết mẫu. Nếu chiến lược làall_exhausted, chúng ta sử dụng chiến lược lấy mẫu thừa (oversampling), tức là việc xây dựng tập dữ liệu sẽ dừng lại ngay khi mọi mẫu trong mọi tập dữ liệu đã được thêm vào ít nhất một lần. Khi chiến lược làall_exhausted_without_replacementchúng ta đảm bảo rằng mỗi mẫu trong mỗi tập dữ liệu chỉ được lấy mẫu một lần. Lưu ý rằng nếu chiến lược làall_exhausted, kích thước của tập dữ liệu xen kẽ có thể trở nên rất lớn:- nếu không có xác suất, bộ dữ liệu kết quả sẽ có
max_length_datasets*nb_datasetmẫu. - với các xác suất đã cho, tập dữ liệu kết quả sẽ có nhiều mẫu hơn nếu một số tập dữ liệu có xác suất được truy cập thực sự thấp.
- nếu không có xác suất, bộ dữ liệu kết quả sẽ có
Trả về
Dataset hoặc IterableDataset
Loại trả về phụ thuộc vào tham số datasets. Dataset nếu đầu vào là một danh sách Dataset, IterableDataset nếu đầu vào là một danh sách IterableDataset.
Ghép xen kẽ nhiều bộ dữ liệu (nguồn) thành một bộ dữ liệu duy nhất. Bộ dữ liệu mới được xây dựng bằng cách luân phiên lấy các ví dụ từ các nguồn.
Bạn có thể sử dụng hàm này trên một danh sách các đối tượng Dataset, hoặc trên một danh sách các đối tượng IterableDataset.
- Nếu
probabilitieslàNone(mặc định), tập dữ liệu mới được xây dựng bằng cách luân phiên giữa từng nguồn để lấy các ví dụ. - Nếu
probabilitieskhông phải làNone, tập dữ liệu mới sẽ được xây dựng bằng cách lấy các ví dụ từ một nguồn ngẫu nhiên một lần một theo các xác suất được cung cấp.
Bộ dữ liệu kết quả sẽ kết thúc khi một trong các bộ dữ liệu nguồn hết ví dụ, ngoại trừ khi oversampling là True, trong trường hợp đó, bộ dữ liệu kết quả sẽ kết thúc khi tất cả các bộ dữ liệu đã hết ví dụ ít nhất một lần.
Lưu ý dành cho các tập dữ liệu dạng lặp:
- Giá trị
num_shardscủa dataset kết quả là giá trị nhỏ nhất trong số cácnum_shardscủa từng dataset để đảm bảo khả năng song song hóa tốt. Nếu một số dataset của bạn có số lượng shard rất thấp, bạn có thể sử dụng IterableDataset.reshard(). - Trong cấu hình phân tán hoặc trong các worker của PyTorch DataLoader, chiến lược dừng được áp dụng cho từng tiến trình. Do đó, chiến lược “first_exhausted” trên một tập dữ liệu lặp lại dạng sharded có thể tạo ra ít mẫu hơn về tổng số (tối đa 1 mẫu bị thiếu cho mỗi tập dữ liệu con cho mỗi worker).
Ví dụ:
Đối với các bộ dữ liệu thông thường (kiểu map):
>>> 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
Tham số
- dataset (Dataset hoặc IterableDataset) — Bộ dữ liệu cần chia theo từng nút.
- rank (
int) — Rank của node hiện tại. - world_size (
int) — Tổng số nút. - strategy (
str, mặc định là"auto") — Cách chia một tập dữ liệu dạng iterable. Phải là một trong"auto","shards"hoặc"examples". Các tập dữ liệu dạng map chỉ hỗ trợ"auto".
Trả về
Dataset hoặc IterableDataset
Bộ dữ liệu sẽ được sử dụng trên nút có rank rank.
Tách một tập dữ liệu cho nút có thứ hạng rank trong một nhóm các nút có kích thước world_size.
Đối với các bộ dữ liệu theo phong cách map:
Mỗi node được gán một phần dữ liệu, ví dụ rank 0 nhận phần đầu tiên của tập dữ liệu. Để tối đa hóa thông lượng nạp dữ liệu, các phần dữ liệu được tạo từ dữ liệu liên tục trên đĩa nếu có thể.
Đối với các tập dữ liệu có thể lặp lại:
Chiến lược strategy phân tách có thể là "auto", "shards" hoặc "examples":
"shards": các shard được phân bổ đều giữa các node"examples": mỗi nút giữ lại 1 ví dụ trong sốworld_size, bỏ qua các ví dụ còn lại"auto"(mặc định): sử dụng"shards"nếu số lượng shards của dataset là một ước số củaworld_size(tức là nếudataset.num_shards % world_size == 0), đây là phương án được tối ưu nhất. Ngược lại, sử dụng"examples".
Nếu bạn xáo trộn bộ dữ liệu dạng lặp (iterable dataset) trong một cấu hình phân tán, hãy đảm bảo đặt một
seedcố định trong IterableDataset.shuffle() để danh sách các shard đã xáo trộn giống nhau được sử dụng trên mọi nút, từ đó biết được nút nào nên bỏ qua những shard nào.
Khi áp dụng các phép biến đổi lên một tập dữ liệu, dữ liệu sẽ được lưu trữ trong các tệp cache. Cơ chế cache cho phép nạp lại một tệp cache hiện có nếu nó đã được tính toán trước đó.
Việc tải lại một tập dữ liệu là khả thi vì các tệp cache được đặt tên bằng dấu vân tay của tập dữ liệu, được cập nhật sau mỗi lần biến đổi.
Nếu bị vô hiệu hóa, thư viện sẽ không còn nạp lại các tệp dữ liệu tập được lưu trong bộ nhớ đệm khi áp dụng các phép biến đổi lên các tập dữ liệu. Cụ thể hơn, nếu việc lưu bộ nhớ đệm bị vô hiệu hóa:
- các tệp cache luôn được tạo lại
- các tệp cache được ghi vào một thư mục tạm, thư mục này sẽ bị xóa khi phiên kết thúc
- các tệp cache được đặt tên bằng một băm ngẫu nhiên thay vì dấu vân tay của bộ dữ liệu
- Sử dụng save_to_disk() để lưu bộ dữ liệu đã biến đổi, nếu không nó sẽ bị xóa khi phiên làm việc kết thúc
- caching không ảnh hưởng đến load_dataset(). Nếu bạn muốn tạo lại một dataset từ đầu, bạn nên sử dụng
tham số
download_modetrong load_dataset().
Khi áp dụng các phép biến đổi lên một tập dữ liệu, dữ liệu sẽ được lưu trữ trong các tệp cache. Cơ chế cache cho phép nạp lại một tệp cache hiện có nếu nó đã được tính toán trước đó.
Việc tải lại một tập dữ liệu là khả thi vì các tệp cache được đặt tên bằng dấu vân tay của tập dữ liệu, được cập nhật sau mỗi lần biến đổi.
Nếu bị vô hiệu hóa, thư viện sẽ không còn nạp lại các tệp dữ liệu tập được lưu trong bộ nhớ đệm khi áp dụng các phép biến đổi lên các tập dữ liệu. Cụ thể hơn, nếu việc lưu bộ nhớ đệm bị vô hiệu hóa:
- các tệp cache luôn được tạo lại
- các tệp cache được ghi vào một thư mục tạm, thư mục này sẽ bị xóa khi phiên kết thúc
- các tệp cache được đặt tên bằng một băm ngẫu nhiên thay vì dấu vân tay của bộ dữ liệu
- Sử dụng save_to_disk() để lưu bộ dữ liệu đã biến đổi, nếu không nó sẽ bị xóa khi phiên làm việc kết thúc
- caching không ảnh hưởng đến load_dataset(). Nếu bạn muốn tạo lại một dataset từ đầu, bạn nên sử dụng
tham số
download_modetrong load_dataset().
Khi áp dụng các phép biến đổi lên một tập dữ liệu, dữ liệu sẽ được lưu trữ trong các tệp cache. Cơ chế cache cho phép nạp lại một tệp cache hiện có nếu nó đã được tính toán trước đó.
Việc tải lại một tập dữ liệu là khả thi vì các tệp cache được đặt tên bằng dấu vân tay của tập dữ liệu, được cập nhật sau mỗi lần biến đổi.
Nếu bị vô hiệu hóa, thư viện sẽ không còn nạp lại các tệp dữ liệu tập được lưu trong bộ nhớ đệm khi áp dụng các phép biến đổi lên các tập dữ liệu. Cụ thể hơn, nếu việc lưu bộ nhớ đệm bị vô hiệu hóa:
- các tệp cache luôn được tạo lại
- các tệp cache được ghi vào một thư mục tạm, thư mục này sẽ bị xóa khi phiên kết thúc
- các tệp cache được đặt tên bằng một băm ngẫu nhiên thay vì dấu vân tay của bộ dữ liệu
- sử dụng save_to_disk()] để lưu bộ dữ liệu đã biến đổi, nếu không nó sẽ bị xóa khi phiên làm việc kết thúc
- caching không ảnh hưởng đến load_dataset(). Nếu bạn muốn tạo lại một dataset từ đầu, bạn nên sử dụng
tham số
download_modetrong load_dataset().
lớp datasets.Column
< source >( source: typing.Union[ForwardRef('Dataset'), ForwardRef('Column')]column_name: str )
Một đối tượng lặp được cho một cột cụ thể của Dataset.
Ví dụ:
DatasetDict
Từ điển có tên các phần chia làm khóa (ví dụ ‘train’, ‘test’), và các đối tượng Dataset làm giá trị.
Nó cũng có các phương thức biến đổi dataset như map hoặc filter, để xử lý tất cả các phần chia cùng lúc.
Một từ điển (dict của str: datasets.Dataset) chứa các phương thức biến đổi tập dữ liệu (map, filter, v.v.)
Các bảng Apache Arrow hỗ trợ cho mỗi phần chia (split).
Các tệp cache chứa bảng Apache Arrow hỗ trợ cho mỗi phần chia (split).
Ví dụ:
>>> 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'}]}Số cột trong mỗi phần chia của bộ dữ liệu.
Số dòng trong mỗi phần chia của bộ dữ liệu.
Tên của các cột trong mỗi phần chia của bộ dữ liệu.
Hình dạng của mỗi phần chia của bộ dữ liệu (số hàng, số cột).
độc nhất
< source >( column: str ) → Dict[str, list]
Tham số
- column (
str) — tên cột (liệt kê tất cả tên cột bằng column_names)
Trả về
Dict[str, list]
Từ điển các phần tử duy nhất trong cột đã cho.
Trả về danh sách các phần tử duy nhất trong một cột cho mỗi phần chia.
Điều này được triển khai trong backend cấp thấp và do đó, rất nhanh.
Dọn dẹp tất cả các tệp cache trong thư mục cache của dataset, ngoại trừ tệp cache đang được sử dụng (nếu có). Hãy cẩn thận khi chạy lệnh này để đảm bảo không có tiến trình nào khác đang sử dụng các tệp cache khác.
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 )
Tham số
- function (
callable) — với một trong các chữ ký sau:function(example: Dict[str, Any]) -> Dict[str, Any]nếubatched=Falsevàwith_indices=Falsefunction(example: Dict[str, Any], indices: int) -> Dict[str, Any]nếubatched=Falsevàwith_indices=Truefunction(batch: Dict[str, list]) -> Dict[str, list]nếubatched=Truevàwith_indices=Falsefunction(batch: Dict[str, list], indices: list[int]) -> Dict[str, list]nếubatched=Truevàwith_indices=True
Đối với cách sử dụng nâng cao, hàm cũng có thể trả về một
pyarrow.Table. Nếu hàm là bất đồng bộ, thìmapsẽ chạy hàm của bạn song song. Hơn nữa, nếu hàm của bạn không trả về gì (None), thìmapsẽ chạy hàm của bạn và trả về dataset không thay đổi. Nếu không cung cấp hàm, mặc định dùng hàm đồng nhất:lambda x: x. - with_indices (
bool, mặc định làFalse) — Cung cấp các chỉ mục ví dụ chofunction. Lưu ý rằng trong trường hợp này, chữ ký củafunctionphải làdef function(example, idx): .... - with_rank (
bool, mặc định làFalse) — Cung cấp process rank chofunction. Lưu ý rằng trong trường hợp này, signature củafunctionphải làdef function(example[, idx], rank): .... - with_split (
bool, mặc định làFalse) — Cung cấp process split chofunction. Lưu ý rằng trong trường hợp này, signature củafunctionphải làdef function(example[, idx], split): .... - input_columns (
[Union[str, list[str]]], tùy chọn, mặc định làNone) — Các cột được truyền vàofunctiondưới dạng các đối số vị trí. Nếu làNone, một dict ánh xạ đến tất cả các cột đã định dạng sẽ được truyền dưới dạng một đối số duy nhất. - batched (
bool, mặc định làFalse) — Cung cấp một lô các ví dụ chofunction. - batch_size (
int, tùy chọn, mặc định là1000) — Số lượng ví dụ trong mỗi batch được cung cấp chofunctionnếubatched=True, nếubatch_size <= 0hoặcbatch_size == Nonethì cung cấp toàn bộ tập dữ liệu như một batch duy nhất chofunction. - drop_last_batch (
bool, mặc định làFalse) — Liệu một batch cuối nhỏ hơn batch_size có nên bị loại bỏ thay vì được xử lý bởi hàm hay không. - remove_columns (
[Union[str, list[str]]], tùy chọn, mặc định làNone) — Xóa một tập các cột trong khi thực hiện ánh xạ. Các cột sẽ bị xóa trước khi cập nhật các ví dụ bằng kết quả đầu ra củafunction, tức là nếufunctionthêm các cột có tên nằm trongremove_columns, các cột này sẽ được giữ lại. - keep_in_memory (
bool, mặc định làFalse) — Giữ bộ dữ liệu trong bộ nhớ thay vì ghi nó vào tệp cache. - load_from_cache_file (
Optional[bool], mặc định làTruenếu bật bộ nhớ đệm) — Nếu có thể xác định một tệp bộ nhớ đệm lưu trữ kết quả tính toán hiện tại củafunction, hãy sử dụng tệp đó thay vì tính toán lại. - cache_file_names (
[Dict[str, str]], tùy chọn, mặc định làNone) — Cung cấp tên đường dẫn cho tệp cache. Nó được dùng để lưu trữ kết quả của phép tính thay vì tên tệp cache được tạo tự động. Bạn phải cung cấp mộtcache_file_namecho mỗi dataset trong từ điển dataset. - writer_batch_size (
int, mặc định1000) — Số dòng cho mỗi thao tác ghi của trình ghi tệp cache. Giá trị này là sự đánh đổi hợp lý giữa mức sử dụng bộ nhớ trong quá trình xử lý và tốc độ xử lý. Giá trị cao hơn giúp quá trình xử lý thực hiện ít lần tra cứu hơn, trong khi giá trị thấp hơn tiêu thụ ít bộ nhớ tạm hơn khi chạymap. - features (
[datasets.Features], tùy chọn, mặc định làNone) — Sử dụng một Features cụ thể để lưu tệp cache thay vì tệp được tạo tự động. - disable_nullable (
bool, mặc định làFalse) — Không cho phép giá trị null trong bảng. - fn_kwargs (
Dict, tùy chọn, mặc định làNone) — Các đối số dạng từ khóa để truyền chofunction - num_proc (
int, tùy chọn, mặc định làNone) — Số lượng tiến trình để sử dụng cho multiprocessing. Nếu là None hoặc 0, multiprocessing sẽ không được sử dụng và thao tác sẽ chạy trong tiến trình chính. Nếu lớn hơn 1, một hoặc nhiều tiến trình worker sẽ được sử dụng để xử lý dữ liệu song song. Lưu ý: Hàm được truyền vào map() phải có thể picklable để multiprocessing hoạt động chính xác (tức là nên ưu tiên các hàm được định nghĩa ở cấp trên cùng của một module, không nên đặt bên trong một hàm hoặc lớp khác).- Nếu là
Nonehoặc0, không sử dụng đa tiến trình và thao tác sẽ chạy trong tiến trình chính. - Nếu lớn hơn
1, một hoặc nhiều tiến trình worker sẽ được sử dụng để xử lý dữ liệu song song. Lưu ý: Hàm được truyền vàomap()phải có thể picklable để multiprocessing hoạt động chính xác (tức là, ưu tiên các hàm được định nghĩa ở cấp trên cùng của một module, không phải bên trong một hàm hoặc lớp khác).
- Nếu là
- desc (
str, tùy chọn, mặc định làNone) — Mô tả có ý nghĩa để hiển thị cùng với thanh tiến trình trong khi ánh xạ các ví dụ. - try_original_type (
Optional[bool], mặc định làTrue) — Thử giữ nguyên kiểu dữ liệu của các cột gốc (ví dụ: int32 -> int32). Đặt thành False nếu bạn muốn luôn suy luận các kiểu dữ liệu mới. - on_mixed_types (
Literal["use_json"], tuỳ chọn, mặc định làNone) — Nếu là “use_json”, hãy dùng kiểu Json() cho các trường có kiểu dữ liệu hỗn hợp, tức là các trường không có cấu trúc chứa dữ liệu không có schema được định nghĩa trước. Trong trường hợp này, một trường có kiểu hỗn hợp sẽ được đặt thành Json().Điều này cho phép nạp các danh sách có sự pha trộn giữa chuỗi/số nguyên/số thực, chẳng hạn, hoặc các từ điển có kiểu giá trị tùy ý.
Được thêm vào 4.7.0
Áp dụng một hàm cho tất cả các ví dụ trong bảng (riêng lẻ hoặc theo lô) và cập nhật bảng. Nếu hàm của bạn trả về một cột đã tồn tại, thì nó sẽ ghi đè lên cột đó. Biến đổi được áp dụng cho tất cả các tập dữ liệu của từ điển tập dữ liệu.
Bạn có thể chỉ định xem hàm có nên được xử lý theo lô (batched) hay không bằng tham số batched:
- Nếu
False, thì hàm nhận vào 1 ví dụ và phải trả về 1 ví dụ. Một ví dụ là một từ điển, ví dụ{"text": "Hello there !"}. - Nếu
Truevàbatch_sizelà 1, thì hàm nhận vào một batch gồm 1 ví dụ và có thể trả về một batch gồm 1 hoặc nhiều hơn các ví dụ. Một batch là một từ điển, ví dụ một batch gồm 1 ví dụ là{"text": ["Hello there !"]}. - Nếu
Truevàbatch_sizelàn > 1, thì hàm nhận vào một batch gồmnví dụ và có thể trả về một batch gồmnví dụ, hoặc một số lượng ví dụ bất kỳ. Lưu ý rằng batch cuối cùng có thể có ít hơnnví dụ. Một batch là một từ điển, ví dụ một batch gồmnví dụ là{"text": ["Hello there !"] * n}.
Nếu hàm là bất đồng bộ, thì map sẽ chạy hàm của bạn song song, với tối đa một nghìn cuộc gọi đồng thời.
Khuyến nghị sử dụng asyncio.Semaphore trong hàm của bạn nếu bạn muốn đặt số lượng tối đa các thao tác có thể chạy cùng lúc.
Ví dụ:
>>> 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)lọc
< 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 )
Tham số
- function (
Callable) — Callable có một trong các chữ ký sau:function(example: Dict[str, Any]) -> boolnếubatched=Falsevàwith_indices=Falsevàwith_rank=Falsefunction(example: Dict[str, Any], *extra_args) -> boolnếubatched=Falsevàwith_indices=Truevà/hoặcwith_rank=True(mỗi tham số bổ sung thêm một đối số)function(batch: Dict[str, list]) -> list[bool]nếubatched=Truevàwith_indices=Falsevàwith_rank=Falsefunction(batch: Dict[str, list], *extra_args) -> list[bool]nếubatched=Truevàwith_indices=Truevà/hoặcwith_rank=True(mỗi tham số bổ sung thêm một đối số)
Nếu không có hàm nào được cung cấp, mặc định sẽ là một hàm luôn trả về
True:lambda x: True. - with_indices (
bool, mặc định làFalse) — Cung cấp các chỉ mục ví dụ chofunction. Lưu ý rằng trong trường hợp này, chữ ký củafunctionphải làdef function(example, idx[, rank]): .... - with_rank (
bool, mặc định làFalse) — Cung cấp process rank chofunction. Lưu ý rằng trong trường hợp này, signature củafunctionphải làdef function(example[, idx], rank): .... - input_columns (
[Union[str, list[str]]], tùy chọn, mặc định làNone) — Các cột được truyền vàofunctiondưới dạng các đối số vị trí. Nếu làNone, một dict ánh xạ đến tất cả các cột đã định dạng sẽ được truyền dưới dạng một đối số duy nhất. - batched (
bool, mặc định làFalse) — Cung cấp một lô các ví dụ chofunction. - batch_size (
int, tùy chọn, mặc định là1000) — Số lượng ví dụ trong mỗi batch được cung cấp chofunctionnếubatched=Truebatch_size <= 0hoặcbatch_size == Nonethì cung cấp toàn bộ tập dữ liệu như một batch duy nhất chofunction. - keep_in_memory (
bool, mặc định làFalse) — Giữ bộ dữ liệu trong bộ nhớ thay vì ghi nó vào tệp cache. - load_from_cache_file (
Optional[bool], mặc định làTruenếu bật bộ nhớ đệm) — Nếu có thể xác định một tệp bộ nhớ đệm lưu trữ kết quả tính toán hiện tại củafunction, hãy sử dụng tệp đó thay vì tính toán lại. - cache_file_names (
[Dict[str, str]], tùy chọn, mặc định làNone) — Cung cấp tên đường dẫn cho tệp cache. Nó được dùng để lưu trữ kết quả của phép tính thay vì tên tệp cache được tạo tự động. Bạn phải cung cấp mộtcache_file_namecho mỗi dataset trong từ điển dataset. - writer_batch_size (
int, mặc định là1000) — Số dòng cho mỗi thao tác ghi của trình ghi tệp cache. Giá trị này là sự đánh đổi hợp lý giữa mức sử dụng bộ nhớ trong quá trình xử lý và tốc độ xử lý. Giá trị cao hơn giúp quá trình xử lý thực hiện ít lần tra cứu hơn, trong khi giá trị thấp hơn tiêu thụ ít bộ nhớ tạm hơn khi chạymap. - fn_kwargs (
Dict, tùy chọn, mặc định làNone) — Các đối số dạng từ khóa để truyền chofunction - num_proc (
int, tùy chọn, mặc định làNone) — Số lượng tiến trình để sử dụng cho multiprocessing. Nếu là None hoặc 0, multiprocessing sẽ không được sử dụng và thao tác sẽ chạy trong tiến trình chính. Nếu lớn hơn 1, một hoặc nhiều tiến trình worker sẽ được sử dụng để xử lý dữ liệu song song. Lưu ý: Hàm được truyền vào map() phải có thể picklable để multiprocessing hoạt động chính xác (tức là nên ưu tiên các hàm được định nghĩa ở cấp trên cùng của một module, không nên đặt bên trong một hàm hoặc lớp khác).- Nếu là
Nonehoặc0, không sử dụng đa tiến trình và thao tác sẽ chạy trong tiến trình chính. - Nếu lớn hơn
1, một hoặc nhiều tiến trình worker sẽ được sử dụng để xử lý dữ liệu song song. Lưu ý: Hàm được truyền vàomap()phải có thể picklable để multiprocessing hoạt động chính xác (tức là, ưu tiên các hàm được định nghĩa ở cấp trên cùng của một module, không phải bên trong một hàm hoặc lớp khác).
- Nếu là
- desc (
str, tùy chọn, mặc định làNone) — Mô tả có ý nghĩa để hiển thị cùng với thanh tiến trình trong khi lọc các ví dụ.
Áp dụng một hàm lọc lên tất cả các phần tử trong bảng theo từng lô và cập nhật bảng để tập dữ liệu chỉ bao gồm các ví dụ theo hàm lọc. Biến đổi được áp dụng lên tất cả các tập dữ liệu của từ điển tập dữ liệu.
Ví dụ:
>>> 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 )
Tham số
- column_names (
Union[str, Sequence[str]]) — Tên cột để sắp xếp. - reverse (
Union[bool, Sequence[bool]], mặc định làFalse) — NếuTrue, sắp xếp theo thứ tự giảm dần thay vì tăng dần. Nếu chỉ cung cấp một giá trị bool, giá trị này sẽ được áp dụng cho việc sắp xếp của tất cả các tên cột. Ngược lại, phải cung cấp một danh sách các giá trị bool có độ dài và thứ tự giống như column_names. - null_placement (
str, mặc định làat_end) — Đặt các giá trịNoneở đầu nếu làat_starthoặcfirst, hoặc ở cuối nếu làat_endhoặclast - keep_in_memory (
bool, mặc định làFalse) — Giữ các chỉ số đã sắp xếp trong bộ nhớ thay vì ghi chúng vào tệp cache. - load_from_cache_file (
Optional[bool], mặc định làTruenếu bật bộ nhớ đệm) — Nếu có thể xác định tệp bộ nhớ đệm lưu trữ các chỉ số đã sắp xếp, hãy sử dụng tệp đó thay vì tính toán lại. - indices_cache_file_names (
[Dict[str, str]], tùy chọn, mặc định làNone) — Cung cấp tên đường dẫn cho tệp cache. Nó được dùng để lưu ánh xạ các chỉ số thay vì tên tệp cache được tạo tự động. Bạn phải cung cấp mộtcache_file_namecho mỗi dataset trong từ điển dataset. - writer_batch_size (
int, mặc định là1000) — Số dòng cho mỗi thao tác ghi của trình ghi tệp cache. Giá trị cao hơn tạo ra tệp cache nhỏ hơn, giá trị thấp hơn tiêu thụ ít bộ nhớ tạm hơn.
Tạo một tập dữ liệu mới được sắp xếp theo một hoặc nhiều cột.
Ví dụ:
>>> 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 )
Tham số
- seeds (
Dict[str, int]hoặcint, tùy chọn) — Một seed để khởi tạo BitGenerator mặc định nếugenerator=None. NếuNone, thì entropy mới, không thể đoán trước sẽ được lấy từ hệ điều hành. Nếu mộtinthoặcarray_like[ints]được truyền vào, thì nó sẽ được truyền đến SeedSequence để suy ra trạng thái BitGenerator ban đầu. Bạn có thể cung cấp mộtseedcho mỗi dataset trong từ điển dataset. - seed (
int, tùy chọn) — Một seed để khởi tạo BitGenerator mặc định nếugenerator=None. Là alias của seeds (mộtValueErrorsẽ được ném ra nếu cả hai đều được cung cấp). - generators (
Dict[str, *optional*, np.random.Generator]) — Numpy random Generator để tính hoán vị các dòng của dataset. Nếugenerator=None(mặc định), sẽ dùngnp.random.default_rng(BitGenerator mặc định (PCG64) của NumPy). Bạn phải cung cấp mộtgeneratorcho mỗi dataset trong từ điển dataset. - keep_in_memory (
bool, mặc định làFalse) — Giữ bộ dữ liệu trong bộ nhớ thay vì ghi nó vào tệp cache. - load_from_cache_file (
Optional[bool], mặc định làTruenếu bật bộ nhớ đệm) — Nếu có thể xác định một tệp bộ nhớ đệm lưu trữ kết quả tính toán hiện tại củafunction, hãy sử dụng tệp đó thay vì tính toán lại. - indices_cache_file_names (
Dict[str, str], tùy chọn) — Cung cấp tên đường dẫn cho tệp cache. Nó được dùng để lưu các ánh xạ chỉ số thay vì tên tệp cache được tạo tự động. Bạn phải cung cấp mộtcache_file_namecho mỗi dataset trong từ điển dataset. - writer_batch_size (
int, mặc định là1000) — Số dòng cho mỗi thao tác ghi của trình ghi tệp cache. Giá trị này là sự đánh đổi hợp lý giữa mức sử dụng bộ nhớ trong quá trình xử lý và tốc độ xử lý. Giá trị cao hơn giúp quá trình xử lý thực hiện ít lần tra cứu hơn, trong khi giá trị thấp hơn tiêu thụ ít bộ nhớ tạm hơn khi chạymap.
Tạo một Dataset mới trong đó các hàng được xáo trộn.
Biến đổi được áp dụng cho tất cả các tập dữ liệu trong từ điển tập dữ liệu.
Hiện tại, shuffling sử dụng các bộ tạo ngẫu nhiên của numpy. Bạn có thể cung cấp một NumPy BitGenerator để sử dụng, hoặc một seed để khởi tạo bộ tạo ngẫu nhiên mặc định của NumPy (PCG64).
set_format
< source >( type: typing.Optional[str] = Nonecolumns: typing.Optional[list] = Noneoutput_all_columns: bool = False**format_kwargs )
Tham số
- type (
str, tùy chọn) — Loại đầu ra được chọn trong[None, 'numpy', 'torch', 'tensorflow', 'jax', 'arrow', 'pandas', 'polars'].Nonecó nghĩa là__getitem__trả về các đối tượng python (mặc định). - columns (
list[str], tùy chọn) — Các cột cần định dạng trong đầu ra.Nonecó nghĩa là__getitem__trả về tất cả các cột (mặc định). - output_all_columns (
bool, mặc định là False) — Giữ lại cả các cột chưa được định dạng trong đầu ra (dưới dạng đối tượng python), - **format_kwargs (các tham số từ khóa bổ sung) —
Các tham số từ khóa được truyền cho hàm chuyển đổi như
np.array,torch.tensorhoặctensorflow.ragged.constant.
Định dạng trả về của __getitem__ (kiểu và các cột).
Định dạng được thiết lập cho mọi tập dữ liệu trong từ điển tập dữ liệu.
Bạn có thể gọi map sau khi gọi set_format. Vì map có thể thêm các cột mới, nên danh sách các cột đã được định dạng sẽ được cập nhật. Trong trường hợp này, nếu bạn áp dụng map lên một dataset để thêm một cột mới, thì cột này sẽ được định dạng:
new formatted columns = (all columns - previously unformatted columns)
Ví dụ:
>>> 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'}Đặt lại định dạng trả về của __getitem__ thành các đối tượng python và tất cả các cột.
Biến đổi được áp dụng cho tất cả các dataset trong từ điển dataset.
Tương tự như self.set_format()
Ví dụ:
>>> 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 )
Tham số
- type (
str, tùy chọn) — Loại đầu ra được chọn trong[None, 'numpy', 'torch', 'tensorflow', 'jax', 'arrow', 'pandas', 'polars'].Nonecó nghĩa là__getitem__trả về các đối tượng python (mặc định). - columns (
list[str], tùy chọn) — Các cột cần định dạng trong đầu ra.Nonecó nghĩa là__getitem__trả về tất cả các cột (mặc định). - output_all_columns (
bool, mặc định là False) — Giữ lại cả các cột chưa được định dạng trong đầu ra (dưới dạng đối tượng python). - **format_kwargs (các tham số từ khóa bổ sung) —
Các tham số từ khóa được truyền cho hàm chuyển đổi như
np.array,torch.tensorhoặctensorflow.ragged.constant.
Để được sử dụng trong một câu lệnh with. Đặt định dạng trả về của __getitem__ (kiểu và các cột).
Biến đổi được áp dụng cho tất cả các tập dữ liệu trong từ điển tập dữ liệu.
with_format
< source >( type: typing.Optional[str] = Nonecolumns: typing.Optional[list] = Noneoutput_all_columns: bool = False**format_kwargs )
Tham số
- type (
str, tùy chọn) — Loại đầu ra được chọn trong[None, 'numpy', 'torch', 'tensorflow', 'jax', 'arrow', 'pandas', 'polars'].Nonecó nghĩa là__getitem__trả về các đối tượng python (mặc định). - columns (
list[str], tùy chọn) — Các cột cần định dạng trong đầu ra.Nonecó nghĩa là__getitem__trả về tất cả các cột (mặc định). - output_all_columns (
bool, mặc định làFalse) — Giữ lại cả các cột chưa được định dạng trong đầu ra (dưới dạng đối tượng python). - **format_kwargs (các tham số từ khóa bổ sung) —
Các tham số từ khóa được truyền cho hàm chuyển đổi như
np.array,torch.tensorhoặctensorflow.ragged.constant.
Định dạng trả về của __getitem__ (kiểu và các cột). Việc định dạng dữ liệu được áp dụng theo thời gian thực.
Định dạng type (ví dụ “numpy”) được dùng để định dạng các lô dữ liệu khi sử dụng __getitem__.
Định dạng được thiết lập cho mọi tập dữ liệu trong từ điển tập dữ liệu.
Bạn cũng có thể sử dụng các transform tùy chỉnh để định dạng bằng with_transform().
Ngược lại với set_format(), with_format trả về một đối tượng DatasetDict mới với các đối tượng Dataset mới.
Ví dụ:
>>> 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 )
Tham số
- transform (
Callable, tùy chọn) — Biến đổi định dạng do người dùng định nghĩa, thay thế định dạng được định nghĩa bởi set_format(). Hàm định dạng là một callable nhận một batch (dưới dạng dict) làm đầu vào và trả về một batch. Hàm này được áp dụng ngay trước khi trả về các đối tượng trong__getitem__. - columns (
list[str], tùy chọn) — Các cột cần định dạng trong đầu ra. Nếu được chỉ định, thì lô đầu vào của phép biến đổi chỉ chứa các cột đó. - output_all_columns (
bool, mặc định là False) — Giữ lại các cột chưa được định dạng trong đầu ra (dưới dạng đối tượng python). Nếu đặt thànhTrue, các cột chưa được định dạng khác sẽ được giữ lại cùng với kết quả của phép biến đổi.
Định dạng trả về của __getitem__ bằng cách sử dụng transform này. Transform được áp dụng trực tiếp trên các batch khi __getitem__ được gọi.
Transform được thiết lập cho mọi dataset trong từ điển dataset
Giống như set_format(), điều này có thể được đặt lại bằng reset_format().
Ngược lại với set_transform(), with_transform trả về một đối tượng DatasetDict mới với các đối tượng Dataset mới.
Ví dụ:
>>> 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])}Phẳng hóa Bảng Apache Arrow của mỗi split (các đặc trưng lồng nhau sẽ được phẳng hóa). Mỗi cột có kiểu struct sẽ được phẳng hóa thành một cột cho mỗi trường của struct. Các cột khác được giữ nguyên.
Ví dụ:
>>> 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 )
Tham số
- features (Features) —
Các tính năng mới để chuyển đổi (cast) dataset sang.
Tên và thứ tự của các trường trong features phải khớp với tên cột hiện tại.
Loại dữ liệu cũng phải có thể chuyển đổi từ loại này sang loại khác.
Đối với các phép chuyển đổi không đơn giản, ví dụ
string<->ClassLabel, bạn nên sử dụng map() để cập nhật dataset.
Đổ dataset sang một tập các đặc trưng mới. Biến đổi được áp dụng cho tất cả các dataset trong từ điển dataset.
Ví dụ:
>>> 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 )
Đổ cột sang tính năng để giải mã.
Ví dụ:
>>> 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
Tham số
Trả về
Một bản sao của đối tượng bộ dữ liệu không bao gồm các cột cần xóa.
Xóa một hoặc nhiều cột khỏi mỗi split trong dataset và các đặc trưng liên quan đến các cột đó.
Biến đổi được áp dụng cho tất cả các phần chia của từ điển bộ dữ liệu.
Bạn cũng có thể xóa một cột bằng cách sử dụng map() với remove_columns nhưng phương pháp hiện tại không sao chép dữ liệu của các cột còn lại nên nhanh hơn.
Ví dụ:
>>> 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 )
Đổi tên một cột trong dataset và di chuyển các đặc trưng liên quan đến cột gốc sang dưới tên cột mới. Biến đổi này được áp dụng cho tất cả các dataset trong từ điển dataset.
Bạn cũng có thể đổi tên một cột bằng cách sử dụng map() với remove_columns nhưng phương pháp hiện tại:
- loại bỏ các tính năng gốc dưới tên cột mới.
- không sao chép dữ liệu sang một tập dữ liệu mới và do đó nhanh hơn nhiều.
Ví dụ:
>>> 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
Tham số
Trả về
Một bản sao của bộ dữ liệu với các cột đã được đổi tên.
Đổi tên một số cột trong bộ dữ liệu, và di chuyển các đặc trưng liên quan đến các cột gốc sang dưới tên cột mới. Biến đổi này được áp dụng cho tất cả các bộ dữ liệu trong từ điển bộ dữ liệu.
Ví dụ:
>>> 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]] )
Chọn một hoặc nhiều cột từ mỗi phần chia trong bộ dữ liệu và các đặc trưng liên quan đến các cột đó.
Biến đổi được áp dụng cho tất cả các phần chia của từ điển bộ dữ liệu.
Ví dụ:
>>> 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 )
Đổ cột đã cho sang ClassLabel và cập nhật các bảng.
Ví dụ:
>>> 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 )
Tham số
- repo_id (
str) — ID của kho cần đẩy lên, theo định dạng:<user>/<dataset_name>hoặc<org>/<dataset_name>. Cũng chấp nhận<dataset_name>, mặc định sẽ dùng namespace của người dùng đang đăng nhập.Nó cũng có thể là một vị trí bên trong một bucket, ví dụ
buckets/<user_or_org>/<bucket_name>/... - config_name (
str) — Tên cấu hình của một tập dữ liệu. Mặc định là “default”. - set_default (
bool, tùy chọn) — Có nên đặt cấu hình này làm cấu hình mặc định hay không. Nếu không, cấu hình mặc định sẽ là cấu hình có tên “default”. - data_dir (
str, tùy chọn) — Tên thư mục sẽ chứa các tệp dữ liệu đã tải lên. Mặc định làconfig_namenếu khác “default”, nếu không thì là “data”.Được thêm vào 2.17.0
- commit_message (
str, tùy chọn) — Thông điệp để commit khi đẩy. Mặc định là"Upload dataset". - commit_description (
str, tuỳ chọn) — Mô tả của commit sẽ được tạo. Ngoài ra, mô tả của PR nếu một PR được tạo (create_prlà True).Được thêm vào 2.16.0
- private (
bool, optional) — Xác định có làm cho kho (repo) ở chế độ riêng tư hay không. Nếu làNone(mặc định), kho sẽ ở chế độ công khai trừ khi mặc định của tổ chức là riêng tư. Giá trị này bị bỏ qua nếu kho đã tồn tại. - token (
str, tùy chọn) — Một token xác thực tùy chọn cho Hugging Face Hub. Nếu không truyền token, hệ thống sẽ mặc định sử dụng token được lưu cục bộ khi đăng nhập bằnghf auth login. Sẽ gây ra lỗi nếu không truyền token và người dùng chưa đăng nhập. - revision (
str, tuỳ chọn) — Branch để đẩy các tệp đã tải lên. Mặc định là branch"main".Được thêm vào 2.15.0
- create_pr (
bool, tuỳ chọn, mặc định làFalse) — Liệu có tạo PR với các tệp đã tải lên hay commit trực tiếp.Được thêm vào 2.15.0
- max_shard_size (
inthoặcstr, tùy chọn, mặc định là"500MB") — Kích thước tối đa của các shard dữ liệu sẽ được tải lên hub. Nếu biểu diễn dưới dạng chuỗi, cần là các chữ số theo sau bởi một đơn vị (chẳng hạn"500MB"hoặc"1GB"). - num_shards (
Dict[str, int], tuỳ chọn) — Số lượng shard cần ghi. Mặc định, số lượng shard phụ thuộc vàomax_shard_size. Sử dụng từ điển để định nghĩa num_shards khác nhau cho mỗi split.Được thêm vào 2.8.0
- embed_external_files (
bool, mặc định làTrue) — Có nên nhúng byte của tệp vào các shard hay không. Cụ thể, trước khi push, thao tác này sẽ thực hiện các bước sau cho các trường có kiểu: - num_proc (
int, tùy chọn, mặc định làNone) — Số lượng tiến trình khi chuẩn bị và tải lên dataset. Điều này hữu ích nếu dataset bao gồm nhiều mẫu hoặc tệp media cần nhúng. I sử dụng ngữ cảnh “spawn” để hoạt động với hf_xet, client rust cho việc tải lên HF nhanh chóng. Multiprocessing bị vô hiệu hóa theo mặc định.Được thêm vào 4.0.0
Đẩy DatasetDict lên hub dưới dạng tập dữ liệu Parquet. DatasetDict được đẩy bằng các yêu cầu HTTP và không cần cài đặt git hoặc git-lfs.
Mỗi phần chia của bộ dữ liệu sẽ được đẩy lên độc lập. Bộ dữ liệu được đẩy lên sẽ giữ nguyên tên các phần chia ban đầu.
Các tệp Parquet kết quả mặc định là tự chứa: nếu tập dữ liệu của bạn chứa dữ liệu Image hoặc Audio, các tệp Parquet sẽ lưu trữ các byte của hình ảnh hoặc tệp âm thanh của bạn.
Bạn có thể tắt điều này bằng cách đặt embed_external_files thành False.
Ví dụ:
>>> 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})Nếu bạn muốn thêm một cấu hình (hoặc tập con) mới vào một tập dữ liệu (ví dụ: nếu tập dữ liệu có nhiều tác bản/phân bản/ngôn ngữ):
>>> 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 )
Tham số
- dataset_dict_path (
path-like) — Đường dẫn (ví dụ:dataset/train) hoặc URI từ xa (ví dụ:s3://my-bucket/dataset/train) của thư mục dataset dict, nơi dataset dict sẽ được lưu. - max_shard_size (
inthoặcstr, tùy chọn, mặc định là"500MB") — Kích thước tối đa của các shard dataset sẽ được lưu vào hệ thống tệp. Nếu được biểu diễn dưới dạng chuỗi, cần phải là các chữ số theo sau bởi một đơn vị (ví dụ"50MB"). - num_shards (
Dict[str, int], tùy chọn) — Số lượng shard cần ghi. Mặc định, số lượng shard phụ thuộc vàomax_shard_sizevànum_proc. Bạn cần cung cấp số lượng shard cho từng dataset trong từ điển dataset. Sử dụng từ điển để định nghĩa num_shards khác nhau cho mỗi split.Được thêm vào 2.8.0
- num_proc (
int, tùy chọn, mặc địnhNone) — Số lượng tiến trình khi tải xuống và tạo dataset cục bộ. Multiprocessing bị tắt theo mặc định.Được thêm vào 2.8.0
- storage_options (
dict, tùy chọn) — Các cặp khóa/giá trị được truyền đến backend hệ thống tệp, nếu có.Được thêm vào 2.8.0
Lưu một dict dataset vào hệ thống tệp bằng fsspec.spec.AbstractFileSystem.
Đối với dữ liệu Image, Audio và Video:
Tất cả dữ liệu Image(), Audio() và Video() được lưu trữ trong các tệp arrow. Nếu bạn muốn lưu trữ đường dẫn hoặc url, vui lòng sử dụng kiểu 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 )
Tham số
- dataset_dict_path (
path-like) — Đường dẫn (ví dụ:"dataset/train") hoặc URI từ xa (ví dụ:"s3//my-bucket/dataset/train") của thư mục dataset dict, nơi dataset dict sẽ được tải từ đó. - keep_in_memory (
bool, mặc định làNone) — Có sao chép bộ dữ liệu trong bộ nhớ hay không. Nếu làNone, bộ dữ liệu sẽ không được sao chép trong bộ nhớ trừ khi được bật rõ ràng bằng cách đặtdatasets.config.IN_MEMORY_MAX_SIZEkhác không. Xem thêm chi tiết trong phần cải thiện hiệu suất. - storage_options (
dict, tùy chọn) — Các cặp khóa/giá trị được truyền đến backend hệ thống tệp, nếu có.Được thêm vào 2.8.0
Tải một tập dữ liệu đã được lưu trước đó bằng save_to_disk từ hệ thống tệp bằng 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 )
Tham số
- path_or_paths (
dictcủa path-like) — Đường dẫn của tệp CSV. - features (Features, tùy chọn) — Các đặc trưng của tập dữ liệu.
- cache_dir (str, tùy chọn, mặc định là
"~/.cache/huggingface/datasets") — Thư mục để lưu trữ bộ nhớ đệm dữ liệu. - keep_in_memory (
bool, mặc định làFalse) — Có sao chép dữ liệu trong bộ nhớ hay không. - **kwargs (các tham số từ khóa bổ sung) —
Các tham số từ khóa được truyền cho
pandas.read_csv.
Tạo DatasetDict từ tệp CSV.
from_json
< source >( path_or_paths: dictfeatures: typing.Optional[datasets.features.features.Features] = Nonecache_dir: str = Nonekeep_in_memory: bool = False**kwargs )
Tham số
- path_or_paths (
path-likehoặc danh sáchpath-like) — Đường dẫn của tệp JSON Lines. - features (Features, tùy chọn) — Các đặc trưng của tập dữ liệu.
- cache_dir (str, tùy chọn, mặc định là
"~/.cache/huggingface/datasets") — Thư mục để lưu trữ bộ nhớ đệm dữ liệu. - keep_in_memory (
bool, mặc định làFalse) — Có sao chép dữ liệu trong bộ nhớ hay không. - **kwargs (các tham số từ khóa bổ sung) —
Các tham số từ khóa sẽ được truyền vào
JsonConfig.
Tạo DatasetDict từ tệp 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 )
Tham số
- path_or_paths (
dictcủa path-like) — Đường dẫn của tệp CSV. - features (Features, tùy chọn) — Các đặc trưng của tập dữ liệu.
- cache_dir (
str, tùy chọn, mặc định là"~/.cache/huggingface/datasets") — Thư mục để lưu trữ bộ nhớ đệm dữ liệu. - keep_in_memory (
bool, mặc định làFalse) — Có sao chép dữ liệu trong bộ nhớ hay không. - columns (
list[str], tùy chọn) — Nếu không phảiNone, chỉ các cột này sẽ được đọc từ tệp. Tên cột có thể là tiền tố của một trường lồng nhau, ví dụ ‘a’ sẽ chọn ‘a.b’, ‘a.c’, và ‘a.d.e’. - **kwargs (các tham số từ khóa bổ sung) —
Các tham số từ khóa sẽ được truyền vào
ParquetConfig.
Tạo DatasetDict từ tệp Parquet.
from_text
< source >( path_or_paths: dictfeatures: typing.Optional[datasets.features.features.Features] = Nonecache_dir: str = Nonekeep_in_memory: bool = False**kwargs )
Tham số
- path_or_paths (
dictcủa path-like) — Đường dẫn của tệp văn bản. - features (Features, tùy chọn) — Các đặc trưng của tập dữ liệu.
- cache_dir (
str, tùy chọn, mặc định là"~/.cache/huggingface/datasets") — Thư mục để lưu trữ bộ nhớ đệm dữ liệu. - keep_in_memory (
bool, mặc định làFalse) — Có sao chép dữ liệu trong bộ nhớ hay không. - **kwargs (các tham số từ khóa bổ sung) —
Các tham số từ khóa sẽ được truyền vào
TextConfig.
Tạo DatasetDict từ tệp văn bản.
IterableDataset
Lớp cơ sở IterableDataset triển khai một Dataset có thể lặp lại, được hỗ trợ bởi các trình tạo python.
lớp 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 )
Một Dataset được hỗ trợ bởi một iterable.
Tạo một IterableDataset từ bảng Arrow tại tệp có tên filename.
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 )
Tham số
- df (
pandas.DataFrame) — Dataframe chứa bộ dữ liệu. - features (Features, tùy chọn) — Các đặc trưng của tập dữ liệu.
- info (
DatasetInfo, tùy chọn) — Thông tin về bộ dữ liệu, chẳng hạn như mô tả, trích dẫn, v.v. - split (
NamedSplit, tuỳ chọn) — Tên của phần chia bộ dữ liệu. - preserve_index (
bool, tùy chọn) — Có lưu trữ chỉ mục như một cột bổ sung trong Dataset kết quả hay không. Giá trị mặc địnhNonesẽ lưu trữ chỉ mục như một cột, ngoại trừRangeIndexchỉ được lưu trữ dưới dạng metadata. Sử dụngpreserve_index=Trueđể buộc lưu trữ dưới dạng cột. - num_shards (
int, mặc định là1) — Số lượng shard cần định nghĩa khi khởi tạo bộ dữ liệu dạng iterable. Điều này đặc biệt hữu ích cho các bộ dữ liệu lớn để có thể xáo trộn (shuffle) đúng cách, và cũng cho phép tải song song nhanh chóng bằng PyTorch DataLoader hoặc trong các cấu hình phân tán, chẳng hạn.
Chuyển đổi pandas.DataFrame thành pyarrow.Table để tạo một IterableDataset.
Các kiểu cột trong Arrow Table kết quả được suy ra từ dtypes của pandas.Series trong DataFrame. Đối với các Series không phải object, NumPy dtype được chuyển đổi sang tương đương Arrow của nó. Đối với object, chúng ta cần đoán kiểu dữ liệu bằng cách xem xét các đối tượng Python trong Series này.
Lưu ý rằng các Series có dtype object không chứa đủ thông tin để luôn dẫn đến một kiểu Arrow có ý nghĩa. Trong trường hợp không thể suy luận được kiểu, ví dụ vì DataFrame có độ dài 0 hoặc Series chỉ chứa các đối tượng None/nan, kiểu sẽ được đặt thành null. Có thể tránh hành vi này bằng cách xây dựng các feature rõ ràng và truyền chúng vào hàm này.
Quan trọng: một dataset được tạo bằng from_pandas() sẽ nằm trong bộ nhớ. Điều này có thể thay đổi trong tương lai, nhưng trong lúc chờ đợi, nếu bạn muốn giảm mức sử dụng bộ nhớ thì nên ghi nó ra đĩa và tải lại bằng cách sử dụng ví dụ 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 )
Tham số
- mapping (
Mapping) — Bản ánh xạ từ chuỗi sang các mảng hoặc danh sách Python. - features (Features, tùy chọn) — Các đặc trưng của tập dữ liệu.
- info (
DatasetInfo, tùy chọn) — Thông tin về bộ dữ liệu, chẳng hạn như mô tả, trích dẫn, v.v. - split (
NamedSplit, tuỳ chọn) — Tên của phần chia bộ dữ liệu. - num_shards (
int, mặc định là1) — Số lượng shard cần định nghĩa khi khởi tạo bộ dữ liệu dạng iterable. Điều này đặc biệt hữu ích cho các bộ dữ liệu lớn để có thể xáo trộn (shuffle) đúng cách, và cũng cho phép tải song song nhanh chóng bằng PyTorch DataLoader hoặc trong các cấu hình phân tán, chẳng hạn.
Chuyển đổi dict thành pyarrow.Table để tạo một IterableDataset.
Quan trọng: một dataset được tạo bằng from_dict() sẽ nằm trong bộ nhớ. Điều này có thể thay đổi trong tương lai, nhưng trong lúc đó nếu bạn muốn giảm mức sử dụng bộ nhớ thì nên ghi lại xuống đĩa và tải lại bằng cách sử dụng ví dụ 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 )
Tham số
- mapping (
List[dict]) — Một danh sách các ánh xạ từ chuỗi sang giá trị hàng. - features (
Features, tùy chọn) — Các đặc trưng của tập dữ liệu. - info (
DatasetInfo, optional) — Thông tin về bộ dữ liệu, chẳng hạn như mô tả, trích dẫn, v.v. - split (
NamedSplit, tùy chọn) — Tên của phần chia bộ dữ liệu. - num_shards (
int, mặc định là1) — Số lượng shard cần định nghĩa khi khởi tạo bộ dữ liệu dạng iterable. Điều này đặc biệt hữu ích cho các bộ dữ liệu lớn để có thể xáo trộn (shuffle) đúng cách, và cũng cho phép tải song song nhanh chóng bằng PyTorch DataLoader hoặc trong các cấu hình phân tán, chẳng hạn.
Chuyển đổi một danh sách các dict thành một pyarrow.Table để tạo một IterableDataset`
Lưu ý rằng các khóa của mục đầu tiên sẽ được sử dụng để xác định các cột của bộ dữ liệu, bất kể giá trị nào được truyền vào features.
Quan trọng: một dataset được tạo bằng from_list() sẽ nằm trong bộ nhớ. Điều này có thể thay đổi trong tương lai, nhưng trong lúc đó nếu bạn muốn giảm mức sử dụng bộ nhớ thì nên ghi lại xuống đĩa và tải lại bằng cách sử dụng ví dụ 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') )
Tham số
- generator (
Callable) — Hàm generatoryieldscác ví dụ. - features (
Features, tùy chọn) — Các đặc trưng của tập dữ liệu. - gen_kwargs(
dict, tùy chọn) — Các đối số từ khóa để truyền cho callablegenerator. Bạn có thể định nghĩa một tập dữ liệu lặp lại phân mảnh bằng cách truyền danh sách các phân mảnh tronggen_kwargs. Điều này có thể được sử dụng để cải thiện việc xáo trộn và khi lặp qua tập dữ liệu với nhiều worker. - split (NamedSplit, mặc định là
Split.TRAIN) — Tên split được gán cho dataset.Được thêm vào 2.21.0
Tạo một Iterable Dataset từ một generator.
Ví dụ:
>>> 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
Xóa một hoặc nhiều cột trong bộ dữ liệu cùng với các đặc trưng liên quan đến chúng. Việc xóa được thực hiện trực tiếp trên các ví dụ khi lặp qua bộ dữ liệu.
Ví dụ:
>>> 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
Chọn một hoặc nhiều cột trong bộ dữ liệu cùng các đặc trưng liên quan đến chúng. Việc chọn lọc được thực hiện trực tiếp trên các ví dụ khi lặp qua bộ dữ liệu.
Ví dụ:
>>> 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
Đổ cột sang tính năng để giải mã.
Ví dụ:
>>> 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
Tham số
- features (Features) —
Các tính năng mới để chuyển đổi (cast) dataset sang.
Tên của các trường trong features phải khớp với tên cột hiện tại.
Loại dữ liệu cũng phải có thể chuyển đổi từ loại này sang loại khác.
Đối với các phép chuyển đổi không đơn giản, ví dụ
string<->ClassLabel, bạn nên sử dụng map() để cập nhật Dataset.
Trả về
IterableDataset
Một bản sao của bộ dữ liệu với các đặc trưng đã được chuyển đổi kiểu.
Đổ khuôn (cast) bộ dữ liệu sang một tập tính năng mới.
Ví dụ:
>>> 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
Tham số
- enable (
bool, mặc định làTrue) — Bật hoặc tắt giải mã tính năng. - num_threads (
int, tùy chọn, mặc định làNone) — Bật đa luồng cho việc giải mã các đặc trưng. Lưu ý rằng load_dataset() mặc định đã sử dụng một vài luồng khi stream một dataset trên HF có các đặc trưng có thể giải mã. Mặc định,num_threadsđược đặt thành 32 nếu ít nhất một đặc trưng yêu cầu giải mã, và 0 trong trường hợp ngược lại.
Trả về
IterableDataset
Một bản sao của bộ dữ liệu với các đặc trưng đã được chuyển đổi kiểu.
Bật hoặc tắt việc giải mã các tính năng của bộ dữ liệu cho âm thanh, hình ảnh, video.
Khi được bật (mặc định), các loại phương tiện sẽ được giải mã:
- audio -> dict của “array” và “sampling_rate” và “path”
- image -> PIL.Image
- video -> torchcodec.decoders.VideoDecoder
Có thể bật đa luồng bằng num_threads: khi đó, mỗi tệp phương tiện sẽ được đọc và giải mã trong một luồng worker, giúp các lượt đi về mạng của các ví dụ liên tiếp được chồng lên nhau. Điều này đặc biệt hữu ích để tăng tốc việc phát trực tiếp dữ liệu từ xa, và load_dataset() đã bật tính năng này theo mặc định khi phát trực tiếp một tập dữ liệu từ xa có các đặc trưng có thể giải mã (xem HF_DATASETS_DECODE_NUM_THREADS). Các tập dữ liệu được đọc từ ổ đĩa cục bộ sẽ được phát trực tiếp với num_threads=0, vì đa luồng có thể chậm hơn so với việc giải mã trong luồng chính đối với dữ liệu cục bộ trên các ổ đĩa nhanh. Vì các ví dụ được giải mã trước, mỗi luồng đang chạy có thể giữ một ví dụ trong bộ nhớ: hãy giảm num_threads để sử dụng ít bộ nhớ hơn.
Việc tắt giải mã hữu ích nếu bạn muốn lặp lại trên các đường dẫn hoặc byte của các tệp media mà không thực sự giải mã nội dung của chúng. Để tắt giải mã, bạn có thể sử dụng .decode(False), tương đương với việc gọi .cast() hoặc .cast_column() với tất cả các kiểu Audio, Image và Video được đặt thành decode=False.
Ví dụ:
Tắt giải mã:
>>> 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.'
}Tăng tốc độ streaming bằng đa luồng:
>>> 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 )
Lặp qua các lô có kích thước 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 )
Tham số
- function (
Callable, tuỳ chọn, mặc định làNone) — Hàm được áp dụng trực tiếp lên các ví dụ khi bạn lặp qua dataset. Nó phải có một trong các chữ ký sau:function(example: Dict[str, Any]) -> Dict[str, Any]nếubatched=Falsevàwith_indices=Falsefunction(example: Dict[str, Any], idx: int) -> Dict[str, Any]nếubatched=Falsevàwith_indices=Truefunction(batch: Dict[str, List]) -> Dict[str, List]nếubatched=Truevàwith_indices=Falsefunction(batch: Dict[str, List], indices: List[int]) -> Dict[str, List]nếubatched=Truevàwith_indices=True
Đối với cách sử dụng nâng cao, hàm cũng có thể trả về một
pyarrow.Table. Nếu hàm là bất đồng bộ, thìmapsẽ chạy hàm của bạn song song. Hơn nữa, nếu hàm của bạn không trả về gì (None), thìmapsẽ chạy hàm của bạn và trả về dataset không thay đổi. Nếu không cung cấp hàm, mặc định dùng hàm đồng nhất:lambda x: x. - with_indices (
bool, mặc định làFalse) — Cung cấp các chỉ mục ví dụ chofunction. Lưu ý rằng trong trường hợp này, chữ ký củafunctionphải làdef function(example, idx[, rank]): .... - input_columns (
Optional[Union[str, List[str]]], mặc định làNone) — Các cột được truyền vàofunctiondưới dạng các đối số vị trí. Nếu làNone, một dict ánh xạ đến tất cả các cột đã được định dạng sẽ được truyền dưới dạng một đối số duy nhất. - batched (
bool, mặc định làFalse) — Cung cấp một lô các ví dụ chofunction. - batch_size (
int, tùy chọn, mặc định là1000) — Số lượng ví dụ trong mỗi batch được cung cấp chofunctionnếubatched=True. Nếubatch_size <= 0hoặcbatch_size == Nonethì toàn bộ tập dữ liệu sẽ được cung cấp như một batch duy nhất chofunction. - drop_last_batch (
bool, mặc định làFalse) — Liệu một batch cuối nhỏ hơn batch_size có nên bị loại bỏ thay vì được xử lý bởi hàm hay không. - remove_columns (
[List[str]], tùy chọn, mặc định làNone) — Xóa một tập các cột trong khi thực hiện ánh xạ. Các cột sẽ bị xóa trước khi cập nhật các ví dụ bằng kết quả đầu ra củafunction, tức là nếufunctionthêm các cột có tên nằm trongremove_columns, các cột này sẽ được giữ lại. - features (
[Features], tùy chọn, mặc định làNone) — Các kiểu đặc trưng của bộ dữ liệu kết quả. - fn_kwargs (
Dict, tùy chọn, mặc địnhNone) — Các đối số dạng từ khóa để truyền chofunction.
Áp dụng một hàm lên tất cả các ví dụ trong tập dữ liệu dạng lặp (riêng lẻ hoặc theo lô) và cập nhật chúng. Nếu hàm của bạn trả về một cột đã tồn tại, thì nó sẽ ghi đè lên cột đó. Hàm được áp dụng trực tiếp lên các ví dụ khi lặp qua tập dữ liệu.
Bạn có thể chỉ định xem hàm có nên được xử lý theo lô (batched) hay không bằng tham số batched:
- Nếu
False, thì hàm nhận vào 1 ví dụ và phải trả về 1 ví dụ. Một ví dụ là một từ điển, ví dụ{"text": "Hello there !"}. - Nếu
Truevàbatch_sizelà 1, thì hàm nhận vào một batch gồm 1 ví dụ và có thể trả về một batch gồm 1 hoặc nhiều hơn các ví dụ. Một batch là một từ điển, ví dụ một batch gồm 1 ví dụ là {“text”: [“Hello there !”]}. - Nếu
Truevàbatch_sizelàn> 1, thì hàm nhận vào một batch gồmnví dụ và có thể trả về một batch gồmnví dụ, hoặc một số lượng ví dụ bất kỳ. Lưu ý rằng batch cuối cùng có thể có ít hơnnví dụ. Một batch là một từ điển, ví dụ một batch gồmnví dụ là{"text": ["Hello there !"] * n}.
Nếu hàm là bất đồng bộ, thì map sẽ chạy hàm của bạn song song, với tối đa một nghìn cuộc gọi đồng thời.
Khuyến nghị sử dụng asyncio.Semaphore trong hàm của bạn nếu bạn muốn đặt số lượng tối đa các thao tác có thể chạy cùng một lúc.
Ví dụ:
>>> 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
Đổi tên một cột trong bộ dữ liệu, và di chuyển các đặc trưng liên quan đến cột gốc sang dưới tên cột mới.
Ví dụ:
>>> 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 .'}lọc
< 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 )
Tham số
- function (
Callable) — Callable có một trong các chữ ký sau:function(example: Dict[str, Any]) -> boolnếuwith_indices=False, batched=Falsefunction(example: Dict[str, Any], indices: int) -> boolnếuwith_indices=True, batched=Falsefunction(example: Dict[str, List]) -> List[bool]nếuwith_indices=False, batched=Truefunction(example: Dict[str, List], indices: List[int]) -> List[bool]nếuwith_indices=True, batched=True
Nếu hàm là bất đồng bộ, thì
filtersẽ chạy hàm của bạn song song. Nếu không cung cấp hàm nào, mặc định sẽ là một hàm luôn trả về True:lambda x: True. - with_indices (
bool, mặc định làFalse) — Cung cấp các chỉ mục ví dụ chofunction. Lưu ý rằng trong trường hợp này, chữ ký củafunctionphải làdef function(example, idx): .... - input_columns (
strhoặcList[str], tùy chọn) — Các cột được truyền vàofunctiondưới dạng các đối số vị trí. Nếu làNone, một dict ánh xạ đến tất cả các cột đã định dạng sẽ được truyền dưới dạng một đối số duy nhất. - batched (
bool, mặc định làFalse) — Cung cấp một lô các ví dụ chofunction. - batch_size (
int, tùy chọn, mặc định1000) — Số lượng ví dụ trong mỗi batch được cung cấp chofunctionnếubatched=True. - fn_kwargs (
Dict, tùy chọn, mặc địnhNone) — Các đối số dạng từ khóa để truyền chofunction.
Áp dụng một hàm lọc lên tất cả các phần tử để tập dữ liệu chỉ bao gồm các ví dụ theo hàm lọc đó. Việc lọc được thực hiện theo thời gian thực khi lặp qua tập dữ liệu.
Nếu hàm là bất đồng bộ, thì filter sẽ chạy hàm của bạn song song, với tối đa một nghìn cuộc gọi đồng thời (có thể cấu hình).
Khuyến nghị sử dụng asyncio.Semaphore trong hàm của bạn nếu bạn muốn đặt số lượng tối đa các thao tác có thể chạy cùng một lúc.
Ví dụ:
>>> 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 )
Tham số
- seed (
int, tùy chọn, mặc định làNone) — Hạt ngẫu nhiên sẽ được sử dụng để xáo trộn bộ dữ liệu. Nó được dùng để lấy mẫu từ bộ đệm xáo trộn và cũng để xáo trộn các mảnh dữ liệu. - generator (
numpy.random.Generator, tùy chọn) — Numpy random Generator được sử dụng để tính hoán vị các dòng của tập dữ liệu. Nếugenerator=None(mặc định), sẽ sử dụngnp.random.default_rng(BitGenerator mặc định (PCG64) của NumPy). - buffer_size (
int, mặc định là1000) — Kích thước của bộ đệm. - max_buffer_input_shards (
int, mặc định là10) — Số lượng shard tối đa được sử dụng để nạp vào buffer mỗi lần.
Trộn ngẫu nhiên các phần tử của tập dữ liệu này.
Bộ dữ liệu này điền một bộ đệm với buffer_size phần tử, sau đó lấy mẫu ngẫu nhiên các phần tử từ bộ đệm này, thay thế các phần tử được chọn bằng các phần tử mới. Để xáo trộn hoàn hảo, kích thước bộ đệm phải lớn hơn hoặc bằng kích thước đầy đủ của bộ dữ liệu.
Ví dụ, nếu tập dữ liệu của bạn chứa 10.000 phần tử nhưng buffer_size được đặt là 1000, thì shuffle ban đầu sẽ chọn một phần tử ngẫu nhiên từ chỉ 1000 phần tử đầu tiên trong bộ đệm. Khi một phần tử được chọn, vị trí của nó trong bộ đệm sẽ được thay thế bằng phần tử tiếp theo (tức là phần tử thứ 1.001), duy trì bộ đệm 1000 phần tử.
Nếu tập dữ liệu được tạo từ nhiều shard, nó sẽ lấp đầy bộ đệm bằng cách sử dụng tối đa max_buffer_input_shards shard
một lúc và cũng xáo trộn thứ tự của các shard. Điều này cải thiện đáng kể chất lượng của việc xáo trộn.
Các shard đầu vào được xen kẽ trong mỗi node và worker, giữ nguyên số lượng shard có sẵn
cho việc tải dữ liệu song song.
Tuy nhiên, nếu thứ tự đã được cố định bằng cách sử dụng skip() hoặc take(), thì thứ tự của các shard sẽ được giữ nguyên và chỉ một shard tại một thời điểm được sử dụng để lấp đầy bộ đệm.
Ví dụ:
>>> 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}]batch
< source >( batch_size: typing.Optional[int] = Noneby_column: typing.Union[str, list[str], NoneType] = Nonedrop_last_batch: bool = False )
Tham số
- batch_size (
int, tùy chọn) — Số lượng mẫu trong mỗi batch. - by_column (
Union[str, list[str], tùy chọn) — Cột được sử dụng để nhóm các ví dụ thành từng lô. Các ví dụ liên tiếp có cùng giá trị cho cột đó sẽ được nhóm vào cùng một lô. Đây cũng có thể là một danh sách các cột nếu bạn muốn nhóm theo nhiều cột. Nếu nhóm theo cột, batch_size chỉ được dùng để kiểm soát kích thước của các lô cần nhóm lại hoặc cắt trong quá trình tích lũy.Được thêm vào 4.9.0
- drop_last_batch (
bool, mặc định làFalse) — Có nên loại bỏ lô cuối cùng không hoàn chỉnh hay không.
Nhóm các mẫu từ tập dữ liệu thành các lô (batches).
Tạo một IterableDataset mới bỏ qua n phần tử đầu tiên.
Ví dụ:
>>> 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 .'}]Tạo một IterableDataset mới chỉ chứa n phần tử đầu tiên.
Ví dụ:
>>> 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 .'}]shard
< source >( num_shards: intindex: intcontiguous: bool = True )
Trả về shard thứ index từ tập dữ liệu được chia thành num_shards phần.
Quá trình chia shard này là tất định. dataset.shard(n, i) chia bộ dữ liệu thành các khối liên tục,
nên có thể dễ dàng nối lại sau khi xử lý. Nếu dataset.num_shards % n == l, thì
l bộ dữ liệu đầu tiên mỗi bộ có (dataset.num_shards // n) + 1 shard, và các bộ dữ liệu còn lại có (dataset.num_shards // n) shard. datasets.concatenate_datasets([dset.shard(n, i) for i in range(n)]) trả về một bộ dữ liệu có cùng thứ tự như ban đầu.
Cụ thể, dataset.shard(dataset.num_shards, i) trả về một bộ dữ liệu có 1 shard.
Lưu ý: n phải nhỏ hơn hoặc bằng số lượng shard trong dataset dataset.num_shards.
Mặt khác, dataset.shard(n, i, contiguous=False) chứa tất cả các shard của tập dữ liệu có chỉ số mod n = i.
Hãy đảm bảo thực hiện chia shard trước khi sử dụng bất kỳ toán tử ngẫu nhiên hóa nào (chẳng hạn như shuffle).
Tốt nhất là toán tử shard nên được sử dụng sớm trong pipeline của dataset.
Ví dụ:
>>> 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
})Tái chia (reshard) bộ dữ liệu nếu có thể, tức là chia nhỏ các shard hiện tại thành nhiều shard hơn. Điều này làm tăng số lượng shard và bộ dữ liệu kết quả sẽ có num_shards >= previous_num_shards. Trường hợp bằng nhau có thể xảy ra nếu không shard nào có thể được chia nhỏ hơn nữa.
Cơ chế resharding phụ thuộc vào định dạng tệp của tập dữ liệu:
- Parquet: chia shard theo từng nhóm hàng thay vì theo từng tệp
- Vortex: chia shard theo từng khoảng các chunk liên tiếp (mỗi khoảng chứa khoảng 64MB dữ liệu tệp) thay vì theo từng tệp
- Khác: chưa được triển khai (chúng tôi hoan nghênh các đóng góp!)
Hãy đảm bảo thực hiện reshard/shard trước khi sử dụng bất kỳ toán tử ngẫu nhiên hóa nào (chẳng hạn như shuffle).
Tốt nhất là toán tử shard nên được sử dụng sớm trong pipeline của dataset.
Ví dụ:
>>> 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
})repeat
< source >( num_times: typing.Optional[int] )
Tạo một IterableDataset mới lặp lại tập dữ liệu cơ bản num_times lần.
Đầu vào rỗng sẽ kết thúc ngay cả khi num_times là None.
N.B. Tác động của việc gọi shuffle sau repeat phụ thuộc đáng kể vào kích thước buffer. Với buffer_size 1, dữ liệu trùng lặp không bao giờ xuất hiện trong cùng một lần lặp, ngay cả sau khi shuffle: ds.repeat(n).shuffle(seed=42, buffer_size=1) tương đương với ds.shuffle(seed=42, buffer_size=1).repeat(n), và chỉ shuffle thứ tự các shard trong mỗi lần lặp. Với kích thước buffer >= (số mẫu trong dataset * num_times), chúng ta có được việc shuffle toàn bộ dữ liệu đã lặp, tức là chúng ta có thể quan sát thấy các bản sao trong cùng một lần lặp.
Ví dụ:
>>> 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
Tham số
- path_or_buf (
PathLikehoặcFileOrBuffer) — Là đường dẫn đến một tệp (ví dụ:file.csv), một URI từ xa (ví dụ:hf://datasets/username/my_dataset_name/data.csv), hoặc một BinaryIO, nơi bộ dữ liệu sẽ được lưu trữ theo định dạng được chỉ định. - batch_size (
int, tùy chọn) — Kích thước của batch để nạp vào bộ nhớ và ghi lại một lần. Mặc định làdatasets.config.DEFAULT_MAX_BATCH_SIZE. - storage_options (
dict, tùy chọn) — Các cặp khóa/giá trị được truyền đến hệ thống tệp nền tảng, nếu có. - **to_csv_kwargs (các tham số từ khóa bổ sung) —
Các tham số để truyền cho
pandas.DataFrame.to_csvcủa pandas. Tham sốindexmặc định làFalsenếu không được chỉ định. Nếu bạn muốn ghi chỉ mục, hãy truyềnindex=Truevà cũng đặt tên cho cột chỉ mục bằng cách truyềnindex_label.
Trả về
int
Số lượng ký tự hoặc byte đã được ghi.
Xuất bộ dữ liệu ra csv.
Quá trình này lặp qua tập dữ liệu và tải toàn bộ vào bộ nhớ trước khi ghi ra.
Trả về tập dữ liệu dưới dạng pandas.DataFrame. Cũng có thể trả về một generator cho các tập dữ liệu lớn.
to_dict
< source >( batch_size: typing.Optional[int] = Nonebatched: bool = False )
Trả về tập dữ liệu dưới dạng dict Python. Cũng có thể trả về một generator cho các tập dữ liệu lớn.
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
Tham số
- path_or_buf (
PathLikehoặcFileOrBuffer) — Là đường dẫn đến một tệp (ví dụ:file.json), một URI từ xa (ví dụ:hf://datasets/username/my_dataset_name/data.json), hoặc một BinaryIO, nơi bộ dữ liệu sẽ được lưu trữ theo định dạng được chỉ định. - batch_size (
int, tùy chọn) — Kích thước của batch để nạp vào bộ nhớ và ghi lại một lần. Mặc định làdatasets.config.DEFAULT_MAX_BATCH_SIZE. - storage_options (
dict, tùy chọn) — Các cặp khóa/giá trị được truyền đến hệ thống tệp nền tảng, nếu có. - **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`.
Trả về
int
Số lượng ký tự hoặc byte đã được ghi.
Xuất dataset ra JSON Lines hoặc JSON.
Quá trình này lặp qua tập dữ liệu và tải toàn bộ vào bộ nhớ trước khi ghi ra.
Định dạng đầu ra mặc định là JSON Lines.
Để xuất ra JSON, hãy truyền tham số lines=False và orient mong muốn.
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
Tham số
- path_or_buf (
PathLikehoặcFileOrBuffer) — Là đường dẫn đến một tệp (ví dụ:file.parquet), một URI từ xa (ví dụ:hf://datasets/username/my_dataset_name/data.parquet), hoặc một BinaryIO, nơi bộ dữ liệu sẽ được lưu trữ theo định dạng được chỉ định. - batch_size (
int, tùy chọn) — Kích thước của batch để nạp vào bộ nhớ và ghi lại một lần. Mặc định làdatasets.config.DEFAULT_MAX_BATCH_SIZE. - storage_options (
dict, tùy chọn) — Các cặp khóa/giá trị được truyền đến backend hệ thống tệp, nếu có.Được thêm vào 2.19.0
- **parquet_writer_kwargs (các tham số bổ sung) —
Các tham số để truyền cho
pyarrow.parquet.ParquetWritercủa PyArrow.
Trả về
int
Số lượng ký tự hoặc byte đã được ghi.
Xuất bộ dữ liệu ra 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
Tham số
- name (
str) — Tên bảng SQL. - con (
strhoặcsqlite3.Connectionhoặcsqlalchemy.engine.Connectionhoặcsqlalchemy.engine.Connection) — Một chuỗi URI hoặc một đối tượng kết nối SQLite3/SQLAlchemy được sử dụng để ghi vào cơ sở dữ liệu. - batch_size (
int, tùy chọn) — Kích thước của batch để nạp vào bộ nhớ và ghi lại một lần. Mặc định làdatasets.config.DEFAULT_MAX_BATCH_SIZE. - **sql_writer_kwargs (các tham số bổ sung) —
Các tham số để truyền cho
pandas.DataFrame.to_sqlcủa pandas. Tham sốindexmặc định làFalsenếu không được chỉ định. Nếu bạn muốn ghi chỉ mục, hãy truyềnindex=Truevà cũng đặt tên cho cột chỉ mục bằng cách truyềnindex_label.
Trả về
int
Số lượng bản ghi đã được ghi.
Xuất bộ dữ liệu ra cơ sở dữ liệu 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 )
Tham số
- repo_id (
str) — ID của kho cần đẩy lên, theo định dạng:<user>/<dataset_name>hoặc<org>/<dataset_name>. Cũng chấp nhận<dataset_name>, mặc định sẽ dùng namespace của người dùng đang đăng nhập.Nó cũng có thể là một vị trí bên trong một bucket, ví dụ
buckets/<user_or_org>/<bucket_name>/... - config_name (
str, mặc định là “default”) — Tên cấu hình (hoặc tập con) của một bộ dữ liệu. Mặc định là “default”. - set_default (
bool, tùy chọn) — Có nên đặt cấu hình này làm cấu hình mặc định hay không. Nếu không, cấu hình mặc định sẽ là cấu hình có tên “default”. - split (
str, tuỳ chọn) — Tên của phần chia (split) sẽ được gán cho tập dữ liệu đó. Mặc định làself.split. - data_dir (
str, tùy chọn) — Tên thư mục sẽ chứa các tệp dữ liệu đã tải lên. Mặc định làconfig_namenếu khác “default”, nếu không thì là “data”. - commit_message (
str, tùy chọn) — Thông điệp để commit khi đẩy. Mặc định là"Upload dataset". - commit_description (
str, tùy chọn) — Mô tả của commit sẽ được tạo. Ngoài ra, mô tả của PR nếu một PR được tạo (create_prlà True). - private (
bool, optional) — Xác định có làm cho kho (repo) ở chế độ riêng tư hay không. Nếu làNone(mặc định), kho sẽ ở chế độ công khai trừ khi mặc định của tổ chức là riêng tư. Giá trị này bị bỏ qua nếu kho đã tồn tại. - token (
str, tùy chọn) — Một token xác thực tùy chọn cho Hugging Face Hub. Nếu không truyền token, hệ thống sẽ mặc định sử dụng token được lưu cục bộ khi đăng nhập bằnghf auth login. Sẽ gây ra lỗi nếu không truyền token và người dùng chưa đăng nhập. - revision (
str, tùy chọn) — Nhánh để đẩy các tệp đã tải lên. Mặc định là nhánh"main". - create_pr (
bool, tùy chọn, mặc định làFalse) — Có tạo PR với các tệp đã tải lên hay commit trực tiếp hay không. - max_shard_size (
inthoặcstr, tùy chọn) — Kích thước tối đa tùy chọn của các shard dữ liệu sẽ được tải lên hub. Nếu được biểu diễn dưới dạng chuỗi, cần là các chữ số theo sau bởi một đơn vị (ví dụ"5MB"). Nếu không được cung cấp, số lượng shard mặc định sẽ là.num_shardscủa tập dữ liệu này. - num_shards (
int, tùy chọn) — Số lượng shard cần ghi. Nếumax_shard_sizeđược cung cấp vànum_shardskhông được cung cấp, thì số lượng shard sẽ được ước tính từmax_shard_size. Giá trị này có thể lớn hơn.num_shardscủa tập dữ liệu này: khi đó, mỗi shard đầu vào sẽ được phân bổ sang nhiều shard đầu ra bằng cách ghi các ví dụ của nó vào chúng theo kiểu round-robin. - embed_external_files (
bool, mặc định làTrue) — Có nên nhúng byte của tệp vào các shard hay không. Cụ thể, trước khi push, thao tác này sẽ thực hiện các bước sau cho các trường có kiểu: - num_proc (
int, tùy chọn, mặc định làNone) — Số lượng tiến trình khi chuẩn bị và tải lên bộ dữ liệu. Điều này hữu ích nếu bộ dữ liệu gồm nhiều mẫu và các phép biến đổi. Nó sử dụng ngữ cảnh “spawn” để làm việc với hf_xet, client rust cho việc tải lên HF nhanh chóng. Đa tiến trình bị vô hiệu hóa theo mặc định.
Đẩy dataset lên hub dưới dạng dataset Parquet. Dataset được đẩy bằng các yêu cầu HTTP và không cần cài đặt git hoặc git-lfs.
Các tệp Parquet kết quả mặc định là tự chứa. Nếu tập dữ liệu của bạn chứa dữ liệu Image, Audio hoặc Video, các tệp Parquet sẽ lưu trữ các byte của hình ảnh hoặc tệp âm thanh của bạn.
Bạn có thể tắt điều này bằng cách đặt embed_external_files thành False.
Ví dụ:
>>> 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)Nếu tập dữ liệu của bạn có nhiều phần chia (ví dụ: train/validation/test):
>>> 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"]Nếu bạn muốn thêm một cấu hình (hoặc tập con) mới vào một tập dữ liệu (ví dụ: nếu tập dữ liệu có nhiều tác bản/phân bản/ngôn ngữ):
>>> 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")Nạp state_dict của bộ dữ liệu. Việc lặp sẽ bắt đầu lại từ ví dụ tiếp theo kể từ khi trạng thái được lưu.
Việc tiếp tục sẽ quay lại đúng vị trí mà checkpoint đã được lưu, ngoại trừ hai trường hợp:
- các mẫu từ bộ đệm xáo trộn sẽ bị mất khi tiếp tục và các bộ đệm sẽ được nạp lại bằng dữ liệu mới
- Các tổ hợp của
.with_format(arrow)và.map()dạng batch có thể bỏ qua một batch.
Ví dụ:
>>> 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)>>> 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 hoodLấy state_dict hiện tại của dataset. Nó tương ứng với trạng thái tại ví dụ gần nhất mà nó đã tạo ra.
Việc tiếp tục sẽ quay lại đúng vị trí mà checkpoint đã được lưu, ngoại trừ hai trường hợp:
- các mẫu từ bộ đệm xáo trộn sẽ bị mất khi tiếp tục và các bộ đệm sẽ được nạp lại bằng dữ liệu mới
- Các tổ hợp của
.with_format(arrow)và.map()dạng batch có thể bỏ qua một batch.
Ví dụ:
>>> 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)>>> 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đối tượng DatasetInfo chứa tất cả các metadata trong dataset.
đối tượng NamedSplit tương ứng với một phần chia (split) có tên của tập dữ liệu.
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 )
Tham số
- path_or_paths (
path-likehoặc danh sáchpath-like) — Đường dẫn của tệp CSV. - split (NamedSplit, tuỳ chọn) — Tên phân tách được gán cho tập dữ liệu.
- features (Features, tùy chọn) — Các đặc trưng của tập dữ liệu.
- keep_in_memory (
bool, mặc định làFalse) — Có sao chép dữ liệu trong bộ nhớ hay không. - **kwargs (các tham số từ khóa bổ sung) —
Các tham số từ khóa được truyền cho
pandas.read_csv.
Tạo một IterableDataset từ tệp 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 )
Tham số
- path_or_paths (
path-likehoặc danh sáchpath-like) — Đường dẫn của tệp JSON hoặc JSON Lines. - split (NamedSplit, tuỳ chọn) — Tên phân tách được gán cho tập dữ liệu.
- features (Features, tùy chọn) — Các đặc trưng của tập dữ liệu.
- keep_in_memory (
bool, mặc định làFalse) — Có sao chép dữ liệu trong bộ nhớ hay không. - field (
str, tùy chọn) — Tên trường của tệp JSON chứa bộ dữ liệu. - **kwargs (các tham số từ khóa bổ sung) —
Các tham số từ khóa sẽ được truyền vào
JsonConfig.
Tạo một IterableDataset từ tệp JSON hoặc 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 )
Tham số
- path_or_paths (
path-likehoặc danh sáchpath-like) — Đường dẫn của tệp Parquet. - split (
NamedSplit, tuỳ chọn) — Tên chia được gán cho tập dữ liệu. - features (
Features, tùy chọn) — Các đặc trưng của tập dữ liệu. - keep_in_memory (
bool, mặc định làFalse) — Có sao chép dữ liệu trong bộ nhớ hay không. - columns (
List[str], tùy chọn) — Nếu không phảiNone, chỉ các cột này sẽ được đọc từ tệp. Tên cột có thể là tiền tố của một trường lồng nhau, ví dụ ‘a’ sẽ chọn ‘a.b’, ‘a.c’, và ‘a.d.e’. - filters (
Union[pyarrow.dataset.Expression, list[tuple], list[list[tuple]]], tùy chọn) — Chỉ trả về các dòng khớp với bộ lọc. Nếu có thể, điều kiện sẽ được đẩy xuống để khai thác thông tin phân vùng hoặc siêu dữ liệu bên trong tìm thấy trong nguồn dữ liệu, ví dụ như thống kê Parquet. Nếu không, bộ lọc sẽ được áp dụng lên các RecordBatch đã tải trước khi trả về chúng. - fragment_scan_options (
pyarrow.dataset.ParquetFragmentScanOptions, tuỳ chọn) — Các tuỳ chọn quét dành riêng cho các fragment Parquet. Điều này đặc biệt hữu ích để cấu hình bộ đệm và bộ nhớ đệm.Được thêm vào 4.2.0
- on_bad_files (
Literal["error", "warn", "skip"], tuỳ chọn, mặc định là “error”) — Chỉ định cách xử lý khi gặp tệp lỗi (tệp không thể đọc được). Các giá trị được phép là :- ‘error’, ném một Exception khi gặp tệp không hợp lệ.
- ‘warn’, phát ra cảnh báo khi gặp tệp không hợp lệ và bỏ qua tệp đó.
- ‘skip’, bỏ qua các tệp lỗi mà không gây ra ngoại lệ hay cảnh báo khi gặp chúng.
Được thêm vào 4.2.0
- **kwargs (các tham số từ khóa bổ sung) —
Các tham số từ khóa sẽ được truyền vào
ParquetConfig.
Tạo một IterableDataset từ tệp 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 )
Tham số
- path_or_paths (
path-likehoặc danh sáchpath-like) — Đường dẫn của tệp văn bản. - split (
NamedSplit, tuỳ chọn) — Tên chia được gán cho tập dữ liệu. - features (
Features, tùy chọn) — Các đặc trưng của tập dữ liệu. - keep_in_memory (
bool, mặc định làFalse) — Có sao chép dữ liệu trong bộ nhớ hay không. - keep_linebreaks — (
bool, mặc định là False): Có nên giữ các ký tự xuống dòng hay không. - sample_by (
Literal["line", "paragraph", "document"], mặc định là “line”) — Xác định việc nạp dữ liệu theo từng dòng, đoạn văn hay tài liệu. Mặc định, một hàng trong bộ dữ liệu = một dòng. - **kwargs (các tham số từ khóa bổ sung) —
Các tham số từ khóa sẽ được truyền vào
TextConfig.
Tạo một IterableDataset từ tệp văn bản.
lớp datasets.IterableColumn
< source >( source: typing.Union[ForwardRef('IterableDataset'), ForwardRef('IterableColumn')]column_name: str )
Một đối tượng lặp được cho một cột cụ thể của IterableDataset.
Ví dụ:
IterableDatasetDict
Từ điển có tên phân chia làm khóa (ví dụ ‘train’, ‘test’) và các đối tượng IterableDataset làm giá trị.
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 )
Tham số
- function (
Callable, tuỳ chọn, mặc định làNone) — Hàm được áp dụng trực tiếp lên các ví dụ khi bạn lặp qua dataset. Nó phải có một trong các chữ ký sau:function(example: Dict[str, Any]) -> Dict[str, Any]nếubatched=Falsevàwith_indices=Falsefunction(example: Dict[str, Any], idx: int) -> Dict[str, Any]nếubatched=Falsevàwith_indices=Truefunction(batch: Dict[str, list]) -> Dict[str, list]nếubatched=Truevàwith_indices=Falsefunction(batch: Dict[str, list], indices: list[int]) -> Dict[str, list]nếubatched=Truevàwith_indices=True
Đối với cách sử dụng nâng cao, hàm cũng có thể trả về một
pyarrow.Table. Nếu hàm là bất đồng bộ, thìmapsẽ chạy hàm của bạn song song. Hơn nữa, nếu hàm của bạn không trả về gì (None), thìmapsẽ chạy hàm của bạn và trả về dataset không thay đổi. Nếu không cung cấp hàm, mặc định dùng hàm đồng nhất:lambda x: x. - with_indices (
bool, mặc định làFalse) — Cung cấp các chỉ mục ví dụ chofunction. Lưu ý rằng trong trường hợp này, chữ ký củafunctionphải làdef function(example, idx[, rank]): .... - input_columns (
[Union[str, list[str]]], tùy chọn, mặc định làNone) — Các cột được truyền vàofunctiondưới dạng các đối số vị trí. Nếu làNone, một dict ánh xạ đến tất cả các cột đã được định dạng sẽ được truyền dưới dạng một đối số duy nhất. - batched (
bool, mặc định làFalse) — Cung cấp một lô các ví dụ chofunction. - batch_size (
int, tùy chọn, mặc định là1000) — Số lượng ví dụ trong mỗi batch được cung cấp chofunctionnếubatched=True. - drop_last_batch (
bool, mặc định làFalse) — Liệu một batch cuối nhỏ hơnbatch_sizecó nên bị loại bỏ thay vì được xử lý bởi hàm hay không. - remove_columns (
[list[str]], tùy chọn, mặc định làNone) — Xóa một tập các cột trong khi thực hiện ánh xạ. Các cột sẽ bị xóa trước khi cập nhật các ví dụ bằng kết quả đầu ra củafunction, tức là nếufunctionthêm các cột có tên nằm trongremove_columns, các cột này sẽ được giữ lại. - fn_kwargs (
Dict, tùy chọn, mặc định làNone) — Các đối số dạng từ khóa để truyền chofunction
Áp dụng một hàm lên tất cả các ví dụ trong tập dữ liệu dạng lặp (riêng lẻ hoặc theo lô) và cập nhật chúng. Nếu hàm của bạn trả về một cột đã tồn tại, nó sẽ ghi đè lên cột đó. Hàm được áp dụng trực tiếp lên các ví dụ khi lặp qua tập dữ liệu. Biến đổi được áp dụng lên tất cả các tập dữ liệu trong từ điển tập dữ liệu.
Bạn có thể chỉ định xem hàm có nên được xử lý theo lô (batched) hay không bằng tham số batched:
- Nếu
False, thì hàm nhận vào 1 ví dụ và phải trả về 1 ví dụ. Một ví dụ là một từ điển, ví dụ{"text": "Hello there !"}. - Nếu
Truevàbatch_sizelà 1, thì hàm nhận vào một batch gồm 1 ví dụ và có thể trả về một batch gồm 1 hoặc nhiều hơn các ví dụ. Một batch là một từ điển, ví dụ một batch gồm 1 ví dụ là{"text": ["Hello there !"]}. - Nếu
Truevàbatch_sizelàn> 1, thì hàm nhận vào một batch gồmnví dụ và có thể trả về một batch gồmnví dụ, hoặc một số lượng ví dụ bất kỳ. Lưu ý rằng batch cuối cùng có thể có ít hơnnví dụ. Một batch là một từ điển, ví dụ một batch gồmnví dụ là{"text": ["Hello there !"] * n}.
Nếu hàm là bất đồng bộ, thì map sẽ chạy hàm của bạn song song, với tối đa một nghìn cuộc gọi đồng thời.
Khuyến nghị sử dụng asyncio.Semaphore trong hàm của bạn nếu bạn muốn đặt số lượng tối đa các thao tác có thể chạy cùng lúc.
Ví dụ:
>>> 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 .'}lọc
< 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 )
Tham số
- function (
Callable) — Callable có một trong các chữ ký sau:function(example: Dict[str, Any]) -> boolnếuwith_indices=False, batched=Falsefunction(example: Dict[str, Any], indices: int) -> boolnếuwith_indices=True, batched=Falsefunction(example: Dict[str, list]) -> list[bool]nếuwith_indices=False, batched=Truefunction(example: Dict[str, list], indices: list[int]) -> list[bool]nếuwith_indices=True, batched=True
Nếu không có hàm nào được cung cấp, mặc định sẽ là một hàm luôn trả về True:
lambda x: True. - with_indices (
bool, mặc định làFalse) — Cung cấp các chỉ mục ví dụ chofunction. Lưu ý rằng trong trường hợp này, chữ ký củafunctionphải làdef function(example, idx): .... - input_columns (
strhoặclist[str], tùy chọn) — Các cột được truyền vàofunctiondưới dạng các đối số vị trí. Nếu làNone, một dict ánh xạ đến tất cả các cột đã định dạng sẽ được truyền dưới dạng một đối số duy nhất. - batched (
bool, mặc định làFalse) — Cung cấp một lô các ví dụ chofunction - batch_size (
int, tùy chọn, mặc định là1000) — Số lượng ví dụ trong mỗi batch được cung cấp chofunctionnếubatched=True. - fn_kwargs (
Dict, tùy chọn, mặc định làNone) — Các đối số dạng từ khóa để truyền chofunction
Áp dụng một hàm lọc lên tất cả các phần tử để tập dữ liệu chỉ bao gồm các ví dụ theo hàm lọc. Việc lọc được thực hiện theo thời gian thực khi lặp qua tập dữ liệu. Việc lọc được áp dụng cho tất cả các tập dữ liệu trong từ điển tập dữ liệu.
Ví dụ:
>>> 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 )
Tham số
- seed (
int, tùy chọn, mặc định làNone) — Hạt ngẫu nhiên sẽ được sử dụng để xáo trộn bộ dữ liệu. Nó được dùng để lấy mẫu từ bộ đệm xáo trộn và cũng để xáo trộn các mảnh dữ liệu. - generator (
numpy.random.Generator, tùy chọn) — Numpy random Generator được sử dụng để tính hoán vị các dòng của tập dữ liệu. Nếugenerator=None(mặc định), sẽ sử dụngnp.random.default_rng(BitGenerator mặc định (PCG64) của NumPy). - buffer_size (
int, mặc định là1000) — Kích thước của bộ đệm. - max_buffer_input_shards (
int, mặc định là10) — Số lượng shard tối đa được sử dụng để nạp vào buffer mỗi lần.
Trộn ngẫu nhiên các phần tử của tập dữ liệu này. Việc trộn được áp dụng cho tất cả các tập dữ liệu trong từ điển tập dữ liệu.
Bộ dữ liệu này điền một bộ đệm với buffer_size phần tử, sau đó lấy mẫu ngẫu nhiên các phần tử từ bộ đệm này, thay thế các phần tử được chọn bằng các phần tử mới. Để xáo trộn hoàn hảo, kích thước bộ đệm phải lớn hơn hoặc bằng kích thước đầy đủ của bộ dữ liệu.
Ví dụ, nếu tập dữ liệu của bạn chứa 10.000 phần tử nhưng buffer_size được đặt là 1000, thì shuffle ban đầu sẽ chọn một phần tử ngẫu nhiên từ chỉ 1000 phần tử đầu tiên trong bộ đệm. Khi một phần tử được chọn, vị trí của nó trong bộ đệm sẽ được thay thế bằng phần tử tiếp theo (tức là phần tử thứ 1.001), duy trì bộ đệm 1000 phần tử.
Nếu tập dữ liệu được tạo từ nhiều shard, nó cũng thực hiện shuffle thứ tự của các shard.
Tuy nhiên, nếu thứ tự đã được cố định bằng cách sử dụng skip() hoặc take() thì thứ tự của các shard sẽ được giữ nguyên.
Ví dụ:
>>> 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 )
Trả về một tập dữ liệu với định dạng được chỉ định.
Ví dụ:
>>> 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
Tham số
- features (
Features) — Các tính năng mới để chuyển đổi dataset sang. Tên của các trường trong features phải khớp với tên cột hiện tại. Loại dữ liệu cũng phải có thể chuyển đổi từ loại này sang loại khác. Đối với các phép chuyển đổi không đơn giản, ví dụstring<->ClassLabel, bạn nên sử dụngmapđể cập nhật Dataset.
Trả về
Một bản sao của bộ dữ liệu với các đặc trưng đã được chuyển đổi kiểu.
Đổ dataset sang một tập các đặc trưng mới. Việc chuyển kiểu được áp dụng cho tất cả các dataset trong từ điển dataset.
Ví dụ:
>>> 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] )
Đổ cột xuống dạng feature để giải mã. Việc chuyển kiểu được áp dụng cho tất cả các dataset trong từ điển dataset.
Ví dụ:
>>> 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
Tham số
Trả về
Một bản sao của đối tượng bộ dữ liệu không bao gồm các cột cần xóa.
Xóa một hoặc nhiều cột trong bộ dữ liệu cùng với các đặc trưng liên quan đến chúng. Việc xóa được thực hiện trực tiếp trên các ví dụ khi lặp qua bộ dữ liệu. Việc xóa được áp dụng cho tất cả các bộ dữ liệu trong từ điển bộ dữ liệu.
Ví dụ:
>>> 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
Tham số
Trả về
Một bản sao của bộ dữ liệu với một cột đã được đổi tên.
Đổi tên một cột trong bộ dữ liệu, và di chuyển các đặc trưng liên quan đến cột gốc sang dưới tên cột mới. Việc đổi tên được áp dụng cho tất cả các bộ dữ liệu trong từ điển bộ dữ liệu.
Ví dụ:
>>> 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
Tham số
Trả về
Một bản sao của bộ dữ liệu với các cột đã được đổi tên
Đổi tên một số cột trong bộ dữ liệu, và di chuyển các đặc trưng liên quan đến các cột gốc sang dưới tên cột mới. Việc đổi tên được áp dụng cho tất cả các bộ dữ liệu trong từ điển bộ dữ liệu.
Ví dụ:
>>> 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
Tham số
Trả về
Một bản sao của đối tượng bộ dữ liệu chỉ chứa các cột được chọn.
Chọn một hoặc nhiều cột trong bộ dữ liệu và các đặc trưng liên quan đến chúng. Việc chọn lọc được thực hiện trực tiếp trên các ví dụ khi lặp qua bộ dữ liệu. Việc chọn lọc được áp dụng cho tất cả các bộ dữ liệu trong từ điển bộ dữ liệu.
Ví dụ:
>>> 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 )
Tham số
- repo_id (
str) — ID của kho cần đẩy lên, theo định dạng:<user>/<dataset_name>hoặc<org>/<dataset_name>. Cũng chấp nhận<dataset_name>, mặc định sẽ dùng namespace của người dùng đang đăng nhập.Nó cũng có thể là một vị trí bên trong một bucket, ví dụ
buckets/<user_or_org>/<bucket_name>/... - config_name (
str) — Tên cấu hình của một tập dữ liệu. Mặc định là “default”. - set_default (
bool, tùy chọn) — Có nên đặt cấu hình này làm cấu hình mặc định hay không. Nếu không, cấu hình mặc định sẽ là cấu hình có tên “default”. - data_dir (
str, tùy chọn) — Tên thư mục sẽ chứa các tệp dữ liệu đã tải lên. Mặc định làconfig_namenếu khác “default”, nếu không thì là “data”.Được thêm vào 2.17.0
- commit_message (
str, tùy chọn) — Thông điệp để commit khi đẩy. Mặc định là"Upload dataset". - commit_description (
str, tuỳ chọn) — Mô tả của commit sẽ được tạo. Ngoài ra, mô tả của PR nếu một PR được tạo (create_prlà True).Được thêm vào 2.16.0
- private (
bool, optional) — Xác định có làm cho kho (repo) ở chế độ riêng tư hay không. Nếu làNone(mặc định), kho sẽ ở chế độ công khai trừ khi mặc định của tổ chức là riêng tư. Giá trị này bị bỏ qua nếu kho đã tồn tại. - token (
str, tùy chọn) — Một token xác thực tùy chọn cho Hugging Face Hub. Nếu không truyền token, hệ thống sẽ mặc định sử dụng token được lưu cục bộ khi đăng nhập bằnghf auth login. Sẽ gây ra lỗi nếu không truyền token và người dùng chưa đăng nhập. - revision (
str, tùy chọn) — Nhánh để đẩy các tệp đã tải lên. Mặc định là nhánh"main". - create_pr (
bool, tùy chọn, mặc định làFalse) — Có tạo PR với các tệp đã tải lên hay commit trực tiếp hay không. - max_shard_size (
inthoặcstr, tùy chọn) — Kích thước tối đa tùy chọn của các shard dataset sẽ được tải lên hub. Nếu biểu diễn dưới dạng chuỗi, cần là các chữ số theo sau bởi một đơn vị (như"500MB"hoặc"1GB"). Nếu không được cung cấp, mỗi split sẽ giữ nguyên số lượng shard gốc của dataset. - num_shards (
Dict[str, int], tuỳ chọn) — Số lượng shard cần ghi. Dùng một từ điển để định nghĩanum_shardskhác nhau cho từng split. Nếumax_shard_sizeđược cung cấp vànum_shardscủa một split không được cung cấp, thì số lượng shard cho split đó sẽ được ước tính từmax_shard_size. - embed_external_files (
bool, mặc định làTrue) — Có nên nhúng byte của tệp vào các shard hay không. Cụ thể, trước khi push, thao tác này sẽ thực hiện các bước sau cho các trường có kiểu: - num_proc (
int, tùy chọn, mặc định làNone) — Số lượng tiến trình khi chuẩn bị và tải lên dataset. Điều này hữu ích nếu dataset bao gồm nhiều mẫu hoặc tệp media cần nhúng. I sử dụng ngữ cảnh “spawn” để hoạt động với hf_xet, client rust cho việc tải lên HF nhanh chóng. Multiprocessing bị vô hiệu hóa theo mặc định.Được thêm vào 4.0.0
Đẩy IterableDatasetDict lên hub dưới dạng tập dữ liệu Parquet. IterableDatasetDict được đẩy lên bằng các yêu cầu HTTP và không cần cài đặt git hay git-lfs.
Mỗi phần chia của bộ dữ liệu sẽ được đẩy lên độc lập. Bộ dữ liệu được đẩy lên sẽ giữ nguyên tên các phần chia ban đầu.
Các tệp Parquet kết quả mặc định là tự chứa: nếu tập dữ liệu của bạn chứa dữ liệu Image hoặc Audio, các tệp Parquet sẽ lưu trữ các byte của hình ảnh hoặc tệp âm thanh của bạn.
Bạn có thể tắt điều này bằng cách đặt embed_external_files thành False.
Ví dụ:
>>> 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})Nếu bạn muốn thêm một cấu hình (hoặc tập con) mới vào một tập dữ liệu (ví dụ: nếu tập dữ liệu có nhiều tác bản/phân bản/ngôn ngữ):
>>> 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")Tính năng
Một từ điển đặc biệt định nghĩa cấu trúc bên trong của một tập dữ liệu.
Được khởi tạo bằng một từ điển có kiểu dict[str, FieldType], trong đó các khóa là tên cột mong muốn,
và các giá trị là kiểu của cột đó.
FieldType có thể là một trong các giá trị sau:
- Tính năng Value chỉ định một giá trị kiểu dữ liệu đơn, ví dụ
int64hoặcstring. - Đặc trưng ClassLabel chỉ định một tập hợp các lớp được định nghĩa trước, có thể gắn nhãn cho chúng và sẽ được lưu dưới dạng số nguyên trong bộ dữ liệu.
dictcủa Python chỉ định một đặc trưng tổ hợp chứa ánh xạ từ các trường con đến các đặc trưng con. Bạn có thể có các trường con lồng nhau trong các trường con theo cách tùy ý.- List hoặc LargeList chỉ định một đặc trưng tổ hợp chứa một chuỗi các đặc trưng con, tất cả cùng một kiểu đặc trưng.
- Array2D, Array3D, Array4D hoặc Array5D cho mảng nhiều chiều.
- Audio là tính năng để lưu trữ đường dẫn tuyệt đối đến tệp âm thanh hoặc một từ điển chứa đường dẫn tương đối đến tệp âm thanh (khóa “path”) và nội dung byte của nó (khóa “bytes”). Tính năng này nạp âm thanh một cách lười biếng bằng trình giải mã.
- Image để lưu trữ đường dẫn tuyệt đối đến tệp ảnh, một đối tượng
np.ndarray, một đối tượngPIL.Image.Imagehoặc một từ điển chứa đường dẫn tương đối đến tệp ảnh (khóa “path”) và nội dung byte của nó (khóa “bytes”). Tính năng này trích xuất dữ liệu ảnh. - Video để lưu trữ đường dẫn tuyệt đối đến tệp video, một đối tượng
torchcodec.decoders.VideoDecoderhoặc một từ điển chứa đường dẫn tương đối đến tệp video (khóa “path”) và nội dung byte của nó (khóa “bytes”). Tính năng này tải video một cách lười biếng bằng trình giải mã. - Pdf là tính năng để lưu trữ đường dẫn tuyệt đối đến tệp PDF, một đối tượng
pdfplumber.pdf.PDFhoặc một từ điển chứa đường dẫn tương đối đến tệp PDF (khóa “path”) và nội dung byte của nó (khóa “bytes”). Tính năng này nạp PDF một cách lười biếng bằng trình đọc PDF. - Nifti là tính năng để lưu trữ đường dẫn tuyệt đối đến tệp hình ảnh thần kinh NIfTI, một đối tượng
nibabel.Nifti1Imagehoặc một từ điển chứa đường dẫn tương đối đến tệp NIfTI (khóa “path”) và nội dung byte của nó (khóa “bytes”). Tính năng này nạp tệp NIfTI một cách lười biếng bằng nibabel. - Translation hoặc TranslationVariableLanguages là tính năng đặc thù cho Machine Translation.
- Json để lưu trữ dữ liệu không có cấu trúc, ví dụ như chứa các kiểu dữ liệu hỗn hợp/ngẫu nhiên. Bên trong
Tạo bản sao sâu của Features.
decode_batch
< source >( batch: dicttoken_per_repo_id: typing.Optional[dict[str, typing.Union[str, bool, NoneType]]] = None )
Giải mã batch với giải mã đặc trưng tùy chỉnh.
decode_column
< source >( column: listcolumn_name: strtoken_per_repo_id: typing.Optional[dict[str, typing.Union[str, bool, NoneType]]] = None )
Giải mã cột với giải mã đặc trưng tùy chỉnh.
decode_example
< source >( example: dicttoken_per_repo_id: typing.Optional[dict[str, typing.Union[str, bool, NoneType]]] = None )
Ví dụ giải mã với giải mã đặc trưng tùy chỉnh.
encode_batch
< source >( batch )
Mã hóa batch thành định dạng cho Arrow.
encode_column
< source >( columncolumn_name: str )
Mã hóa cột thành định dạng cho Arrow.
encode_example
< source >( example )
Mã hóa ví dụ thành định dạng cho Arrow.
Phẳng hóa các đặc trưng. Mỗi cột từ điển sẽ bị xóa và được thay thế bằng tất cả các trường con mà nó chứa. Các trường mới được đặt tên bằng cách nối tên của cột gốc và tên trường con theo cách này: <original>.<subfield>.
Nếu một cột chứa các từ điển lồng nhau, thì tất cả các tên trường con ở cấp thấp hơn cũng được nối lại để tạo thành các cột mới: <original>.<subfield>.<subsubfield>, v.v.
Ví dụ:
>>> 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 )
Xây dựng Features từ Arrow Schema. Nó cũng kiểm tra metadata của schema đối với các features của Hugging Face Datasets. Các trường không nullable không được hỗ trợ và sẽ được đặt thành nullable.
Ngoài ra, pa.dictionary không được hỗ trợ và thay vào đó sẽ sử dụng kiểu dữ liệu cơ bản của nó. Do đó, datasets sẽ chuyển đổi các đối tượng DictionaryArray thành giá trị thực của chúng.
from_dict
< source >( dic ) → Features
Xây dựng [Features] từ dict.
Tạo lại đối tượng đặc trưng lồng nhau từ một dict đã được khử chuỗi hóa. Chúng ta sử dụng khóa _type để suy ra tên dataclass của đặc trưng FieldType.
Nó cho phép cú pháp constructor tiện lợi để định nghĩa các đặc trưng từ các từ điển JSON đã được khử chuỗi hóa. Hàm này đặc biệt được sử dụng khi khử chuỗi hóa một [DatasetInfo] đã được dump thành một đối tượng JSON. Nó đóng vai trò tương đương với [Features.from_arrow_schema] và xử lý việc khởi tạo đệ quy từng trường một, nhưng không yêu cầu bất kỳ ánh xạ nào tới/từ pyarrow, ngoại trừ việc nó tận dụng ánh xạ các dtype nguyên thủy của pyarrow mà [Value] tự động thực hiện.
reorder_fields_as
< source >( other: Features )
Sắp xếp lại các trường Features để khớp với thứ tự trường của các [Features] khác.
Thứ tự của các trường là quan trọng vì nó ảnh hưởng đến dữ liệu arrow bên dưới. Việc sắp xếp lại các trường cho phép kiểu dữ liệu arrow bên dưới khớp nhau.
Ví dụ:
>>> 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
lớp datasets.Value
< source >( dtype: strid: typing.Optional[str] = None )
Giá trị đặc trưng vô hướng của một kiểu dữ liệu cụ thể.
Các dtype có thể của Value như sau:
nullboolint8int16int32int64uint8uint16uint32uint64float16float32(biệt danh float)float64(biệt danh 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
lớp datasets.ClassLabel
< source >( num_classes: dataclasses.InitVar[typing.Optional[int]] = Nonenames: list = Nonenames_file: dataclasses.InitVar[typing.Optional[str]] = Noneid: typing.Optional[str] = None )
Loại đặc trưng cho nhãn lớp nguyên.
Có 3 cách để định nghĩa một ClassLabel, tương ứng với 3 tham số:
num_classes: Tạo các nhãn từ 0 đến (num_classes-1).names: Danh sách các chuỗi nhãn.names_file: Tệp chứa danh sách các nhãn.
Bên trong, các nhãn được lưu trữ dưới dạng số nguyên. Bạn có thể sử dụng -1 để biểu diễn các nhãn không xác định/thiếu.
Ví dụ:
>>> 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
Đổ (cast) một mảng Arrow sang kiểu lưu trữ arrow ClassLabel.
Các kiểu Arrow có thể chuyển đổi sang kiểu lưu trữ pyarrow ClassLabel là:
pa.string()pa.int()
Chuyển đổi integer => chuỗi tên lớp string.
Về nhãn không xác định/thiếu: truyền các số nguyên âm sẽ gây ra ValueError.
Tên lớp chuyển đổi string => integer.
Composite
lớp datasets.LargeList
< source >( feature: typing.Anyid: typing.Optional[str] = None )
Loại đặc trưng cho dữ liệu danh sách lớn được cấu thành từ loại dữ liệu đặc trưng con.
Nó được hỗ trợ bởi pyarrow.LargeListType, tương tự như pyarrow.ListType nhưng sử dụng offset 64-bit thay vì 32-bit.
lớp datasets.List
< source >( feature: typing.Anylength: int = -1id: typing.Optional[str] = None )
Loại đặc trưng cho dữ liệu danh sách lớn được cấu thành từ loại dữ liệu đặc trưng con.
Nó được hỗ trợ bởi pyarrow.ListType, sử dụng các offset 32-bit hoặc một độ dài cố định.
lớp datasets.Sequence
< source >( feature = Nonelength = -1**kwargs )
Một Sequence là tiện ích tự động chuyển đổi đặc trưng từ điển nội bộ thành từ điển các danh sách. Hành vi này được triển khai để có lớp tương thích với thư viện TensorFlow Datasets nhưng có thể không mong muốn trong một số trường hợp. Nếu bạn không muốn hành vi này, bạn có thể sử dụng List hoặc LargeList thay vì Sequence.
Bản dịch
lớp datasets.Translation
< source >( languages: listid: typing.Optional[str] = None )
Feature cho các bản dịch với ngôn ngữ cố định cho từng ví dụ.
Ở đây để tương thích với tfds.
Ví dụ:
>>> # At construction time:
>>> datasets.features.Translation(languages=['en', 'fr', 'de'])
>>> # During data generation:
>>> yield {
... 'en': 'the cat',
... 'fr': 'le chat',
... 'de': 'die katze'
... }Phẳng hóa tính năng Translation thành một từ điển.
lớp 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)
Tham số
- languages (
dict) — Một từ điển cho mỗi ví dụ, ánh xạ các mã ngôn ngữ dạng chuỗi sang một hoặc nhiều bản dịch dạng chuỗi. Các ngôn ngữ có mặt có thể khác nhau giữa các ví dụ.
Trả về
languagehoặctranslation(tf.Tensor1 chiều có độ dài thay đổi củatf.string)
Mã ngôn ngữ được sắp xếp theo thứ tự tăng dần hoặc các bản dịch dạng văn bản thuần túy, được sắp xếp để khớp với mã ngôn ngữ.
Feature cho các bản dịch với ngôn ngữ khác nhau cho từng ví dụ.
Ở đây để tương thích với tfds.
Ví dụ:
>>> # 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'],
... }Phẳng hóa tính năng TranslationVariableLanguages thành một từ điển.
Mảng
lớp datasets.Array2D
< source >( shape: tupledtype: strid: typing.Optional[str] = None )
Tạo một mảng hai chiều.
lớp datasets.Array3D
< source >( shape: tupledtype: strid: typing.Optional[str] = None )
Tạo một mảng ba chiều.
lớp datasets.Array4D
< source >( shape: tupledtype: strid: typing.Optional[str] = None )
Tạo một mảng bốn chiều.
lớp datasets.Array5D
< source >( shape: tupledtype: strid: typing.Optional[str] = None )
Tạo một mảng năm chiều.
Âm thanh
lớp 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 )
Tham số
- sampling_rate (
int, tùy chọn) — Tần số lấy mẫu đích. Nếu làNone, tần số lấy mẫu gốc sẽ được sử dụng. - num_channels (
int, tuỳ chọn) — Số kênh mong muốn của các mẫu. Mặc định, số kênh của nguồn được sử dụng. Việc giải mã âm thanh sẽ trả về các mẫu có hình dạng (num_channels, num_samples) Hiện tạiNone(số kênh của nguồn, mặc định),1(mono) hoặc2(stereo) kênh được hỗ trợ.num_channelstham số được truyền đếntorchcodec.decoders.AudioDecoder.Được thêm vào 4.4.0
- decode (
bool, mặc định làTrue) — Có giải mã dữ liệu âm thanh hay không. NếuFalse, trả về từ điển gốc ở định dạng{"path": audio_path, "bytes": audio_bytes}. - stream_index (
int, tùy chọn) — Chỉ số luồng cần sử dụng từ tệp. Nếu làNone, mặc định sẽ dùng chỉ số “tốt nhất”.
Audio Feature để trích xuất dữ liệu âm thanh từ một tệp âm thanh.
Đầu vào: Tính năng Âm thanh chấp nhận các đầu vào sau:
Một
str: Đường dẫn tuyệt đối đến tệp âm thanh (tức là cho phép truy cập ngẫu nhiên).Một
pathlib.Path: đường dẫn đến tệp âm thanh (tức là cho phép truy cập ngẫu nhiên).Một
dictvới các khóa:path: Chuỗi chứa đường dẫn tương đối của tệp âm thanh so với tệp lưu trữ.bytes: Bytes content of the audio file.
Điều này hữu ích cho các tệp parquet hoặc webdataset có nhúng tệp âm thanh.
Một
dictvới các khóa:array: Mảng chứa mẫu âm thanhsampling_rate: Số nguyên tương ứng với tần số lấy mẫu của mẫu âm thanh.
Một
torchcodec.decoders.AudioDecoder: đối tượng trình giải mã âm thanh của torchcodec.
Đầu ra: Dữ liệu đầu ra của tính năng Âm thanh dưới dạng các đối tượng torchcodec.decoders.AudioDecoder, kèm theo các khóa bổ sung:
array: Mảng chứa mẫu âm thanhsampling_rate: Số nguyên tương ứng với tần số lấy mẫu của mẫu âm thanh.
Ví dụ:
>>> 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
Đổ (cast) một mảng Arrow sang kiểu lưu trữ arrow Audio. Các kiểu Arrow có thể chuyển đổi sang kiểu lưu trữ pyarrow Audio là:
pa.string()- phải chứa dữ liệu “path”pa.binary()- phải chứa các byte âm thanhpa.struct({"bytes": pa.binary()})pa.struct({"path": pa.string()})pa.struct({"bytes": pa.binary(), "path": pa.string()})- thứ tự không quan trọng
decode_example
< source >( value: dicttoken_per_repo_id: typing.Optional[dict[str, typing.Union[str, bool, NoneType]]] = None )
Tham số
- value (
dict) — Một từ điển với các khóa:path: Chuỗi chứa đường dẫn tương đối của tệp âm thanh.bytes: Các byte của tệp âm thanh.
- token_per_repo_id (
dict, tùy chọn) — Để truy cập và giải mã các tệp âm thanh từ các kho riêng tư trên Hub, bạn có thể truyền một từ điển repo_id (str) -> token (boolhoặcstr)
Giải mã tệp âm thanh mẫu thành dữ liệu âm thanh.
embed_storage
< source >( storage: StructArraytoken_per_repo_id = Nonelocal_files: bool = Trueremote_files: bool = True ) → pa.StructArray
Tham số
- storage (
pa.StructArray) — Mảng PyArrow để nhúng. - token_per_repo_id (
dict, tùy chọn) — Từ điển repo_id -> token để lấy các byte tệp. - local_files (
bool, mặc định làTrue) — Có nhúng dữ liệu tệp cục bộ vào mảng hay khôngĐược thêm vào 4.8.5
- remote_files (
bool, mặc định làTrue) — Có nên nhúng dữ liệu tệp từ xa vào mảng hay không. Ví dụ: các tệp có đường dẫn bắt đầu bằng hf:// hoặc https://Được thêm vào 4.8.5
Trả về
pa.StructArray
Array trong kiểu lưu trữ arrow của Audio, đó là
pa.struct({"bytes": pa.binary(), "path": pa.string()}).
Nhúng các tệp âm thanh vào mảng Arrow.
encode_example
< source >( value: typing.Union[str, bytes, bytearray, dict, ForwardRef('AudioDecoder')] ) → dict
Mã hóa ví dụ thành định dạng cho Arrow.
Nếu đang ở trạng thái có thể giải mã, hãy ném ra một lỗi, ngược lại hãy làm phẳng đặc trưng thành một từ điển.
Hình ảnh
lớp datasets.Image
< source >( mode: typing.Optional[str] = Nonedecode: bool = Trueid: typing.Optional[str] = None )
Feature hình ảnh để đọc dữ liệu hình ảnh từ tệp hình ảnh.
Đầu vào: Tính năng Image nhận các đầu vào sau:
Một
str: Đường dẫn tuyệt đối đến tệp hình ảnh (tức là cho phép truy cập ngẫu nhiên).Một
pathlib.Path: đường dẫn đến tệp ảnh (tức là cho phép truy cập ngẫu nhiên).Một
dictvới các khóa:path: Chuỗi chứa đường dẫn tương đối của tệp ảnh so với tệp lưu trữ.bytes: Các byte của tệp hình ảnh.
Điều này hữu ích cho các tệp parquet hoặc webdataset có nhúng các tệp ảnh.
Một
np.ndarray: mảng NumPy đại diện cho một hình ảnh.Một
PIL.Image.Image: đối tượng ảnh PIL.
Output: Dữ liệu đầu ra của Image được xuất dưới dạng các đối tượng PIL.Image.Image.
Ví dụ:
>>> 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
Đổ (cast) một mảng Arrow sang kiểu lưu trữ Image arrow. Các kiểu Arrow có thể chuyển đổi sang kiểu lưu trữ pyarrow Image là:
pa.string()- phải chứa dữ liệu “path”pa.large_string()- phải chứa dữ liệu “path” (sẽ được chuyển đổi sang chuỗi nếu có thể)pa.binary()- phải chứa các byte của hình ảnhpa.struct({"bytes": pa.binary()})pa.struct({"path": pa.string()})pa.struct({"bytes": pa.binary(), "path": pa.string()})- thứ tự không quan trọngpa.list(*)- phải chứa dữ liệu mảng ảnh
decode_example
< source >( value: dicttoken_per_repo_id = None )
Tham số
- value (
strhoặcdict) — Một chuỗi chứa đường dẫn tuyệt đối của tệp ảnh, hoặc một từ điển có các khóa:path: Chuỗi chứa đường dẫn tệp ảnh tuyệt đối hoặc tương đối.bytes: Các byte của tệp hình ảnh.
- token_per_repo_id (
dict, tùy chọn) — Để truy cập và giải mã các tệp ảnh từ các kho riêng tư trên Hub, bạn có thể truyền một từ điển repo_id (str) -> token (boolhoặcstr).
Giải mã tệp hình ảnh mẫu thành dữ liệu hình ảnh.
embed_storage
< source >( storage: StructArraytoken_per_repo_id = Nonelocal_files: bool = Trueremote_files: bool = True ) → pa.StructArray
Tham số
- storage (
pa.StructArray) — Mảng PyArrow để nhúng. - token_per_repo_id (
dict, tùy chọn) — Từ điển repo_id -> token để lấy các byte tệp. - local_files (
bool, mặc định làTrue) — Có nhúng dữ liệu tệp cục bộ vào mảng hay khôngĐược thêm vào 4.8.5
- remote_files (
bool, mặc định làTrue) — Có nên nhúng dữ liệu tệp từ xa vào mảng hay không. Ví dụ: các tệp có đường dẫn bắt đầu bằng hf:// hoặc https://Được thêm vào 4.8.5
Trả về
pa.StructArray
Array trong kiểu lưu trữ Image arrow, đó là
pa.struct({"bytes": pa.binary(), "path": pa.string()}).
Nhúng các tệp hình ảnh vào mảng Arrow.
encode_example
< source >( value: typing.Union[str, bytes, bytearray, dict, numpy.ndarray, ForwardRef('PIL.Image.Image')] )
Mã hóa ví dụ thành định dạng cho Arrow.
Nếu ở trạng thái có thể giải mã, trả về chính đặc trưng, ngược lại thì dẹt đặc trưng thành một từ điển.
Video
class 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 )
Tham số
- decode (
bool, mặc định làTrue) — Có giải mã dữ liệu video hay không. NếuFalse, trả về từ điển cơ bản ở định dạng{"path": video_path, "bytes": video_bytes}. - stream_index (
int, tùy chọn) — Chỉ số luồng cần sử dụng từ tệp. Nếu làNone, mặc định sẽ dùng chỉ số “tốt nhất”. - dimension_order (
str, mặc định làNCHW) — Thứ tự các chiều của các khung hình đã giải mã. trong đó N là kích thước lô, C là số kênh, H là chiều cao và W là chiều rộng của các khung hình. - num_ffmpeg_threads (
int, mặc định là1) — Số lượng luồng (threads) được sử dụng để giải mã video. (Khuyến nghị giữ giá trị này ở mức 1) - device (
strhoặctorch.device, mặc định làcpu) — Thiết bị được sử dụng để giải mã video. - seek_mode (
str, mặc định làexact) — Xác định việc truy cập khung hình sẽ là chính xác hay xấp xỉ. Chế độ chính xác đảm bảo rằng yêu cầu khung hình i luôn trả về đúng khung hình i, nhưng điều này đòi hỏi phải quét ban đầu toàn bộ tệp. Chế độ xấp xỉ nhanh hơn vì tránh việc quét tệp, nhưng kém chính xác hơn vì sử dụng metadata của tệp để tính toán vị trí khả dĩ của i. Đọc thêm tại đây
Video Feature để đọc dữ liệu video từ tệp video.
Đầu vào: Tính năng Video chấp nhận các đầu vào sau:
Một
str: Đường dẫn tuyệt đối đến tệp video (tức là cho phép truy cập ngẫu nhiên).Một
pathlib.Path: đường dẫn đến tệp video (tức là cho phép truy cập ngẫu nhiên).Một
dictvới các khóa:path: Chuỗi chứa đường dẫn tương đối của tệp video trong kho dữ liệu.bytes: Số byte của tệp video.
Điều này hữu ích cho các tệp parquet hoặc webdataset có nhúng tệp video.
Một
torchcodec.decoders.VideoDecoder: đối tượng trình giải mã video của torchcodec.
Output: Dữ liệu đầu ra của Video được cung cấp dưới dạng các đối tượng torchcodec.decoders.VideoDecoder.
Ví dụ:
>>> 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
Đổ (cast) một mảng Arrow sang kiểu lưu trữ arrow Video. Các kiểu Arrow có thể chuyển đổi sang kiểu lưu trữ pyarrow Video là:
pa.string()- phải chứa dữ liệu “path”pa.binary()- phải chứa các byte của videopa.struct({"bytes": pa.binary()})pa.struct({"path": pa.string()})pa.struct({"bytes": pa.binary(), "path": pa.string()})- thứ tự không quan trọngpa.list(*)- phải chứa dữ liệu mảng video
decode_example
< source >( value: typing.Union[str, datasets.features.video.Example]token_per_repo_id: typing.Optional[dict[str, typing.Union[bool, str]]] = None )
Tham số
- value (
strhoặcdict) — Chuỗi chứa đường dẫn tuyệt đối của tệp video, hoặc một từ điển có các khóa:path: Chuỗi chứa đường dẫn tệp video tuyệt đối hoặc tương đối.bytes: Các byte của tệp video.
- token_per_repo_id (
dict, tùy chọn) — Để truy cập và giải mã các tệp video từ các kho riêng tư trên Hub, bạn có thể truyền một từ điển repo_id (str) -> token (boolhoặcstr).
Giải mã tệp video mẫu thành dữ liệu video.
embed_storage
< source >( storage: StructArraytoken_per_repo_id = Nonelocal_files: bool = Trueremote_files: bool = True ) → pa.StructArray
Tham số
- storage (
pa.StructArray) — Mảng PyArrow để nhúng. - token_per_repo_id (
dict, tùy chọn) — Từ điển repo_id -> token để lấy các byte tệp. - local_files (
bool, mặc định làTrue) — Có nhúng dữ liệu tệp cục bộ vào mảng hay khôngĐược thêm vào 4.8.5
- remote_files (
bool, mặc định làTrue) — Có nên nhúng dữ liệu tệp từ xa vào mảng hay không. Ví dụ: các tệp có đường dẫn bắt đầu bằng hf:// hoặc https://Được thêm vào 4.8.5
Trả về
pa.StructArray
Array trong kiểu lưu trữ Video arrow, đó là
pa.struct({"bytes": pa.binary(), "path": pa.string()}).
Nhúng các tệp hình ảnh vào mảng Arrow.
encode_example
< source >( value: typing.Union[str, bytes, bytearray, datasets.features.video.Example, numpy.ndarray, ForwardRef('VideoDecoder')] )
Mã hóa ví dụ thành định dạng cho Arrow.
Nếu ở trạng thái có thể giải mã, trả về chính đặc trưng, ngược lại thì dẹt đặc trưng thành một từ điển.
Mesh
lớp datasets.Mesh
< source >( decode: bool = Trueid: typing.Optional[str] = None )
Mesh Feature để đọc dữ liệu lưới 3D từ tệp.
Đầu vào: Tính năng Mesh chấp nhận các đầu vào sau:
Một
str: Đường dẫn tuyệt đối đến tệp lưới (tức là cho phép truy cập ngẫu nhiên).Một
pathlib.Path: đường dẫn đến tệp lưới (tức là cho phép truy cập ngẫu nhiên).Một
dictvới các khóa:path: Chuỗi chứa đường dẫn tương đối của tệp mesh so với tệp lưu trữ.bytes: Các byte của tệp lưới.
Điều này hữu ích cho các tệp parquet hoặc webdataset có nhúng các tệp mesh.
Một
trimesh.Trimeshhoặctrimesh.Scene: đối tượng lưới hoặc cảnh 3D.
Output: Tính năng Mesh xuất dữ liệu dưới dạng các đối tượng trimesh.Trimesh hoặc trimesh.Scene.
cast_storage
< source >( storage: typing.Union[pyarrow.lib.StringArray, pyarrow.lib.StructArray] ) → pa.StructArray
Đổ (cast) một mảng Arrow sang kiểu lưu trữ arrow của Mesh. Các kiểu Arrow có thể chuyển đổi sang kiểu lưu trữ pyarrow của Mesh là:
pa.string()- phải chứa dữ liệu “path”pa.large_string()- phải chứa dữ liệu “path” (sẽ được chuyển đổi sang chuỗi nếu có thể)pa.binary()- phải chứa các byte của lướipa.struct({"bytes": pa.binary()})pa.struct({"path": pa.string()})pa.struct({"bytes": pa.binary(), "path": pa.string()})- thứ tự không quan trọng
decode_example
< source >( value: dicttoken_per_repo_id = None )
Tham số
- value (
dict) — Một từ điển với các khóa:path: Chuỗi chứa đường dẫn tệp mesh tuyệt đối hoặc tương đối.bytes: Các byte của tệp mesh.
- token_per_repo_id (
dict, tùy chọn) — Để truy cập và giải mã các tệp mesh từ các kho riêng tư trên Hub, bạn có thể truyền một từ điển repo_id (str) -> token (boolhoặcstr).
Giải mã tệp lưới mẫu.
embed_storage
< source >( storage: StructArraytoken_per_repo_id = Nonelocal_files: bool = Trueremote_files: bool = True ) → pa.StructArray
Tham số
- storage (
pa.StructArray) — Mảng PyArrow để nhúng. - token_per_repo_id (
dict, tùy chọn) — Từ điển repo_id -> token để lấy các byte tệp. - local_files (
bool, mặc định làTrue) — Có nên nhúng dữ liệu tệp cục bộ vào mảng hay không. - remote_files (
bool, mặc định làTrue) — Có nên nhúng dữ liệu tệp từ xa vào mảng hay không.
Trả về
pa.StructArray
Array trong kiểu lưu trữ Mesh arrow, cụ thể là
pa.struct({"bytes": pa.binary(), "path": pa.string()}).
Nhúng các tệp mesh vào mảng Arrow.
encode_example
< source >( value: typing.Union[str, bytes, bytearray, dict, ForwardRef('trimesh.Trimesh'), ForwardRef('trimesh.Scene')] )
Mã hóa ví dụ thành định dạng cho Arrow.
Nếu ở trạng thái có thể giải mã, trả về chính đặc trưng, ngược lại thì dẹt đặc trưng thành một từ điển.
Json
Loại đặc trưng cho các đối tượng JSON.
Bên trong, các đối tượng được lưu trữ dưới dạng chuỗi mã hóa JSON.
Ví dụ:
>>> 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
Đổ (cast) một mảng Arrow sang kiểu lưu trữ arrow Json.
lớp datasets.Pdf
< source >( decode: bool = Trueid: typing.Optional[str] = None )
Thử nghiệm. Tính năng Feature của Pdf để đọc tài liệu pdf từ tệp pdf.
Đầu vào: Tính năng Pdf chấp nhận các đầu vào sau:
Một
str: Đường dẫn tuyệt đối đến tệp pdf (tức là cho phép truy cập ngẫu nhiên).Một
pathlib.Path: đường dẫn đến tệp pdf (tức là cho phép truy cập ngẫu nhiên).Một
dictvới các khóa:path: Chuỗi chứa đường dẫn tương đối của tệp pdf trong kho dữ liệu.bytes: Các byte của tệp pdf. Điều này hữu ích cho các tệp đã lưu trữ với truy cập tuần tự.
Một
pdfplumber.pdf.PDF: đối tượng pdf của pdfplumber.
Ví dụ:
>>> 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
Đổ (cast) một mảng Arrow sang kiểu lưu trữ arrow Pdf. Các kiểu Arrow có thể chuyển đổi sang kiểu lưu trữ pyarrow Pdf là:
pa.string()- phải chứa dữ liệu “path”pa.binary()- phải chứa các byte của hình ảnhpa.struct({"bytes": pa.binary()})pa.struct({"path": pa.string()})pa.struct({"bytes": pa.binary(), "path": pa.string()})- thứ tự không quan trọngpa.list(*)- phải chứa dữ liệu mảng pdf
decode_example
< source >( value: dicttoken_per_repo_id = None )
Tham số
- value (
strhoặcdict) — Chuỗi chứa đường dẫn tuyệt đối của tệp pdf, hoặc một từ điển có các khóa:path: Chuỗi chứa đường dẫn tệp pdf tuyệt đối hoặc tương đối.bytes: Các byte của tệp pdf.
- token_per_repo_id (
dict, tùy chọn) — Để truy cập và giải mã các tệp pdf từ các kho riêng tư trên Hub, bạn có thể truyền một từ điển repo_id (str) -> token (boolhoặcstr).
Giải mã tệp pdf mẫu thành dữ liệu pdf.
embed_storage
< source >( storage: StructArraytoken_per_repo_id = Nonelocal_files: bool = Trueremote_files: bool = True ) → pa.StructArray
Tham số
- storage (
pa.StructArray) — Mảng PyArrow để nhúng. - token_per_repo_id (
dict, tùy chọn) — Từ điển repo_id -> token để lấy các byte tệp. - local_files (
bool, mặc định làTrue) — Có nhúng dữ liệu tệp cục bộ vào mảng hay khôngĐược thêm vào 4.8.5
- remote_files (
bool, mặc định làTrue) — Có nên nhúng dữ liệu tệp từ xa vào mảng hay không. Ví dụ: các tệp có đường dẫn bắt đầu bằng hf:// hoặc https://Được thêm vào 4.8.5
Trả về
pa.StructArray
Array trong kiểu lưu trữ arrow của PDF, đó là
pa.struct({"bytes": pa.binary(), "path": pa.string()}).
Nhúng các tệp PDF vào mảng Arrow.
encode_example
< source >( value: typing.Union[str, bytes, bytearray, dict, ForwardRef('pdfplumber.pdf.PDF')] )
Mã hóa ví dụ thành định dạng cho Arrow.
Nếu ở trạng thái có thể giải mã, trả về chính đặc trưng, ngược lại thì dẹt đặc trưng thành một từ điển.
Nifti
lớp datasets.Nifti
< source >( decode: bool = Trueid: typing.Optional[str] = None )
Thử nghiệm. Feature Nifti để đọc các tệp hình ảnh thần kinh NIfTI.
Input: Tính năng Nifti nhận đầu vào là:
Một
str: Đường dẫn tuyệt đối đến tệp NIfTI (tức là cho phép truy cập ngẫu nhiên).Một
pathlib.Path: đường dẫn đến tệp NIfTI (tức là cho phép truy cập ngẫu nhiên).Một
dictvới các khóa:path: Chuỗi chứa đường dẫn tương đối của tệp NIfTI trong kho dữ liệu.bytes: Các byte của tệp NIfTI. Điều này hữu ích cho các tệp đã lưu trữ với truy cập tuần tự.
Một đối tượng ảnh
nibabel(ví dụ:nibabel.nifti1.Nifti1Image).
Ví dụ:
>>> 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
Đổ (cast) một mảng Arrow sang kiểu lưu trữ arrow Nifti. Các kiểu Arrow có thể chuyển đổi sang kiểu lưu trữ pyarrow Nifti là:
pa.string()- phải chứa dữ liệu “path”pa.binary()- phải chứa các byte NIfTIpa.struct({"bytes": pa.binary()})pa.struct({"path": pa.string()})pa.struct({"bytes": pa.binary(), "path": pa.string()})- thứ tự không quan trọng
decode_example
< source >( value: dicttoken_per_repo_id = None )
Tham số
- value (
strhoặcdict) — Chuỗi chứa đường dẫn tệp NIfTI tuyệt đối, hoặc một từ điển có các khóa:path: Chuỗi chứa đường dẫn tệp NIfTI tuyệt đối hoặc tương đối.bytes: Các byte của tệp NIfTI.
- token_per_repo_id (
dict, tùy chọn) — Để truy cập và giải mã các tệp NIfTI từ các kho riêng tư trên Hub, bạn có thể truyền một từ điển repo_id (str) -> token (boolhoặcstr).
Giải mã tệp NIfTI mẫu thành đối tượng ảnh nibabel.
embed_storage
< source >( storage: StructArraytoken_per_repo_id = Nonelocal_files: bool = Trueremote_files: bool = True ) → pa.StructArray
Tham số
- storage (
pa.StructArray) — Mảng PyArrow để nhúng. - token_per_repo_id (
dict, tùy chọn) — Từ điển repo_id -> token để lấy các byte tệp. - local_files (
bool, mặc định làTrue) — Có nhúng dữ liệu tệp cục bộ vào mảng hay khôngĐược thêm vào 4.8.5
- remote_files (
bool, mặc định làTrue) — Có nên nhúng dữ liệu tệp từ xa vào mảng hay không. Ví dụ: các tệp có đường dẫn bắt đầu bằng hf:// hoặc https://Được thêm vào 4.8.5
Trả về
pa.StructArray
Array trong kiểu lưu trữ arrow của NifTI, cụ thể là
pa.struct({"bytes": pa.binary(), "path": pa.string()}).
Nhúng các tệp NifTI vào mảng Arrow.
encode_example
< source >( value: typing.Union[str, bytes, bytearray, dict, ForwardRef('nib.Nifti1Image')] )
Mã hóa ví dụ thành định dạng cho Arrow.
Nếu ở trạng thái có thể giải mã, trả về chính đặc trưng, ngược lại thì dẹt đặc trưng thành một từ điển.
BioSequence
lớp datasets.BioSequence
< source >( format: str = 'fasta'decode: bool = Trueid: typing.Optional[str] = None )
Tham số
- format (
str, mặc định là"fasta") — Tên của định dạng trình tự, theo cách được hiểu bởiBio.SeqIO. Các giá trị phổ biến là"fasta","fastq"và"genbank". - decode (
bool, mặc định làTrue) — Có giải mã dữ liệu chuỗi hay không. NếuFalse, trả về từ điển cơ bản ở định dạng{"path": path, "bytes": bytes}.
Thử nghiệm. Feature BioSequence để đọc các bản ghi trình tự sinh học từ tệp trình tự.
Một tệp trình tự chứa một hoặc nhiều bản ghi về các gốc (residue) kèm theo định danh và chú giải của chúng. FASTA, FASTQ và GenBank có cùng cấu trúc ở cấp độ này, chỉ khác nhau ở trình phân tích (parser) được sử dụng, do đó format chọn trình phân tích chứ không phải kiểu dữ liệu.
Đầu vào: Tính năng BioSequence chấp nhận các đầu vào sau:
Một
str: Đường dẫn tuyệt đối đến tệp trình tự (tức là cho phép truy cập ngẫu nhiên).Một
pathlib.Path: đường dẫn đến tệp trình tự (tức là cho phép truy cập ngẫu nhiên).Một
dictvới các khóa:path: Chuỗi chứa đường dẫn tương đối của tệp trình tự trong kho dữ liệu.bytes: Các byte của tệp trình tự. Điều này hữu ích cho các tệp đã lưu trữ với truy cập tuần tự.
Một
Bio.SeqRecord.SeqRecord: bản ghi trình tự biopython.
Ví dụ:
>>> 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
Đổ (cast) một mảng Arrow sang kiểu lưu trữ arrow BioSequence. Các kiểu Arrow có thể chuyển đổi sang kiểu lưu trữ pyarrow BioSequence là:
pa.string()- phải chứa dữ liệu “path”pa.binary()- phải chứa các byte của tệppa.struct({"bytes": pa.binary()})pa.struct({"path": pa.string()})pa.struct({"bytes": pa.binary(), "path": pa.string()})- thứ tự không quan trọng
decode_example
< source >( value: dicttoken_per_repo_id = None )
Tham số
- value (
strhoặcdict) — Một chuỗi chứa đường dẫn tệp tuyệt đối, hoặc một từ điển có các khóa:path: Chuỗi chứa đường dẫn tệp tuyệt đối hoặc tương đối.bytes: Các byte của tệp.
- token_per_repo_id (
dict, tùy chọn) — Để truy cập và giải mã các tệp từ các kho riêng tư trên Hub, bạn có thể truyền một từ điển repo_id (str) -> token (boolhoặcstr).
Giải mã tệp trình tự mẫu thành một bản ghi biopython.
Một tệp có thể chứa nhiều bản ghi; hàm này trả về bản ghi đầu tiên vì một dòng tương ứng với một bản ghi. Hãy sử dụng các trình tải chuỗi có sẵn để mở rộng tệp nhiều bản ghi thành một dòng cho mỗi bản ghi.
embed_storage
< source >( storage: StructArraytoken_per_repo_id = Nonelocal_files: bool = Trueremote_files: bool = True ) → pa.StructArray
Tham số
- storage (
pa.StructArray) — Mảng PyArrow để nhúng. - token_per_repo_id (
dict, tùy chọn) — Từ điển repo_id -> token để lấy các byte tệp. - local_files (
bool, mặc định làTrue) — Có nên nhúng dữ liệu tệp cục bộ vào mảng hay không. - remote_files (
bool, mặc định làTrue) — Có nên nhúng dữ liệu tệp từ xa vào mảng hay không.
Trả về
pa.StructArray
Array trong kiểu lưu trữ arrow của BioSequence.
Nhúng các tệp trình tự vào mảng Arrow.
encode_example
< source >( value: typing.Union[str, bytes, bytearray, dict, ForwardRef('SeqRecord')] )
Mã hóa ví dụ thành định dạng cho Arrow.
Nếu ở trạng thái có thể giải mã, trả về chính đặc trưng, ngược lại thì dẹt đặc trưng thành một từ điển.
BioStructure
lớp datasets.BioStructure
< source >( format: str = 'pdb'decode: bool = Trueid: typing.Optional[str] = None )
Thử nghiệm. Tính năng Feature của BioStructure để đọc các cấu trúc đại phân tử từ tệp cấu trúc.
Tệp cấu trúc lưu trữ tọa độ ba chiều của các nguyên tử trong một phân tử, được nhóm thành các chuỗi và các phần dư. PDB và mmCIF mô tả cùng các đối tượng và chỉ khác nhau ở trình phân tích được sử dụng, do đó format chọn trình phân tích chứ không phải kiểu dữ liệu.
Đầu vào: Tính năng BioStructure chấp nhận các đầu vào sau:
Một
str: Đường dẫn tuyệt đối đến tệp cấu trúc (tức là cho phép truy cập ngẫu nhiên).Một
pathlib.Path: đường dẫn đến tệp cấu trúc (tức là cho phép truy cập ngẫu nhiên).Một
dictvới các khóa:path: Chuỗi chứa đường dẫn tương đối của tệp cấu trúc trong kho dữ liệu.bytes: Các byte của tệp cấu trúc. Điều này hữu ích cho các tệp đã lưu trữ với truy cập tuần tự.
Một
Bio.PDB.Structure.Structure: cấu trúc biopython.
Ví dụ:
>>> 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
Đổ (cast) một mảng Arrow sang kiểu lưu trữ arrow của BioStructure. Các kiểu Arrow có thể chuyển đổi sang kiểu lưu trữ pyarrow của BioStructure là:
pa.string()- phải chứa dữ liệu “path”pa.binary()- phải chứa các byte của tệppa.struct({"bytes": pa.binary()})pa.struct({"path": pa.string()})pa.struct({"bytes": pa.binary(), "path": pa.string()})- thứ tự không quan trọng
decode_example
< source >( value: dicttoken_per_repo_id = None )
Tham số
- value (
strhoặcdict) — Một chuỗi chứa đường dẫn tệp tuyệt đối, hoặc một từ điển có các khóa:path: Chuỗi chứa đường dẫn tệp tuyệt đối hoặc tương đối.bytes: Các byte của tệp.
- token_per_repo_id (
dict, tùy chọn) — Để truy cập và giải mã các tệp từ các kho riêng tư trên Hub, bạn có thể truyền một từ điển repo_id (str) -> token (boolhoặcstr).
Giải mã tệp cấu trúc ví dụ thành một cấu trúc biopython.
embed_storage
< source >( storage: StructArraytoken_per_repo_id = Nonelocal_files: bool = Trueremote_files: bool = True ) → pa.StructArray
Tham số
- storage (
pa.StructArray) — Mảng PyArrow để nhúng. - token_per_repo_id (
dict, tùy chọn) — Từ điển repo_id -> token để lấy các byte tệp. - local_files (
bool, mặc định làTrue) — Có nên nhúng dữ liệu tệp cục bộ vào mảng hay không. - remote_files (
bool, mặc định làTrue) — Có nên nhúng dữ liệu tệp từ xa vào mảng hay không.
Trả về
pa.StructArray
Array trong kiểu lưu trữ arrow của BioStructure.
Nhúng các tệp cấu trúc vào mảng Arrow.
encode_example
< source >( value: typing.Union[str, bytes, bytearray, dict, ForwardRef('Structure')] )
Mã hóa ví dụ thành định dạng cho Arrow.
Nếu ở trạng thái có thể giải mã, trả về chính đặc trưng, ngược lại thì dẹt đặc trưng thành một từ điển.
Hệ thống tệp
datasets.filesystems.is_remote_filesystem
< source >( fs: AbstractFileSystem )
Kiểm tra xem fs có phải là hệ thống tệp từ xa hay không.
Dấu vân tay
Hasher nhận các đối tượng python làm đầu vào.