18 个版本 (6 个主要变更)
6.0.0 | 2023 年 6 月 17 日 |
---|---|
5.1.0 | 2023 年 6 月 17 日 |
4.0.2 | 2023 年 5 月 30 日 |
3.0.1 | 2023 年 5 月 23 日 |
0.2.0 | 2023 年 5 月 16 日 |
#465 在 文本处理 中
每月下载量 187
33KB
410 行
WhichLicense 检测
这是一个库,用于简化源代码中许可证的检测。
用法
许可证检测
高保真检测
let mut gaoya = GaoyaDetection {
index: MinHashIndex::new(num_bands, band_width, 0.5),
min_hasher: MinHasher32::new(num_bands * band_width),
shingle_text_size,
normalization_fn: DEFAULT_NORMALIZATION_FN,
};
gaoya.load_from_file("licenses");
// OR:
// for l in load_licenses_from_folder("./licenses/RAW"){
// gaoya.add_plain(&l.name, &strip_spdx_heading(&l.text));
// }
Fuzzyhash-rs 检测
let mut fuzzy = FuzzyDetection {
licenses: vec![],
min_confidence: 50,
exit_on_exact_match: false,
normalization_fn: DEFAULT_NORMALIZATION_FN,
};
fuzzy.load_from_file("licenses");
// OR:
// for l in load_licenses_from_folder("./licenses/RAW"){
// fuzzy.add_plain(&l.name, &strip_spdx_heading(&l.text));
// }
归一化函数
归一化函数用于在算法处理之前规范化许可证文本。这样做是为了让算法能够专注于许可证文本本身,而不是许可证文本的格式,这最终提高了算法的准确性(更高的置信度)。
管道系统
管道系统是为了自动提高许可证检测输出的结果而开发的,它允许在置信度太低时进行进一步处理。管道通过在每次执行一个段时同时与算法进行检查来工作。如果顶级(置信度最高)许可证的置信度高于所需的置信度,则管道将停止运行。
步骤如下
- 使用给定的段创建管道。
- 直接从算法获取初始样本,而不执行任何管道段。
- 系统检查顶级(置信度最高)许可证的置信度是否高于所需的置信度。
- 如果是,则管道停止运行并返回结果。
- 如果不是,则管道继续到步骤 4。
- 在运行的许可证上执行下一个段(从第一个段开始)。
- 系统检查顶级(置信度最高)许可证的置信度是否高于所需的置信度。
- 如果是,则管道停止运行并返回结果。
- 如果不是,则管道回到步骤 4 并运行下一个段。
批量段允许您一个接一个地运行多个段,而无需在每个段后对算法进行检查(即测试)。在所有批量段执行完毕后,将对算法进行测试。
示例
let pipeline = Pipeline::new(vec![
Segment::Remove(Using::Regex(Regex::new(r"...").unwrap())),
Segment::Remove(Using::Text("...".to_string())),
Segment::Replace(Using::Text("...".to_string()), "***".to_string()),
Segment::Batch(vec![
Segment::Remove(Using::Regex(Regex::new(r"...").unwrap())),
Segment::Remove(Using::Regex(Regex::new(r"...").unwrap())),
]),
]);
let results = pipeline.run(&algorithm, "<your_incoming_license>", 100.0);
贡献者
ScanCode 许可证数据
初始数据库是通过使用ScanCode工具包中的许可证数据生成的。如果您选择不使用ScanCode许可证数据库,则无需在项目中使用此版权声明。但是,如果您确实使用了ScanCode许可证数据库,则必须在您的项目中包含此版权声明。
版权所有(c)nexB Inc. 及他人。保留所有权利。ScanCode是nexB Inc.的商标。SPDX许可证标识符:CC-BY-4.0 请参阅https://creativecommons.org/licenses/by/4.0/legalcode以获取许可证文本。有关nexB OSS项目的更多信息,请访问https://github.com/nexB/scancode-toolkit。请访问https://aboutcode.org。
依赖项
~5.5–8MB
~146K SLoC