重要
您正在查看 NeMo 2.0 文档。此版本对 API 和新的库 NeMo Run 进行了重大更改。我们目前正在将 NeMo 1.0 的所有功能移植到 2.0。有关先前版本或 2.0 中尚不可用的功能的文档,请参阅 NeMo 24.07 文档。
重复数据删除#
精确#
- class nemo_curator.ExactDuplicates(
- logger: logging.LoggerAdapter | str = './',
- id_field: str = 'id',
- text_field: str = 'text',
- hash_method: str = 'md5',
- perform_removal: bool = False,
- profile_dir: str | None = None,
- cache_dir: str | None = None,
在文档语料库中查找精确重复项
- call(
- dataset: DocumentDataset,
对数据集执行任意操作
- 参数:
dataset (DocumentDataset) – 要操作的数据集
- hash_documents(
- df: cudf.Series | pd.Series,
计算包含文档的 Series 的哈希值
- identify_duplicates(
- dataset: DocumentDataset,
在给定的 DocumentDataset 中查找精确重复项的文档 ID :param dataset: 要查找精确重复项的输入数据集 :type dataset: DocumentDataset
- 返回类型:
包含所有重复文档的 ID 和哈希值的 DocumentDataset
- remove(
- dataset: DocumentDataset,
- duplicates_to_remove: DocumentDataset | None,
从给定的 DocumentDataset 中删除精确重复项 :param dataset: 要删除精确重复项的输入数据集 :type dataset: DocumentDataset
- 返回类型:
DocumentDataset,仅包含非重复文档
模糊#
- class nemo_curator.BucketsToEdges(
- cache_dir: str | None = None,
- id_fields: list | str = 'id',
- str_id_name: str = 'id',
- bucket_field: str = '_bucket_id',
- logger: LoggerAdapter | str = './',
- profile_dir: str | None = None,
将从 LSH 生成的存储桶映射到边缘列表,该边缘列表可以由连接组件进一步处理,以查找重复文档
- class nemo_curator.ConnectedComponents(
- cache_dir: str,
- jaccard_pairs_path: str,
- id_column='id',
- jaccard_threshold: float = 0.8,
- logger: LoggerAdapter | str = './',
- profile_dir: str | None = None,
- class nemo_curator.FuzzyDuplicatesConfig(
- cache_dir: str,
- profile_dir: str | None = None,
- id_field: str = 'id',
- text_field: str = 'text',
- perform_removal: bool = False,
- seed: int = 42,
- char_ngrams: int = 24,
- num_buckets: int = 20,
- hashes_per_bucket: int = 13,
- use_64_bit_hash: bool = False,
- buckets_per_shuffle: int = 1,
- false_positive_check: bool = False,
- num_anchors: int | None = None,
- jaccard_threshold: float | None = None,
- bucket_mapping_blocksize: int | None = None,
- parts_per_worker: int | None = None,
- bucket_parts_per_worker: int | None = None,
基于 MinHash 的模糊重复项检测的配置。 :param seed: :type seed: minhash 排列的种子 :param char_ngrams: :type char_ngrams: minhash 计算中使用的 Char ngram shingles 的大小 :param num_buckets: :type num_buckets: 在局部敏感哈希期间使用的频段或存储桶的数量 :param hashes_per_bucket: :type hashes_per_bucket: 每个存储桶/频段的哈希数。 :param use_64_bit_hash: :type use_64_bit_hash: 是否对最小哈希使用 32 位或 64 位哈希函数。 :param buckets_per_shuffle: 更大的值通过处理多个频段来处理更大的批次
但可能会导致内存压力和相关错误。
- 参数:
id_field (数据集中的列,表示文档 ID。)
text_field (数据集中的列,表示文档内容。)
perform_removal (布尔值,用于指定调用模块是否应从以下位置删除重复项) – 原始数据集,或返回表示重复项的 ID 列表。
profile_dir (str,默认值 None) – 如果指定,则为写入 dask 配置文件的目录
cache_dir (str,默认值 None) – 存储重复数据删除中间文件(如最小哈希/存储桶等)的位置。
false_positive_check (bool,) – 是否运行检查以查找存储桶内的误报。注意:这是一个计算量很大的步骤。
num_anchors (int) – 每个存储桶的文档数,用作计算该存储桶内 jaccard 对以识别误报的参考。
jaccard_threshold (float) – Jaccard 相似度阈值,用于在误报评估期间将文档视为近似重复项。
- class nemo_curator.FuzzyDuplicates(
- config: FuzzyDuplicatesConfig,
- logger: LoggerAdapter | str = './',
- call(
- dataset: DocumentDataset,
- perform_removal: bool = False,
对数据集执行任意操作
- 参数:
dataset (DocumentDataset) – 要操作的数据集
- identify_duplicates(
- dataset: DocumentDataset,
- 参数:
dataset (DocumentDataset) – 用于计算 FuzzyDuplicates 的输入数据集。必须包含文本和唯一 ID 字段。
- 返回:
DocumentDataset,包含所有文档的 ID 和它们所属的相应重复组
。同一组中的文档是近似重复项。
- remove(
- dataset: DocumentDataset,
- duplicates_to_remove: DocumentDataset | None,
从给定的 DocumentDataset 中删除精确重复项 :param dataset: 要删除精确重复项的输入数据集 :type dataset: DocumentDataset
- 返回类型:
DocumentDataset,仅包含非重复文档
- class nemo_curator.JaccardSimilarity(
- id_field='id',
- anchor_id_fields=['anchor_0_id', 'anchor_1_id'],
- text_field='text',
- ngram_width=5,
- class nemo_curator.LSH(
- cache_dir: str,
- num_hashes: int,
- num_buckets: int,
- buckets_per_shuffle: int = 1,
- false_positive_check: bool = False,
- logger: LoggerAdapter | str = './',
- id_fields: str | list = 'id',
- minhash_field: str = '_minhash_signature',
- profile_dir: str | None = None,
对 MinhashSignatures 执行 LSH
- bucket_id_to_int(
- bucket_ddf: dask_cudf.DataFrame,
- bucket_col_name: str = 'bucket_id',
- start_id: int = 0,
将存储桶 ID 映射到从 start_id 开始的连续整数范围。
- lsh(write_path: str, df: dask_cudf.DataFrame) bool #
计算 DataFrame 的哈希存储桶,并将它们作为 parquet 文件写入到指定路径。
- 参数:
write_path (-) – 要写入 parquet 文件的目录路径。
df (-) – 包含要分桶的最小哈希的输入 DataFrame。
- 返回:
如果存储桶为空(未找到重复项),则为 True,否则为 False。
- 返回类型:
are_buckets_empty
- class nemo_curator.MinHash(
- seed: int = 42,
- num_hashes: int = 260,
- char_ngrams: int = 24,
- use_64bit_hash: bool = False,
- logger: LoggerAdapter | str = './',
- id_field: str = 'id',
- text_field: str = 'text',
- profile_dir: str | None = None,
- cache_dir: str | None = None,
计算文档语料库的最小哈希签名
- generate_hash_permutation_seeds(
- bit_width: int,
- n_permutations: int = 260,
- seed: int = 0,
根据给定的种子生成所有最小哈希排列的种子。
- generate_seeds(
- n_seeds: int = 260,
- seed: int = 0,
根据给定的种子生成所有最小哈希排列的种子。
- minhash32(
- ser: cudf.Series,
- seeds: numpy.ndarray,
- char_ngram: int,
基于 MurmurHash3 算法计算 32 位 Minhash 值
- minhash64(
- ser: cudf.Series,
- seeds: numpy.ndarray,
- char_ngram: int,
基于 MurmurHash3 算法计算 64 位 Minhash 值
语义#
- class nemo_curator.SemDedup(
- config: SemDedupConfig,
- input_column: str = 'text',
- id_column: str = 'id',
- id_column_type: str = 'int',
- logger: Logger | str = './',
- call(
- dataset: DocumentDataset,
执行 SemDedup 过程。
- 参数:
dataset (DocumentDataset) – 用于去重的输入数据集。
- 返回:
去重后的数据集。
- 返回类型:
- class nemo_curator.SemDedupConfig(
- cache_dir: str,
- profile_dir: str | None = None,
- num_files: int = -1,
- embeddings_save_loc: str = 'embeddings',
- embedding_model_name_or_path: str = 'sentence-transformers/all-MiniLM-L6-v2',
- embedding_batch_size: int = 128,
- embedding_pooling_strategy: str = 'mean_pooling',
- write_embeddings_to_disk: bool = True,
- clustering_save_loc: str = 'clustering_results',
- n_clusters: int = 1000,
- seed: int = 1234,
- max_iter: int = 100,
- kmeans_with_cos_dist: bool = False,
- which_to_keep: str = 'hard',
- largest_cluster_size_to_process: int = 100000,
- sim_metric: str = 'cosine',
- eps_thresholds: ~typing.List[float] = <factory>,
- eps_to_extract: float = 0.01,
语义去重配置。
- cache_dir#
用于存储缓存的目录。
- 类型:
str
- profile_dir#
如果指定,则将 dask 配置文件写入此目录。默认为 None。
- 类型:
Optional[str]
- cache_dir#
用于存储缓存的目录。
- 类型:
str
- num_files#
文件数量。默认为 -1,表示所有文件。
- 类型:
int
- embeddings_save_loc#
保存嵌入向量的位置。
- 类型:
str
- embedding_model_name_or_path#
用于嵌入向量的模型名称或路径。
- 类型:
str
- embedding_batch_size#
处理嵌入向量的初始批次大小。
- 类型:
int
- embedding_pooling_strategy#
用于池化嵌入向量的策略,可以是 “mean_pooling” 或 “last_token”。默认为 “mean_pooling”。
- 类型:
str
- write_embeddings_to_disk#
如果为 True,则将嵌入向量保存到磁盘,默认为 True。当您有延迟管道时,我们建议将其设置为 False。设置为 False 可能会导致更高的内存开销。
- 类型:
bool
- clustering_save_loc#
保存聚类结果的位置。
- 类型:
str
- n_clusters#
聚类数量。
- 类型:
int
- seed#
聚类种子。
- 类型:
int
- max_iter#
聚类的最大迭代次数。
- 类型:
int
- kmeans_with_cos_dist#
使用带有余弦距离的 KMeans。
- 类型:
bool
- which_to_keep#
要保留哪个重复项。
- 类型:
str
- largest_cluster_size_to_process#
要处理的最大聚类大小。
- 类型:
int
- sim_metric#
用于去重的相似度指标。
- 类型:
str
- eps_thresholds#
用于计算语义是否相似的 epsilon 阈值。
- 类型:
List[float]
- eps_to_extract#
用于提取去重数据的 epsilon 值。
- 类型:
float
- class nemo_curator.EmbeddingCreator(
- embedding_model_name_or_path: str,
- embedding_batch_size: int,
- embedding_output_dir: str,
- embedding_max_mem_gb: int | None = None,
- embedding_pooling_strategy: str = 'mean_pooling',
- input_column: str = 'text',
- embedding_column: str = 'embeddings',
- write_embeddings_to_disk: bool = True,
- write_to_filename: bool = False,
- logger: Logger | str = './',
- profile_dir: str | None = None,
- class nemo_curator.ClusteringModel(
- id_column: str,
- max_iter: int,
- n_clusters: int,
- clustering_output_dir: str,
- embedding_col: str = 'embeddings',
- sim_metric: str = 'cosine',
- which_to_keep: str = 'hard',
- sort_clusters: bool = True,
- kmeans_with_cos_dist: bool = False,
- partition_size: str = '2gb',
- logger: Logger | str = './',
- profile_dir: str | None = None,
- class nemo_curator.SemanticClusterLevelDedup(
- n_clusters: int,
- emb_by_clust_dir: str,
- sorted_clusters_dir: str,
- id_column: str,
- id_column_type: str,
- which_to_keep: str,
- output_dir: str,
- embedding_col: str = 'embeddings',
- logger: Logger | str = './',
- profile_dir: str | None = None,
- compute_semantic_match_dfs(
- eps_list: List[float] | None = None,
计算聚类的语义匹配数据帧。
- 参数:
eps_list (Optional[List[float]]) – 聚类的 epsilon 值列表。
- extract_dedup_data(
- eps_to_extract: float,
基于 epsilon 值提取去重数据。
- 参数:
eps_to_extract (float) – 用于提取去重数据的 epsilon 阈值。
- 返回:
包含去重文档的数据集。
- 返回类型: