1. 实际应用场景描述
随着城市垃圾分类政策的推行,居民在投放垃圾时常常遇到以下问题:
- 不确定某种垃圾属于哪一类(可回收/有害/厨余/其他)
- 不清楚不同类别垃圾的投放时间和地点
- 缺乏分类知识的持续学习与更新
本工具面向社区居民、物业管理人员、环保志愿者,通过输入垃圾名称,即可快速获得:
- 分类结果
- 投放时间
- 投放点
- 详细分类说明
可用于社区微信小程序后端、Web 服务或本地查询工具。
2. 痛点分析
痛点 影响 解决方案
居民分类知识不足 错误投放,影响回收效率 提供即时查询与说明
投放规则复杂 易混淆时间与地点 明确标注投放要求
知识更新滞后 政策变化未及时传达 可动态更新分类数据
缺乏互动学习 居民参与度低 可扩展为积分/游戏化系统
3. 核心逻辑讲解
1. 数据模型
- 垃圾名称 → 分类标签(可回收/有害/厨余/其他)
- 每个分类有对应的投放时间、地点、说明
- 数据存储在 JSON 文件中,便于维护
2. 匹配逻辑
- 输入垃圾名称,进行模糊匹配(可升级为 NLP 分词 + 相似度计算)
- 返回匹配度最高的分类及详细信息
3. 扩展性
- 可接入数据库(MySQL/MongoDB)存储大规模数据
- 可集成 GIS 地图显示投放点
- 可加入用户反馈机制优化分类准确性
4. 项目结构
garbage_classification/
├── data/
│ └── garbage_data.json # 垃圾分类数据
├── modules/
│ ├── __init__.py
│ ├── loader.py # 加载数据
│ ├── classifier.py # 分类逻辑
│ └── utils.py # 工具函数
├── main.py # 命令行入口
├── README.md # 说明文档
└── requirements.txt # 依赖
5. 核心代码
"modules/loader.py"
import json
import os
DATA_PATH = "../data/garbage_data.json"
def load_data():
"""加载垃圾分类数据"""
if not os.path.exists(DATA_PATH):
return {}
with open(DATA_PATH, 'r', encoding='utf-8') as f:
return json.load(f)
"modules/classifier.py"
from difflib import get_close_matches
def classify_garbage(name, data):
"""模糊匹配垃圾名称并返回分类信息"""
all_names = []
mapping = {}
for category, items in data.items():
for item in items["items"]:
all_names.append(item["name"])
mapping[item["name"]] = {
"category": category,
"disposal_time": items["disposal_time"],
"disposal_point": items["disposal_point"],
"description": items["description"]
}
# 模糊匹配最接近的垃圾名称
matches = get_close_matches(name, all_names, n=1, cutoff=0.6)
if matches:
return mapping[matches[0]]
else:
return None
"modules/utils.py"
def print_result(result):
"""格式化输出结果"""
if not result:
print("未找到该垃圾的分类信息")
return
print(f"\n分类: {result['category']}")
print(f"投放时间: {result['disposal_time']}")
print(f"投放点: {result['disposal_point']}")
print(f"说明: {result['description']}")
"main.py"
from modules.loader import load_data
from modules.classifier import classify_garbage
from modules.utils import print_result
def main():
data = load_data()
print("=== 社区垃圾分类指导工具 ===")
while True:
name = input("\n请输入垃圾名称(输入q退出): ").strip()
if name.lower() == 'q':
break
result = classify_garbage(name, data)
print_result(result)
if __name__ == "__main__":
main()
6. 示例数据
"data/garbage_data.json"
{
"可回收": {
"disposal_time": "每周一、三、五 7:00-9:00",
"disposal_point": "社区东门回收站",
"items": [
{"name": "纸箱", "description": "干净干燥的纸箱属于可回收物"},
{"name": "塑料瓶", "description": "需清空并压扁"}
]
},
"有害": {
"disposal_time": "每月第一周周六 9:00-11:00",
"disposal_point": "社区南门有害垃圾箱",
"items": [
{"name": "电池", "description": "含重金属,需专门回收"},
{"name": "灯管", "description": "易碎,需小心投放"}
]
},
"厨余": {
"disposal_time": "每日 6:00-8:00, 18:00-20:00",
"disposal_point": "社区西侧厨余垃圾桶",
"items": [
{"name": "菜叶", "description": "需沥干水分"},
{"name": "果皮", "description": "可堆肥"}
]
},
"其他": {
"disposal_time": "每日 全天",
"disposal_point": "社区各楼栋其他垃圾桶",
"items": [
{"name": "卫生纸", "description": "不可回收,属其他垃圾"},
{"name": "烟头", "description": "需完全熄灭后投放"}
]
}
}
7. README.md
# 社区垃圾分类指导工具
基于 Python 开发的垃圾分类查询工具,支持垃圾名称自动分类、投放时间与地点提示。
## 功能
- 输入垃圾名称,获取分类及投放信息
- 支持模糊匹配
- 可扩展为 Web/小程序服务
## 使用方法
1. 安装依赖:`pip install -r requirements.txt`
2. 运行:`python main.py`
3. 输入垃圾名称查询
## 数据文件
分类数据存储在 `data/garbage_data.json`,可按需修改。
8. 核心知识点卡片
知识点 说明
JSON 数据存储 轻量级配置与数据管理
模糊匹配
"difflib.get_close_matches" 实现简单相似度匹配
模块化设计 分离数据加载、业务逻辑、工具函数
可扩展性 可升级为 NLP 模型、数据库、GIS 地图
大数据与BI理念 数据驱动决策,知识库持续优化
9. 总结
本项目是一个社区垃圾分类指导工具,结合了大数据与商务智能中的数据管理与检索思想,解决了居民分类知识不足、投放规则不清的痛点。
后续可扩展方向:
- NLP 语义匹配提升准确率
- Web API + 前端页面方便居民使用
- 用户反馈系统收集新垃圾数据
- 地图集成显示最近投放点
如果你需要,可以生成
"requirements.txt" 并打包成完整可运行的项目,甚至提供 Flask Web 版本。
利用AI高效解决实际问题,如果你觉得这个工具好用,欢迎关注我!