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, 二进制模式, 代码示例, 侦察工具, 凭据扫描, 威胁情报, 实时处理, 工具集, 开发者工具, 情报分析, 数据分析, 数据展示, 白帽工具, 社会工程学, 社工库, 系统调用监控, 红队, 网络侦查, 网络安全, 网络诊断, 网络连接监控, 调查工具, 逆向工具, 隐私保护