项目实战:用sdgBERT构建一个智能可持续发展目标分类器,只需100行代码!
【免费下载链接】sdgBERT 项目地址: https://gitcode.com/mirrors/sadickam/sdgBERT
项目构想:我们要做什么?
在这个项目中,我们将利用开源模型sdgBERT构建一个智能可持续发展目标(SDG)分类器。该应用的功能是:输入一段英文文本,模型会自动判断这段文本与17个可持续发展目标(SDG)中的哪些目标相关,并输出对应的SDG编号和名称。
- 输入:一段英文文本(例如:"A circular economy is a way of achieving sustainable consumption and production, as well as nature positive outcomes.")。
- 输出:文本对应的SDG编号和名称(例如:SDG 12 - Responsible Consumption and Production)。
技术选型:为什么是sdgBERT?
sdgBERT是一个基于BERT的文本分类模型,专门用于识别文本与可持续发展目标(SDG)的关联性。以下是选择它的核心原因:
- 专为SDG分类优化:sdgBERT是通过对bert-base-uncased模型进行微调得到的,训练数据来源于公开的OSDG社区数据集,能够准确识别文本与SDG的关联性。
- 高准确率:模型的准确率达到90%,Matthews相关系数为0.89,表现优异。
- 开箱即用:模型已经过微调,无需额外训练,可直接用于分类任务。
- 支持多领域文本:训练数据覆盖多个行业和研究领域,适用范围广。
核心实现逻辑
项目的核心逻辑分为以下几步:
- 加载模型和分词器:使用
transformers库加载预训练的sdgBERT模型和对应的分词器。 - 文本预处理:对输入的文本进行分词和编码,生成模型可接受的输入格式。
- 模型推理:将编码后的文本输入模型,获取分类结果。
- 结果解析:将模型的输出转换为对应的SDG编号和名称。
代码全览与讲解
以下是完整的项目代码,关键部分附有详细注释:
# 导入必要的库
from transformers import AutoTokenizer, AutoModelForSequenceClassification
import torch
# 加载模型和分词器
model_name = "sadickam/sdg-classification-bert"
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForSequenceClassification.from_pretrained(model_name)
# 定义SDG编号与名称的映射
sdg_mapping = {
0: "No Poverty",
1: "Zero Hunger",
2: "Good Health and Well-being",
3: "Quality Education",
4: "Gender Equality",
5: "Clean Water and Sanitation",
6: "Affordable and Clean Energy",
7: "Decent Work and Economic Growth",
8: "Industry, Innovation and Infrastructure",
9: "Reduced Inequalities",
10: "Sustainable Cities and Communities",
11: "Responsible Consumption and Production",
12: "Climate Action",
13: "Life Below Water",
14: "Life On Land",
15: "Peace, Justice and Strong Institutions"
}
def classify_sdg(text):
# 对输入文本进行分词和编码
inputs = tokenizer(text, return_tensors="pt", truncation=True, padding=True)
# 模型推理
with torch.no_grad():
outputs = model(**inputs)
# 获取预测结果
predicted_class = torch.argmax(outputs.logits, dim=1).item()
# 返回对应的SDG编号和名称
return predicted_class, sdg_mapping.get(predicted_class, "Unknown")
# 示例使用
text = "A circular economy is a way of achieving sustainable consumption and production, as well as nature positive outcomes."
sdg_number, sdg_name = classify_sdg(text)
print(f"Predicted SDG: SDG {sdg_number} - {sdg_name}")
代码讲解:
- 模型加载:使用
AutoTokenizer和AutoModelForSequenceClassification加载预训练的sdgBERT模型和分词器。 - SDG映射:定义了一个字典
sdg_mapping,将模型的输出编号映射为对应的SDG名称。 - 分类函数:
classify_sdg函数完成文本的分词、编码、推理和结果解析。 - 示例使用:输入一段文本,调用
classify_sdg函数并打印结果。
效果展示与功能扩展
效果展示
输入文本:
"A circular economy is a way of achieving sustainable consumption and production, as well as nature positive outcomes."
输出结果:
Predicted SDG: SDG 12 - Responsible Consumption and Production
功能扩展
- 多语言支持:目前模型仅支持英文,未来可以扩展为多语言分类器。
- 批量处理:优化代码以支持批量文本输入,提高效率。
- 可视化界面:使用Streamlit或Gradio构建一个简单的Web界面,方便用户交互。
- 自定义训练:如果用户有特定领域的数据,可以进一步微调模型以提高分类准确率。
结语
【免费下载链接】sdgBERT 项目地址: https://gitcode.com/mirrors/sadickam/sdgBERT
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



