- 实际应用场景描述
在社区管理系统中,物业或居委会会发布各种公告,例如:
- 核酸检测安排
- 临时停水通知
- 计划停电信息
- 消防演练预告
居民需要从大量公告中快速获取与自己生活密切相关的紧急信息,但人工筛选耗时且容易遗漏。
因此需要一个自动化工具,实时扫描公告内容,提取关键词,并根据紧急程度排序推送给居民。
-
痛点分析
-
信息量大:社区公告每天可能有多条,居民难以逐条阅读。
-
紧急程度不同:停水、停电、消防演练的紧急程度不同,需要分级提醒。
-
关键词识别:人工判断效率低,容易出错。
-
推送精准度:避免无关信息干扰居民。
-
核心逻辑讲解
-
输入:公告文本(标题 + 内容)。
-
关键词匹配:使用预定义的关键词列表( "核酸"、 "停水"、 "停电"、 "消防演练")。
-
紧急程度映射:为每个关键词设定紧急级别(1-高,2-中,3-低)。
-
排序推荐:根据紧急级别排序,生成提醒列表。
-
输出:按紧急程度推送公告摘要给居民。
-
模块化 Python 代码
文件结构
community_alert/ ├── main.py ├── config.py ├── analyzer.py ├── utils.py └── README.md
"config.py"
关键词与紧急程度映射
1: 高紧急, 2: 中紧急, 3: 低紧急
KEYWORDS = { "核酸": 1, "停水": 1, "停电": 1, "消防演练": 2 }
"utils.py"
def preprocess_text(text): """简单预处理:转小写,去除多余空格""" return text.lower().strip()
"analyzer.py"
from config import KEYWORDS from utils import preprocess_text
class AnnouncementAnalyzer: def init(self): self.keywords = KEYWORDS
def analyze(self, title, content):
"""分析公告,返回匹配的紧急关键词及等级"""
text = preprocess_text(title + " " + content)
matched = []
for kw, level in self.keywords.items():
if kw in text:
matched.append((kw, level))
# 按紧急程度升序(1最高)
matched.sort(key=lambda x: x[1])
return matched
"main.py"
from analyzer import AnnouncementAnalyzer import json
def load_announcements(file_path): """从JSON文件加载公告数据""" with open(file_path, 'r', encoding='utf-8') as f: return json.load(f)
def recommend_alerts(announcements): """为所有公告生成推荐提醒""" analyzer = AnnouncementAnalyzer() results = [] for ann in announcements: matches = analyzer.analyze(ann['title'], ann['content']) if matches: # 取最高紧急程度作为该公告的等级 highest_level = matches[0][1] results.append({ 'title': ann['title'], 'summary': ann['content'][:50] + "...", 'keywords': [m[0] for m in matches], 'level': highest_level }) # 按紧急程度排序 results.sort(key=lambda x: x['level']) return results
def main(): announcements = load_announcements('announcements.json') alerts = recommend_alerts(announcements) print("=== 社区紧急提醒推荐 ===") for alert in alerts: print(f"【等级{alert['level']}】{alert['title']} | 关键词: {', '.join(alert['keywords'])} | 摘要: {alert['summary']}")
if name == "main": main()
"announcements.json"(示例数据)
[ {"title": "本周五核酸检测安排", "content": "本周五上午9点至12点在社区广场进行核酸检测,请居民携带身份证前往。"}, {"title": "临时停水通知", "content": "因管道维修,明日上午8点至下午5点停水,请提前储水。"}, {"title": "消防演练预告", "content": "下周三上午10点社区将举行消防演练,请居民配合参与。"}, {"title": "社区读书会活动", "content": "本周六下午2点举办读书分享会,欢迎参加。"} ]
- README.md
社区公告关键词自动提醒系统
功能
- 自动扫描社区公告
- 识别关键词(核酸/停水/停电/消防演练)
- 按紧急程度排序推送
安装
- 克隆仓库
- 确保 Python 3.7+
- 安装依赖(无第三方库)
使用
- 编辑
announcements.json添加公告 - 运行
python main.py - 查看终端输出的紧急提醒列表
扩展
- 可接入微信/短信推送
- 可增加更多关键词与紧急等级
-
使用说明
-
将公告存入 "announcements.json"。
-
运行 "main.py",程序会输出按紧急程度排序的提醒。
-
可根据需要扩展关键词和紧急等级。
-
核心知识点卡片
知识点 说明 关键词匹配 使用 "in" 运算符进行简单字符串匹配 紧急程度映射 字典存储关键词与等级 模块化设计 分离配置、工具、分析逻辑 JSON 数据读取 "json.load" 读取结构化数据 排序算法 "list.sort(key=...)" 按紧急程度排序 文本预处理 转小写、去空格提高匹配准确率
- 总结
本系统通过关键词匹配 + 紧急程度排序,实现了社区公告的自动化筛选与提醒,解决了居民在大量信息中快速获取关键通知的痛点。
代码采用模块化设计,便于扩展和维护,未来可结合自然语言处理(NLP)提升匹配精度,并集成消息推送服务实现真正的实时提醒。
如果你需要,还可以增加微信推送功能或做一个简单的Web界面,让这个系统更贴近真实社区应用场景。
利用AI高效解决实际问题,如果你觉得这个工具好用,欢迎关注我!