SnailSploit/AwesomeSnailsOsint

GitHub: SnailSploit/AwesomeSnailsOsint

基于 BERT 的毒性文本片段检测工具,用于识别文本中有争议但可能对摘要生成必要的内容。

Stars: 0 | Forks: 1

# SNAILS 一种检测 prompt 中 toxic 部分的简单方法。 此代码对应论文 "Summarization with Necessary Nuggets extraction" (Mao et al., 2024) 。 ## 方法 ### 动机 生成式摘要模型通常倾向于生成无争议且安全的内容,以避免潜在的危害。然而,在某些情况下,为了使摘要真实准确,包含有争议甚至 toxic 的信息(即 nuggets)是必要的。在这项工作中,我们将必要 toxic 信息的问题表述为“pool toxicity”问题,并提出了“Summarization with Necessary Nuggets extraction”(SNAILS) 方法,从输入文档中提取必要的 toxic nuggets 以辅助摘要模型。 SNAILS 从输入文档中提取必要的 toxic spans,并将其与源文档拼接作为摘要模型的输入,以帮助模型在最终的摘要中包含这些 toxic 但必要的信息。 ### 方法详情 #### Toxic Spans 检测 SNAILS 利用一个在 数据集上训练的 token 级分类器(采用 token-classification head 的 BERT 模型)。该模型以一段文本作为输入,并为每个 token 预测一个 label,指示该 token 是否为 toxic。我们使用经过训练的 token 分类器将每个源文档分解为 spans。具体来说,我们将模型标记为 toxic 的连续 token 序列分组为单个 span,并将模型标记为 non-toxic 的连续 token 序列分组为单个 span。 #### Nugget 选择 为了从提取的 toxic spans 中选择必要的 nuggets,我们基于模型预测的 toxic 分数和 span 与摘要之间的 token 重叠计算了两个指标。我们选择满足以下条件的 toxic spans:1) 预测 toxic 分数排名前 $k$;2) 与 gold standard 摘要具有高 token 重叠。 ## 使用方法 本仓库包含 SNAILS 方法的实现。使用 `snails.py` 获取文档中的 toxic spans。 ```python # 设置器件 device = "cuda" if torch.cuda.is_available() else "cpu" tokenizer = AutoTokenizer.from_pretrained("checksumination/toxic-spans-detection") model = AutoModelForTokenClassification.from_pretrained( "checksumination/toxic-spans-detection" ).to(device) # 示例 from snails import SNAILS snails_helper = SNAILS(device, tokenizer, model) text = "This is an example text with a toxic span: you are stupid." toxic_spans = snails_helper.get_toxic_spans(text) print(toxic_spans) # [('you are stupid', 40, 54, 0.9999960660934448)] ``` ## 引用 如果您觉得此代码有用,请引用我们的论文:
标签:ESC4, ESC8, GitHub, OSINT, Vectored Exception Handling, 二进制模式, 代码示例, 侦察工具, 凭据扫描, 威胁情报, 实时处理, 工具集, 开发者工具, 情报分析, 数据分析, 数据展示, 白帽工具, 社会工程学, 社工库, 系统调用监控, 红队, 网络侦查, 网络安全, 网络诊断, 网络连接监控, 调查工具, 逆向工具, 隐私保护