重要提示

您正在查看 NeMo 2.0 文档。此版本对 API 和新库 NeMo Run 进行了重大更改。我们目前正在将 NeMo 1.0 中的所有功能移植到 2.0。有关先前版本或 2.0 中尚不可用的功能的文档,请参阅 NeMo 24.07 文档

过滤器#

基类#

class nemo_curator.filters.DocumentFilter#

用于基于文本的文档过滤器的抽象基类。

此类充当在库中创建特定文档过滤器的模板。子类应实现抽象方法以定义自定义过滤行为。

abstract score_document(text: str) Any#

计算给定文档文本的分数。

子类应实现此方法,以定义如何评估和评分文档的文本。

参数:

text (str) – 要评分的文档的文本内容。

返回值:

表示文档相关性或质量的分数或一组分数。返回值类型和结构对于每个子类应保持一致。

返回类型:

Any

引发:

NotImplementedError – 如果子类中未实现该方法。

abstract keep_document(scores: Any) bool#

根据文档的分数确定是否保留文档。

子类应实现此方法,以根据 score_document() 计算的分数定义保留或丢弃文档的标准。

参数:

scores (Any) – score_document() 返回的分数或一组分数。类型应与 score_document() 返回的类型匹配。

返回值:

如果应保留文档,则为 True,否则为 False。

返回类型:

bool

引发:

NotImplementedError – 如果子类中未实现该方法。

property backend: Literal['pandas', 'cudf', 'any']#

过滤器在其上运行的数据帧后端。可以是 ‘pandas’、‘cudf’ 或 ‘any’。默认为 ‘pandas’。 :returns: 一个字符串,表示过滤器需要作为输入的数据帧后端 :rtype: str

class nemo_curator.filters.BitextFilter(
src_field: str = 'src',
tgt_field: str = 'tgt',
metadata_fields: List[str] | str = [],
metadata_field_name_mapping: Dict[str, str] = {},
score_field: str | None = None,
score_type: type | str | None = None,
invert=False,
)#

用于双语文本过滤器对象(如长度比率、QE 过滤器)的基类。与 ParallelScoreFilter 不同,这些过滤器需要同时查看双语文本的源语言和目标语言端,以计算分数。

这大致相当于一个 ScoreFilter 包装在一个 DocumentFilter 对象之上。但除了在 ParallelDataset 而不是 DocumentDataset 上运行之外,它还有一些其他区别

  • 它丢弃了 ScoreFilter/DocumentFilter 层次结构。因此可以直接使用过滤器类,而无需由 ScoreFilter 包装。

  • 与 DocumentFilter 对象不同,它允许将额外的元数据信息传递到评分函数中。

abstract score_bitext(src, tgt, **kwargs)#

双语文本的评分函数。

nemo_curator.filters.import_filter(
filter_path: str,
) DocumentFilter | BitextFilter#

导入 nemo_curator.filters 下的过滤器,给定模块路径

参数:

filter_path (str) – 过滤器的路径,格式为 “nemo_curator.filters.filter_name”

返回值:

给定路径下的过滤器

返回类型:

DocumentFilter

引发:

ValueError – 如果 filter_path 未指向 DocumentFilter

模块#

class nemo_curator.ScoreFilter(
filter_obj: DocumentFilter,
text_field: str = 'text',
score_field: str | None = None,
score_type: type | str | None = None,
invert: bool = False,
)#

负责将过滤器应用于 DocumentDataset 中所有文档的模块。它接受任意 DocumentFilter,并首先计算文档的分数。然后,根据 DocumentFilter 中的标准确定是否保留文档。

过滤器可以应用于数据集中的任何字段,并且可以记录分数以供稍后使用。此外,可以反转过滤器,以便保留“拒绝”的文档。

__init__(
filter_obj: DocumentFilter,
text_field: str = 'text',
score_field: str | None = None,
score_type: type | str | None = None,
invert: bool = False,
)#

构造 ScoreFilter 模块。

参数:
  • filter_obj (DocumentFilter) – 评分函数,它接受文档字符串并输出文档的分数。

  • text_field (str) – 将从中读取文档的字段。

  • score_field – 将在其中写入分数的字段。如果为 None,则分数将在使用后立即丢弃。

  • score_type (Union[type, str]) – 将为每个文档创建的分数的数据类型。

  • invert (bool) – 如果为 True,将保留所有通常被丢弃的文档。

call(
dataset: DocumentDataset,
) DocumentDataset#

对数据集中的所有记录进行评分和过滤

参数:

dataset (DocumentDataset) – 要应用模块的数据集

返回值:

应用了评分和过滤的数据集

返回类型:

DocumentDataset

compute_filter_mask(
dataset: DocumentDataset,
)#

计算用于过滤数据集的布尔掩码。

参数:

dataset (DocumentDataset) – 要在其上计算过滤器掩码的数据集。

返回值:

与每个数据实例对应的掩码,指示是否将保留该实例。

返回类型:

Series 或 DataFrame

class nemo_curator.Score(
score_fn: Callable,
score_field: str,
text_field: str = 'text',
score_type: type | str | None = None,
)#

负责根据文本统计信息向记录添加元数据的模块。它接受任意评分函数,该函数接受文本字段并返回分数。

与 ScoreFilter 不同,它不根据计算的分数进行过滤。它仅向记录添加元数据。

__init__(
score_fn: Callable,
score_field: str,
text_field: str = 'text',
score_type: type | str | None = None,
)#

构造 Score 模块。

参数:
  • score_fn (Callable) – 评分函数,它接受文档字符串并输出文档的分数。

  • score_field (str) – 将在其中存储分数的字段。

  • text_field (str) – 将从中读取文档的字段。

  • score_type (Union[type, str]) – 将为每个文档创建的分数的数据类型。

call(
dataset: DocumentDataset,
) DocumentDataset#

将评分应用于数据集

参数:

dataset (DocumentDataset) – 要应用模块的数据集

返回值:

具有新评分的数据集

返回类型:

DocumentDataset

class nemo_curator.Filter(
filter_fn: Callable,
filter_field: str,
invert: bool = False,
)#

负责根据元数据字段过滤记录的模块。它接受任意过滤器函数,该函数接受元数据字段,如果应保留该字段,则返回 True。

与 ScoreFilter 不同,它不基于文档计算元数据。它仅使用现有元数据进行过滤。

__init__(
filter_fn: Callable,
filter_field: str,
invert: bool = False,
)#

构造 Filter 模块

参数:
  • filter_fn (Callable) – 如果要保留文档,则返回 True 的函数。

  • filter_field (str) – 要传递到过滤器函数中的字段。

  • invert (bool) – 是否反转过滤器条件。

call(
dataset: DocumentDataset,
) DocumentDataset#

将过滤应用于数据集

参数:

dataset (DocumentDataset) – 要应用模块的数据集

返回值:

根据过滤器删除条目的数据集

返回类型:

DocumentDataset

compute_filter_mask(
dataset: DocumentDataset,
)#

计算用于过滤数据集的布尔掩码。

参数:

dataset (DocumentDataset) – 要在其上计算过滤器掩码的数据集。

返回值:

与每个数据实例对应的掩码,指示是否将保留该实例。

返回类型:

Series 或 DataFrame

FastText 过滤器#

class nemo_curator.filters.FastTextLangId(model_path=None, min_langid_score=0.3)#
score_document(df: pandas.Series)#

计算给定文档文本的分数。

子类应实现此方法,以定义如何评估和评分文档的文本。

参数:

text (str) – 要评分的文档的文本内容。

返回值:

表示文档相关性或质量的分数或一组分数。返回值类型和结构对于每个子类应保持一致。

返回类型:

Any

引发:

NotImplementedError – 如果子类中未实现该方法。

keep_document(score)#

根据文档的分数确定是否保留文档。

子类应实现此方法,以根据 score_document() 计算的分数定义保留或丢弃文档的标准。

参数:

scores (Any) – score_document() 返回的分数或一组分数。类型应与 score_document() 返回的类型匹配。

返回值:

如果应保留文档,则为 True,否则为 False。

返回类型:

bool

引发:

NotImplementedError – 如果子类中未实现该方法。

class nemo_curator.filters.FastTextQualityFilter(
model_path=None,
label='__label__hq',
alpha=3,
seed=42,
)#
score_document(df: pandas.Series)#

计算给定文档文本的分数。

子类应实现此方法,以定义如何评估和评分文档的文本。

参数:

text (str) – 要评分的文档的文本内容。

返回值:

表示文档相关性或质量的分数或一组分数。返回值类型和结构对于每个子类应保持一致。

返回类型:

Any

引发:

NotImplementedError – 如果子类中未实现该方法。

keep_document(df: pandas.Series)#

根据文档的分数确定是否保留文档。

子类应实现此方法,以根据 score_document() 计算的分数定义保留或丢弃文档的标准。

参数:

scores (Any) – score_document() 返回的分数或一组分数。类型应与 score_document() 返回的类型匹配。

返回值:

如果应保留文档,则为 True,否则为 False。

返回类型:

bool

引发:

NotImplementedError – 如果子类中未实现该方法。

质量评估过滤器#

class nemo_curator.filters.QualityEstimationFilter(
model_name,
cutoff,
mode='always_en_x',
gpu=False,
**kwargs,
)#

(双语文本过滤器) 使用质量评估 (QE) 模型对各个段进行评分,并根据估计的质量分数进行过滤。(参考:https://arxiv.org/pdf/2311.05350

score_bitext(
src: pandas.Series,
tgt: pandas.Series,
src_lang: pandas.Series,
tgt_lang: pandas.Series,
) pandas.Series#

包装器函数,用于对数据帧中的文档进行评分。大部分工作在 _score_document_with_qe 中完成。

参数:

fields (接受两个元数据) – src_langtgt_lang。有关详细信息,请参阅 _score_bitext_with_qe 函数。

引发:

RuntimeError – 如果输入数据帧参数的长度不相同。

返回值:

与每个文档的单个分数相对应的浮点数分数列表。

返回类型:

pd.Series

keep_bitext(score)#

根据估计的质量分数阈值,决定是否应保留单个文档。

启发式过滤器#

class nemo_curator.filters.NonAlphaNumericFilter(
max_non_alpha_numeric_to_text_ratio: float = 0.25,
)#

如果文档中超过 25% 的内容是非字母数字字符,则丢弃。 旨在仅应用于英文文本。来源:改编自 Gopher (Rae et al., 2021)

score_document(text)#

计算给定文档文本的分数。

子类应实现此方法,以定义如何评估和评分文档的文本。

参数:

text (str) – 要评分的文档的文本内容。

返回值:

表示文档相关性或质量的分数或一组分数。返回值类型和结构对于每个子类应保持一致。

返回类型:

Any

引发:

NotImplementedError – 如果子类中未实现该方法。

keep_document(score)#

根据文档的分数确定是否保留文档。

子类应实现此方法,以根据 score_document() 计算的分数定义保留或丢弃文档的标准。

参数:

scores (Any) – score_document() 返回的分数或一组分数。类型应与 score_document() 返回的类型匹配。

返回值:

如果应保留文档,则为 True,否则为 False。

返回类型:

bool

引发:

NotImplementedError – 如果子类中未实现该方法。

class nemo_curator.filters.SymbolsToWordsFilter(max_symbol_to_word_ratio=0.1, lang='en')#

删除符号与单词比率大于 0.1 的任何文档,符号可以是井号或省略号。来源:Gopher (Rae et al., 2021)

对于中文和日文文本,我们使用外部库来拆分文本,因为这些语言不是用空格分隔的。对于所有其他语言(如英语),我们假设单词之间用空格分隔。

score_document(text)#

计算给定文档文本的分数。

子类应实现此方法,以定义如何评估和评分文档的文本。

参数:

text (str) – 要评分的文档的文本内容。

返回值:

表示文档相关性或质量的分数或一组分数。返回值类型和结构对于每个子类应保持一致。

返回类型:

Any

引发:

NotImplementedError – 如果子类中未实现该方法。

keep_document(score)#

根据文档的分数确定是否保留文档。

子类应实现此方法,以根据 score_document() 计算的分数定义保留或丢弃文档的标准。

参数:

scores (Any) – score_document() 返回的分数或一组分数。类型应与 score_document() 返回的类型匹配。

返回值:

如果应保留文档,则为 True,否则为 False。

返回类型:

bool

引发:

NotImplementedError – 如果子类中未实现该方法。

class nemo_curator.filters.NumbersFilter(max_number_to_text_ratio=0.15)#

如果文档中超过 15% 的内容包含数字,则丢弃。

score_document(text)#

计算给定文档文本的分数。

子类应实现此方法,以定义如何评估和评分文档的文本。

参数:

text (str) – 要评分的文档的文本内容。

返回值:

表示文档相关性或质量的分数或一组分数。返回值类型和结构对于每个子类应保持一致。

返回类型:

Any

引发:

NotImplementedError – 如果子类中未实现该方法。

keep_document(score)#

根据文档的分数确定是否保留文档。

子类应实现此方法,以根据 score_document() 计算的分数定义保留或丢弃文档的标准。

参数:

scores (Any) – score_document() 返回的分数或一组分数。类型应与 score_document() 返回的类型匹配。

返回值:

如果应保留文档,则为 True,否则为 False。

返回类型:

bool

引发:

NotImplementedError – 如果子类中未实现该方法。

class nemo_curator.filters.UrlsFilter(max_url_to_text_ratio=0.2)#

如果文档中超过 20% 的内容由 URL 组成,则丢弃。

score_document(text)#

计算给定文档文本的分数。

子类应实现此方法,以定义如何评估和评分文档的文本。

参数:

text (str) – 要评分的文档的文本内容。

返回值:

表示文档相关性或质量的分数或一组分数。返回值类型和结构对于每个子类应保持一致。

返回类型:

Any

引发:

NotImplementedError – 如果子类中未实现该方法。

keep_document(score)#

根据文档的分数确定是否保留文档。

子类应实现此方法,以根据 score_document() 计算的分数定义保留或丢弃文档的标准。

参数:

scores (Any) – score_document() 返回的分数或一组分数。类型应与 score_document() 返回的类型匹配。

返回值:

如果应保留文档,则为 True,否则为 False。

返回类型:

bool

引发:

NotImplementedError – 如果子类中未实现该方法。

class nemo_curator.filters.BulletsFilter(max_bullet_lines_ratio=0.9)#

如果超过 90% 的行以项目符号开头,则丢弃。来源:Gopher (Rae et al., 2021)

score_document(text)#

计算给定文档文本的分数。

子类应实现此方法,以定义如何评估和评分文档的文本。

参数:

text (str) – 要评分的文档的文本内容。

返回值:

表示文档相关性或质量的分数或一组分数。返回值类型和结构对于每个子类应保持一致。

返回类型:

Any

引发:

NotImplementedError – 如果子类中未实现该方法。

keep_document(score)#

根据文档的分数确定是否保留文档。

子类应实现此方法,以根据 score_document() 计算的分数定义保留或丢弃文档的标准。

参数:

scores (Any) – score_document() 返回的分数或一组分数。类型应与 score_document() 返回的类型匹配。

返回值:

如果应保留文档,则为 True,否则为 False。

返回类型:

bool

引发:

NotImplementedError – 如果子类中未实现该方法。

class nemo_curator.filters.WhiteSpaceFilter(max_white_space_ratio=0.25)#

如果文档包含大量空格字符,则丢弃。

score_document(text)#

计算给定文档文本的分数。

子类应实现此方法,以定义如何评估和评分文档的文本。

参数:

text (str) – 要评分的文档的文本内容。

返回值:

表示文档相关性或质量的分数或一组分数。返回值类型和结构对于每个子类应保持一致。

返回类型:

Any

引发:

NotImplementedError – 如果子类中未实现该方法。

whitespace_document(score)#

根据文档的分数确定是否保留文档。

子类应实现此方法,以根据 score_document() 计算的分数定义保留或丢弃文档的标准。

参数:

scores (Any) – score_document() 返回的分数或一组分数。类型应与 score_document() 返回的类型匹配。

返回值:

如果应保留文档,则为 True,否则为 False。

返回类型:

bool

引发:

NotImplementedError – 如果子类中未实现该方法。

class nemo_curator.filters.ParenthesesFilter(max_parentheses_ratio=0.1)#

如果句子中超过 10% 的内容在括号内,则丢弃。

score_document(text)#

计算给定文档文本的分数。

子类应实现此方法,以定义如何评估和评分文档的文本。

参数:

text (str) – 要评分的文档的文本内容。

返回值:

表示文档相关性或质量的分数或一组分数。返回值类型和结构对于每个子类应保持一致。

返回类型:

Any

引发:

NotImplementedError – 如果子类中未实现该方法。

keep_document(score)#

根据文档的分数确定是否保留文档。

子类应实现此方法,以根据 score_document() 计算的分数定义保留或丢弃文档的标准。

参数:

scores (Any) – score_document() 返回的分数或一组分数。类型应与 score_document() 返回的类型匹配。

返回值:

如果应保留文档,则为 True,否则为 False。

返回类型:

bool

引发:

NotImplementedError – 如果子类中未实现该方法。

class nemo_curator.filters.LongWordFilter(max_word_length=1000, lang='en')#

如果文档中包含长度超过 1000 个字符的单词,则丢弃。注意:这似乎可以捕捉到诸如最小化的 .js 文件,这些文件在任何地方都没有空格。来源:C4 (Google)

对于中文和日文文本,我们使用外部库来拆分文本,因为这些语言不是用空格分隔的。对于所有其他语言(如英语),我们假设单词之间用空格分隔。

score_document(text)#

计算给定文档文本的分数。

子类应实现此方法,以定义如何评估和评分文档的文本。

参数:

text (str) – 要评分的文档的文本内容。

返回值:

表示文档相关性或质量的分数或一组分数。返回值类型和结构对于每个子类应保持一致。

返回类型:

Any

引发:

NotImplementedError – 如果子类中未实现该方法。

keep_document(score)#

根据文档的分数确定是否保留文档。

子类应实现此方法,以根据 score_document() 计算的分数定义保留或丢弃文档的标准。

参数:

scores (Any) – score_document() 返回的分数或一组分数。类型应与 score_document() 返回的类型匹配。

返回值:

如果应保留文档,则为 True,否则为 False。

返回类型:

bool

引发:

NotImplementedError – 如果子类中未实现该方法。

class nemo_curator.filters.WordCountFilter(min_words=50, max_words=100000, lang='en')#

如果文档包含的单词数量不在指定的范围内,则丢弃。

对于中文和日文文本,我们使用外部库来拆分文本,因为这些语言不是用空格分隔的。对于所有其他语言(如英语),我们假设单词之间用空格分隔。

score_document(text)#

计算给定文档文本的分数。

子类应实现此方法,以定义如何评估和评分文档的文本。

参数:

text (str) – 要评分的文档的文本内容。

返回值:

表示文档相关性或质量的分数或一组分数。返回值类型和结构对于每个子类应保持一致。

返回类型:

Any

引发:

NotImplementedError – 如果子类中未实现该方法。

keep_document(score)#

根据文档的分数确定是否保留文档。

子类应实现此方法,以根据 score_document() 计算的分数定义保留或丢弃文档的标准。

参数:

scores (Any) – score_document() 返回的分数或一组分数。类型应与 score_document() 返回的类型匹配。

返回值:

如果应保留文档,则为 True,否则为 False。

返回类型:

bool

引发:

NotImplementedError – 如果子类中未实现该方法。

class nemo_curator.filters.BoilerPlateStringFilter(
remove_if_at_top_or_bottom=True,
max_boilerplate_string_ratio=0.4,
)#

如果超过 40% 的段落包含样板字符串,则丢弃。这包括诸如“使用条款”、“隐私政策”等内容。来源:很大程度上改编自 Google C4 处理。

score_document(text)#

计算给定文档文本的分数。

子类应实现此方法,以定义如何评估和评分文档的文本。

参数:

text (str) – 要评分的文档的文本内容。

返回值:

表示文档相关性或质量的分数或一组分数。返回值类型和结构对于每个子类应保持一致。

返回类型:

Any

引发:

NotImplementedError – 如果子类中未实现该方法。

keep_document(score)#

根据文档的分数确定是否保留文档。

子类应实现此方法,以根据 score_document() 计算的分数定义保留或丢弃文档的标准。

参数:

scores (Any) – score_document() 返回的分数或一组分数。类型应与 score_document() 返回的类型匹配。

返回值:

如果应保留文档,则为 True,否则为 False。

返回类型:

bool

引发:

NotImplementedError – 如果子类中未实现该方法。

class nemo_curator.filters.MeanWordLengthFilter(
min_mean_word_length=3,
max_mean_word_length=10,
lang='en',
)#

如果平均词长不在指定的范围内,则丢弃。

对于中文和日文文本,我们使用外部库来拆分文本,因为这些语言不是用空格分隔的。对于所有其他语言(如英语),我们假设单词之间用空格分隔。

score_document(text)#

计算给定文档文本的分数。

子类应实现此方法,以定义如何评估和评分文档的文本。

参数:

text (str) – 要评分的文档的文本内容。

返回值:

表示文档相关性或质量的分数或一组分数。返回值类型和结构对于每个子类应保持一致。

返回类型:

Any

引发:

NotImplementedError – 如果子类中未实现该方法。

keep_document(score)#

根据文档的分数确定是否保留文档。

子类应实现此方法,以根据 score_document() 计算的分数定义保留或丢弃文档的标准。

参数:

scores (Any) – score_document() 返回的分数或一组分数。类型应与 score_document() 返回的类型匹配。

返回值:

如果应保留文档,则为 True,否则为 False。

返回类型:

bool

引发:

NotImplementedError – 如果子类中未实现该方法。

class nemo_curator.filters.RepeatedLinesFilter(max_repeated_line_fraction=0.7)#

如果在删除重复行后,文档在行数方面缩减了 30% 以上,则丢弃。来源:Gopher (Rae et al., 2021)

score_document(text)#

计算给定文档文本的分数。

子类应实现此方法,以定义如何评估和评分文档的文本。

参数:

text (str) – 要评分的文档的文本内容。

返回值:

表示文档相关性或质量的分数或一组分数。返回值类型和结构对于每个子类应保持一致。

返回类型:

Any

引发:

NotImplementedError – 如果子类中未实现该方法。

keep_document(score)#

根据文档的分数确定是否保留文档。

子类应实现此方法,以根据 score_document() 计算的分数定义保留或丢弃文档的标准。

参数:

scores (Any) – score_document() 返回的分数或一组分数。类型应与 score_document() 返回的类型匹配。

返回值:

如果应保留文档,则为 True,否则为 False。

返回类型:

bool

引发:

NotImplementedError – 如果子类中未实现该方法。

class nemo_curator.filters.RepeatedParagraphsFilter(max_repeated_paragraphs_ratio=0.7)#

如果在删除重复段落后,文档在行数方面缩减了 30% 以上,则丢弃。来源:Gopher (Rae et al., 2021)

score_document(text)#

计算给定文档文本的分数。

子类应实现此方法,以定义如何评估和评分文档的文本。

参数:

text (str) – 要评分的文档的文本内容。

返回值:

表示文档相关性或质量的分数或一组分数。返回值类型和结构对于每个子类应保持一致。

返回类型:

Any

引发:

NotImplementedError – 如果子类中未实现该方法。

keep_document(score)#

根据文档的分数确定是否保留文档。

子类应实现此方法,以根据 score_document() 计算的分数定义保留或丢弃文档的标准。

参数:

scores (Any) – score_document() 返回的分数或一组分数。类型应与 score_document() 返回的类型匹配。

返回值:

如果应保留文档,则为 True,否则为 False。

返回类型:

bool

引发:

NotImplementedError – 如果子类中未实现该方法。

class nemo_curator.filters.RepeatedLinesByCharFilter(max_repeated_lines_char_ratio=0.8)#

如果在删除重复行后,文档在行数方面缩减了 20% 以上,则丢弃。来源:Gopher (Rae et al., 2021)

score_document(text)#

计算给定文档文本的分数。

子类应实现此方法,以定义如何评估和评分文档的文本。

参数:

text (str) – 要评分的文档的文本内容。

返回值:

表示文档相关性或质量的分数或一组分数。返回值类型和结构对于每个子类应保持一致。

返回类型:

Any

引发:

NotImplementedError – 如果子类中未实现该方法。

keep_document(score)#

根据文档的分数确定是否保留文档。

子类应实现此方法,以根据 score_document() 计算的分数定义保留或丢弃文档的标准。

参数:

scores (Any) – score_document() 返回的分数或一组分数。类型应与 score_document() 返回的类型匹配。

返回值:

如果应保留文档,则为 True,否则为 False。

返回类型:

bool

引发:

NotImplementedError – 如果子类中未实现该方法。

class nemo_curator.filters.RepeatedParagraphsByCharFilter(max_repeated_paragraphs_char_ratio=0.8)#

如果在删除重复段落后,文档在行数方面缩减了 10% 以上,则丢弃。来源:Gopher (Rae et al., 2021)

score_document(text)#

计算给定文档文本的分数。

子类应实现此方法,以定义如何评估和评分文档的文本。

参数:

text (str) – 要评分的文档的文本内容。

返回值:

表示文档相关性或质量的分数或一组分数。返回值类型和结构对于每个子类应保持一致。

返回类型:

Any

引发:

NotImplementedError – 如果子类中未实现该方法。

keep_document(score)#

根据文档的分数确定是否保留文档。

子类应实现此方法,以根据 score_document() 计算的分数定义保留或丢弃文档的标准。

参数:

scores (Any) – score_document() 返回的分数或一组分数。类型应与 score_document() 返回的类型匹配。

返回值:

如果应保留文档,则为 True,否则为 False。

返回类型:

bool

引发:

NotImplementedError – 如果子类中未实现该方法。

class nemo_curator.filters.RepeatingTopNGramsFilter(
n=2,
max_repeating_ngram_ratio=0.2,
lang='en',
)#

如果在删除前 n 个 n-gram 后,文档在字符数方面缩减了 x% 以上,则丢弃。来源:Gopher (Rae et al., 2021)

对于中文和日文文本,我们使用外部库来拆分文本,因为这些语言不是用空格分隔的。对于所有其他语言(如英语),我们假设单词之间用空格分隔。

score_document(text)#

计算给定文档文本的分数。

子类应实现此方法,以定义如何评估和评分文档的文本。

参数:

text (str) – 要评分的文档的文本内容。

返回值:

表示文档相关性或质量的分数或一组分数。返回值类型和结构对于每个子类应保持一致。

返回类型:

Any

引发:

NotImplementedError – 如果子类中未实现该方法。

keep_document(score)#

根据文档的分数确定是否保留文档。

子类应实现此方法,以根据 score_document() 计算的分数定义保留或丢弃文档的标准。

参数:

scores (Any) – score_document() 返回的分数或一组分数。类型应与 score_document() 返回的类型匹配。

返回值:

如果应保留文档,则为 True,否则为 False。

返回类型:

bool

引发:

NotImplementedError – 如果子类中未实现该方法。

class nemo_curator.filters.RepeatingDuplicateNGramsFilter(
n=2,
max_repeating_duplicate_ngram_ratio=0.2,
lang='en',
)#

如果在删除所有重复 n-gram 后,文档在字符数方面缩减了 x% 以上,则丢弃。来源:Gopher (Rae et al., 2021)

对于中文和日文文本,我们使用外部库来拆分文本,因为这些语言不是用空格分隔的。对于所有其他语言(如英语),我们假设单词之间用空格分隔。

score_document(text)#

计算给定文档文本的分数。

子类应实现此方法,以定义如何评估和评分文档的文本。

参数:

text (str) – 要评分的文档的文本内容。

返回值:

表示文档相关性或质量的分数或一组分数。返回值类型和结构对于每个子类应保持一致。

返回类型:

Any

引发:

NotImplementedError – 如果子类中未实现该方法。

keep_document(score)#

根据文档的分数确定是否保留文档。

子类应实现此方法,以根据 score_document() 计算的分数定义保留或丢弃文档的标准。

参数:

scores (Any) – score_document() 返回的分数或一组分数。类型应与 score_document() 返回的类型匹配。

返回值:

如果应保留文档,则为 True,否则为 False。

返回类型:

bool

引发:

NotImplementedError – 如果子类中未实现该方法。

class nemo_curator.filters.PunctuationFilter(max_num_sentences_without_endmark_ratio=0.85)#

如果超过 85% 的句子没有以标点符号结尾,则丢弃。来源:Google C4 处理

score_document(text)#

计算给定文档文本的分数。

子类应实现此方法,以定义如何评估和评分文档的文本。

参数:

text (str) – 要评分的文档的文本内容。

返回值:

表示文档相关性或质量的分数或一组分数。返回值类型和结构对于每个子类应保持一致。

返回类型:

Any

引发:

NotImplementedError – 如果子类中未实现该方法。

keep_document(score)#

根据文档的分数确定是否保留文档。

子类应实现此方法,以根据 score_document() 计算的分数定义保留或丢弃文档的标准。

参数:

scores (Any) – score_document() 返回的分数或一组分数。类型应与 score_document() 返回的类型匹配。

返回值:

如果应保留文档,则为 True,否则为 False。

返回类型:

bool

引发:

NotImplementedError – 如果子类中未实现该方法。

class nemo_curator.filters.EllipsisFilter(max_num_lines_ending_with_ellipsis_ratio=0.3)#

如果超过 30% 的句子以省略号结尾,则丢弃。来源:Google C4 处理

score_document(text)#

计算给定文档文本的分数。

子类应实现此方法,以定义如何评估和评分文档的文本。

参数:

text (str) – 要评分的文档的文本内容。

返回值:

表示文档相关性或质量的分数或一组分数。返回值类型和结构对于每个子类应保持一致。

返回类型:

Any

引发:

NotImplementedError – 如果子类中未实现该方法。

keep_document(score)#

根据文档的分数确定是否保留文档。

子类应实现此方法,以根据 score_document() 计算的分数定义保留或丢弃文档的标准。

参数:

scores (Any) – score_document() 返回的分数或一组分数。类型应与 score_document() 返回的类型匹配。

返回值:

如果应保留文档,则为 True,否则为 False。

返回类型:

bool

引发:

NotImplementedError – 如果子类中未实现该方法。

class nemo_curator.filters.CommonEnglishWordsFilter(min_num_common_words=2, stop_at_false=True)#

如果句子包含至少 2 个常用英语单词,则保留。注意:我们特意检查这些常用单词的小写版本,以删除过度大写的文档。

对于中文和日文文本,我们使用外部库来拆分文本,因为这些语言不是用空格分隔的。对于所有其他语言(如英语),我们假设单词之间用空格分隔。

score_document(text)#

计算给定文档文本的分数。

子类应实现此方法,以定义如何评估和评分文档的文本。

参数:

text (str) – 要评分的文档的文本内容。

返回值:

表示文档相关性或质量的分数或一组分数。返回值类型和结构对于每个子类应保持一致。

返回类型:

Any

引发:

NotImplementedError – 如果子类中未实现该方法。

keep_document(score)#

根据文档的分数确定是否保留文档。

子类应实现此方法,以根据 score_document() 计算的分数定义保留或丢弃文档的标准。

参数:

scores (Any) – score_document() 返回的分数或一组分数。类型应与 score_document() 返回的类型匹配。

返回值:

如果应保留文档,则为 True,否则为 False。

返回类型:

bool

引发:

NotImplementedError – 如果子类中未实现该方法。

class nemo_curator.filters.WordsWithoutAlphabetsFilter(min_words_with_alphabets=0.8, lang='en')#

文档中 80% 的单词必须包含至少一个字母字符。来源:Gopher (Rae et al., 2021)

对于中文和日文文本,我们使用外部库来拆分文本,因为这些语言不是用空格分隔的。对于所有其他语言(如英语),我们假设单词之间用空格分隔。

score_document(text)#

计算给定文档文本的分数。

子类应实现此方法,以定义如何评估和评分文档的文本。

参数:

text (str) – 要评分的文档的文本内容。

返回值:

表示文档相关性或质量的分数或一组分数。返回值类型和结构对于每个子类应保持一致。

返回类型:

Any

引发:

NotImplementedError – 如果子类中未实现该方法。

keep_document(score)#

根据文档的分数确定是否保留文档。

子类应实现此方法,以根据 score_document() 计算的分数定义保留或丢弃文档的标准。

参数:

scores (Any) – score_document() 返回的分数或一组分数。类型应与 score_document() 返回的类型匹配。

返回值:

如果应保留文档,则为 True,否则为 False。

返回类型:

bool

引发:

NotImplementedError – 如果子类中未实现该方法。

class nemo_curator.filters.PornographicUrlsFilter#

检查文档中的任何 URL 是否指向色情内容。

score_document(text)#

计算给定文档文本的分数。

子类应实现此方法,以定义如何评估和评分文档的文本。

参数:

text (str) – 要评分的文档的文本内容。

返回值:

表示文档相关性或质量的分数或一组分数。返回值类型和结构对于每个子类应保持一致。

返回类型:

Any

引发:

NotImplementedError – 如果子类中未实现该方法。

keep_document(score)#

根据文档的分数确定是否保留文档。

子类应实现此方法,以根据 score_document() 计算的分数定义保留或丢弃文档的标准。

参数:

scores (Any) – score_document() 返回的分数或一组分数。类型应与 score_document() 返回的类型匹配。

返回值:

如果应保留文档,则为 True,否则为 False。

返回类型:

bool

引发:

NotImplementedError – 如果子类中未实现该方法。

class nemo_curator.filters.HistogramFilter(
lang='en',
threshold=0.8,
cache_dir='',
threshold_char=']',
)#

NLLB 论文使用的直方图过滤器 (https://arxiv.org/pdf/2207.04672)。详细信息请参见第 30 页。

直方图过滤器的高级思想可以描述为语言 ID 的廉价版本。基本上,它检查数据实例中包含在从相应语言的可信数据收集的字符直方图中的字符比例。如果比例太低,则很可能存在语言 ID 不匹配,应丢弃数据实例。

参考原始 fairseq 实现编写:facebookresearch/fairseq

score_document(text: str) float#

根据加载的直方图计算文本数据实例的直方图标记比例。

参数:

text (str) – 文本数据实例。

返回值:

包含在直方图中的标记的比例。

返回类型:

float

keep_document(score)#

根据文档的分数确定是否保留文档。

子类应实现此方法,以根据 score_document() 计算的分数定义保留或丢弃文档的标准。

参数:

scores (Any) – score_document() 返回的分数或一组分数。类型应与 score_document() 返回的类型匹配。

返回值:

如果应保留文档,则为 True,否则为 False。

返回类型:

bool

引发:

NotImplementedError – 如果子类中未实现该方法。

class nemo_curator.filters.LengthRatioFilter(
max_ratio=3.0,
src_lang='en',
tgt_lang='en',
**kwargs,
)#

(双语文本过滤器) 双语文本的长度比率过滤器,类似于 Moses 工具包中实现的过滤器 (https://github.com/moses-smt/mosesdecoder/blob/master/scripts/training/clean-corpus-n.perl)。

如果源标记和目标标记之间的比率不在指定的范围内,则丢弃。考虑任一方向(src/tgt,tgt/src)。

score_bitext(src: str, tgt: str) float#

标记化源句子和目标句子,并计算长度比率。

参数:
  • src (str) – 源文档字符串。

  • tgt (str) – 目标文档字符串。

返回值:

双语文本的两个翻译方向中的最大比率。

返回类型:

float

keep_bitext(score)#

根据计算的长度比率,决定是否应保留单个文档。

class nemo_curator.filters.TokenCountFilter(
tokenizer: transformers.AutoTokenizer,
min_tokens=0,
max_tokens=inf,
)#

如果文档包含的标记数量超出或低于指定数量,则丢弃。

score_document(text: str) int#

计算给定文档文本的分数。

子类应实现此方法,以定义如何评估和评分文档的文本。

参数:

text (str) – 要评分的文档的文本内容。

返回值:

表示文档相关性或质量的分数或一组分数。返回值类型和结构对于每个子类应保持一致。

返回类型:

Any

引发:

NotImplementedError – 如果子类中未实现该方法。

keep_document(score: int) bool#

根据文档的分数确定是否保留文档。

子类应实现此方法,以根据 score_document() 计算的分数定义保留或丢弃文档的标准。

参数:

scores (Any) – score_document() 返回的分数或一组分数。类型应与 score_document() 返回的类型匹配。

返回值:

如果应保留文档,则为 True,否则为 False。

返回类型:

bool

引发:

NotImplementedError – 如果子类中未实现该方法。

class nemo_curator.filters.SubstringFilter(
substring: str,
position: Literal['prefix', 'suffix', 'any'],
)#

保留在给定位置包含子字符串的文档。如果在给定位置找到子字符串,则给出 1 分,否则为 0 分。

score_document(text: str) int#

计算给定文档文本的分数。

子类应实现此方法,以定义如何评估和评分文档的文本。

参数:

text (str) – 要评分的文档的文本内容。

返回值:

表示文档相关性或质量的分数或一组分数。返回值类型和结构对于每个子类应保持一致。

返回类型:

Any

引发:

NotImplementedError – 如果子类中未实现该方法。

keep_document(score: int) bool#

根据文档的分数确定是否保留文档。

子类应实现此方法,以根据 score_document() 计算的分数定义保留或丢弃文档的标准。

参数:

scores (Any) – score_document() 返回的分数或一组分数。类型应与 score_document() 返回的类型匹配。

返回值:

如果应保留文档,则为 True,否则为 False。

返回类型:

bool

引发:

NotImplementedError – 如果子类中未实现该方法。

代码过滤器#

class nemo_curator.filters.PythonCommentToCodeFilter(
min_comment_to_code_ratio=0.01,
max_comment_to_code_ratio=0.85,
)#
score_document(source)#

计算给定文档文本的分数。

子类应实现此方法,以定义如何评估和评分文档的文本。

参数:

text (str) – 要评分的文档的文本内容。

返回值:

表示文档相关性或质量的分数或一组分数。返回值类型和结构对于每个子类应保持一致。

返回类型:

Any

引发:

NotImplementedError – 如果子类中未实现该方法。

keep_document(score)#

根据文档的分数确定是否保留文档。

子类应实现此方法,以根据 score_document() 计算的分数定义保留或丢弃文档的标准。

参数:

scores (Any) – score_document() 返回的分数或一组分数。类型应与 score_document() 返回的类型匹配。

返回值:

如果应保留文档,则为 True,否则为 False。

返回类型:

bool

引发:

NotImplementedError – 如果子类中未实现该方法。

class nemo_curator.filters.GeneralCommentToCodeFilter(
language,
min_comment_to_code_ratio=0.01,
max_comment_to_code_ratio=0.85,
)#
score_document(source)#

计算给定文档文本的分数。

子类应实现此方法,以定义如何评估和评分文档的文本。

参数:

text (str) – 要评分的文档的文本内容。

返回值:

表示文档相关性或质量的分数或一组分数。返回值类型和结构对于每个子类应保持一致。

返回类型:

Any

引发:

NotImplementedError – 如果子类中未实现该方法。

keep_document(score)#

根据文档的分数确定是否保留文档。

子类应实现此方法,以根据 score_document() 计算的分数定义保留或丢弃文档的标准。

参数:

scores (Any) – score_document() 返回的分数或一组分数。类型应与 score_document() 返回的类型匹配。

返回值:

如果应保留文档,则为 True,否则为 False。

返回类型:

bool

引发:

NotImplementedError – 如果子类中未实现该方法。

class nemo_curator.filters.NumberOfLinesOfCodeFilter(min_lines=10, max_lines=20000)#
score_document(source)#

计算给定文档文本的分数。

子类应实现此方法,以定义如何评估和评分文档的文本。

参数:

text (str) – 要评分的文档的文本内容。

返回值:

表示文档相关性或质量的分数或一组分数。返回值类型和结构对于每个子类应保持一致。

返回类型:

Any

引发:

NotImplementedError – 如果子类中未实现该方法。

keep_document(score)#

根据文档的分数确定是否保留文档。

子类应实现此方法,以根据 score_document() 计算的分数定义保留或丢弃文档的标准。

参数:

scores (Any) – score_document() 返回的分数或一组分数。类型应与 score_document() 返回的类型匹配。

返回值:

如果应保留文档,则为 True,否则为 False。

返回类型:

bool

引发:

NotImplementedError – 如果子类中未实现该方法。

class nemo_curator.filters.TokenizerFertilityFilter(
path_to_tokenizer=None,
min_char_to_token_ratio=2.5,
)#
score_document(source)#

计算给定文档文本的分数。

子类应实现此方法,以定义如何评估和评分文档的文本。

参数:

text (str) – 要评分的文档的文本内容。

返回值:

表示文档相关性或质量的分数或一组分数。返回值类型和结构对于每个子类应保持一致。

返回类型:

Any

引发:

NotImplementedError – 如果子类中未实现该方法。

keep_document(score)#

根据文档的分数确定是否保留文档。

子类应实现此方法,以根据 score_document() 计算的分数定义保留或丢弃文档的标准。

参数:

scores (Any) – score_document() 返回的分数或一组分数。类型应与 score_document() 返回的类型匹配。

返回值:

如果应保留文档,则为 True,否则为 False。

返回类型:

bool

引发:

NotImplementedError – 如果子类中未实现该方法。

class nemo_curator.filters.XMLHeaderFilter(char_prefix_search_length=100)#

此过滤器尝试识别具有不正确文件扩展名的文件。在许多情况下,这些最终成为 XML 文件,我们尝试根据标头识别它们。(来源:Starcoder https://arxiv.org/abs/2305.06161)

score_document(source)#

计算给定文档文本的分数。

子类应实现此方法,以定义如何评估和评分文档的文本。

参数:

text (str) – 要评分的文档的文本内容。

返回值:

表示文档相关性或质量的分数或一组分数。返回值类型和结构对于每个子类应保持一致。

返回类型:

Any

引发:

NotImplementedError – 如果子类中未实现该方法。

keep_document(score)#

根据文档的分数确定是否保留文档。

子类应实现此方法,以根据 score_document() 计算的分数定义保留或丢弃文档的标准。

参数:

scores (Any) – score_document() 返回的分数或一组分数。类型应与 score_document() 返回的类型匹配。

返回值:

如果应保留文档,则为 True,否则为 False。

返回类型:

bool

引发:

NotImplementedError – 如果子类中未实现该方法。

class nemo_curator.filters.AlphaFilter(min_alpha_ratio=0.25)#

此过滤器尝试识别在代码文件中存储为原始文本的大型张量或表格的文件。(来源:Starcoder https://arxiv.org/abs/2305.06161)

score_document(source)#

计算给定文档文本的分数。

子类应实现此方法,以定义如何评估和评分文档的文本。

参数:

text (str) – 要评分的文档的文本内容。

返回值:

表示文档相关性或质量的分数或一组分数。返回值类型和结构对于每个子类应保持一致。

返回类型:

Any

引发:

NotImplementedError – 如果子类中未实现该方法。

keep_document(score)#

根据文档的分数确定是否保留文档。

子类应实现此方法,以根据 score_document() 计算的分数定义保留或丢弃文档的标准。

参数:

scores (Any) – score_document() 返回的分数或一组分数。类型应与 score_document() 返回的类型匹配。

返回值:

如果应保留文档,则为 True,否则为 False。

返回类型:

bool

引发:

NotImplementedError – 如果子类中未实现该方法。

class nemo_curator.filters.HTMLBoilerplateFilter(
min_lang_content_ratio=0.2,
min_lang_content_num_chars=100,
)#

此过滤器尝试识别主要是样板代码的 HTML。

score_document(source)#

计算给定文档文本的分数。

子类应实现此方法,以定义如何评估和评分文档的文本。

参数:

text (str) – 要评分的文档的文本内容。

返回值:

表示文档相关性或质量的分数或一组分数。返回值类型和结构对于每个子类应保持一致。

返回类型:

Any

引发:

NotImplementedError – 如果子类中未实现该方法。

keep_document(score)#

根据文档的分数确定是否保留文档。

子类应实现此方法,以根据 score_document() 计算的分数定义保留或丢弃文档的标准。

参数:

scores (Any) – score_document() 返回的分数或一组分数。类型应与 score_document() 返回的类型匹配。

返回值:

如果应保留文档,则为 True,否则为 False。

返回类型:

bool

引发:

NotImplementedError – 如果子类中未实现该方法。

class nemo_curator.filters.PerExtensionFilter(lang, extension, metadata_file='code_meta.csv')#

此过滤器具有取决于文件扩展名的特定条件。

score_document(source)#

根据行长度和字母数字字符百分比过滤文件。 过滤参数取决于文件扩展名,由 ext_to_filter 给出

keep_document(score)#

根据文档的分数确定是否保留文档。

子类应实现此方法,以根据 score_document() 计算的分数定义保留或丢弃文档的标准。

参数:

scores (Any) – score_document() 返回的分数或一组分数。类型应与 score_document() 返回的类型匹配。

返回值:

如果应保留文档,则为 True,否则为 False。

返回类型:

bool

引发:

NotImplementedError – 如果子类中未实现该方法。