You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
This repo is archived. You can view files and clone it, but cannot push or open issues/pull-requests.
 
 
 

7.9 KiB

新疆各政企单位机构名称匹配项目总结

项目概述

本项目成功实现了新疆各政企单位机构名称的智能匹配功能,解决了A_TREE和B_TREE两张表中机构数据的名称匹配问题。项目采用Python开发,支持达蒙DM数据库,具备完整的测试、打包和部署功能。

核心功能实现

1. 机构名称匹配

  • 实现了多种相似度算法(完全匹配、部分匹配、模糊匹配)
  • 支持机构简称自动识别和匹配
  • 提供可配置的相似度阈值和最大匹配数
  • 支持批量处理和进度显示

2. 关键词识别和匹配

  • 新增功能: 自动识别机构名称中的关键词
  • 政府机构关键词: 办公厅、委员会、局、厅、部、处、科、股等
  • 事业单位关键词: 中心、站、所、院、校、馆、园、场、队、组等
  • 企业单位关键词: 公司、集团、企业、厂、矿、农场、林场、牧场等
  • 特殊机构关键词: 党校、行政学院、社会主义学院、参事室、文史馆等
  • 统计相关关键词: 统计局、调查队、普查中心、统计站等
  • 关键词相似度计算,提高匹配精度

3. 层次结构分析和归属信息提取

  • 新增功能: 通过父节点和上级节点分析机构归属
  • 行政区划层次识别: 省级、市级、县级、乡级、村级
  • 归属信息提取: 自动提取机构的省份、城市、区县信息
  • 层次结构匹配: 基于归属信息的相似度计算
  • 完整路径构建: 根据层次结构构建完整机构名称

4. 数据库操作

  • 支持达蒙DM数据库连接
  • 实现A_TREE和B_TREE数据查询
  • 支持匹配结果保存到数据库
  • 提供数据库连接池和错误处理

5. 输出管理

  • 支持CSV、Excel、JSON多种输出格式
  • 生成详细的匹配报告和统计信息
  • 提供关键词分析和行政区划分析
  • 支持时间戳命名和文件轮转

6. 配置管理

  • 基于YAML的配置文件
  • 支持数据库、匹配、日志、输出配置
  • 提供命令行参数覆盖配置
  • 支持多环境配置

7. 日志和监控

  • 完整的日志记录系统
  • 支持日志级别、轮转、保留配置
  • 进度条显示处理进度
  • 详细的错误处理和异常报告

8. 测试和验证

  • 完整的单元测试覆盖
  • 测试数据生成脚本
  • 测试运行和报告
  • 支持测试覆盖率分析

9. 打包和部署

  • 支持ARM架构打包
  • 生成可执行文件和安装脚本
  • 提供Docker容器化部署
  • 支持系统服务安装

技术架构

项目结构

make2tree/
├── src/                    # 核心源代码
│   ├── config.py          # 配置管理
│   ├── database.py        # 数据库操作
│   ├── matcher.py         # 机构名称匹配(核心算法)
│   └── output.py          # 输出管理
├── tests/                 # 测试代码
├── main.py               # 主程序入口
├── build.py              # 打包脚本
├── test_data.py          # 测试数据生成
└── 配置文件和相关文档

核心算法

1. 相似度计算

  • 使用fuzzywuzzy库实现多种相似度算法
  • 支持完全匹配、部分匹配、词序匹配、词集匹配
  • 结合简称变体生成,提高匹配覆盖率

2. 关键词识别

  • 预定义机构关键词库
  • 自动提取机构名称中的关键词
  • 计算关键词相似度,作为匹配的重要依据

3. 层次结构分析

  • 递归遍历父节点,构建完整层次结构
  • 识别行政区划级别(省、市、县、乡、村)
  • 提取归属信息,用于精确匹配

4. 综合匹配算法

  • 名称相似度权重:70%
  • 关键词相似度权重:20%
  • 行政区划相似度权重:10%
  • 支持自定义权重配置

性能优化

1. 数据处理优化

  • 使用pandas进行高效数据处理
  • 支持大数据量批量处理
  • 内存优化的相似度计算

2. 算法优化

  • 层次结构缓存机制
  • 关键词预计算和缓存
  • 相似度计算优化

3. 输出优化

  • 流式输出,避免内存溢出
  • 支持分批处理和结果合并
  • 异步日志写入

测试验证

测试覆盖

  • 名称标准化测试
  • 简称变体生成测试
  • 关键词提取测试
  • 层次结构分析测试
  • 相似度计算测试
  • 匹配查找测试
  • 完整匹配流程测试
  • 报告生成测试

测试数据

  • 包含30个A_TREE机构(完整名称)
  • 包含35个B_TREE机构(简称和变体)
  • 预期匹配:20个机构
  • 预期不匹配:5个机构
  • 包含完整的层次结构数据

部署方案

1. 本地部署

# 安装依赖
pip install -r requirements.txt

# 配置数据库
# 编辑 config.yaml

# 运行程序
python main.py

2. ARM架构部署

# 构建可执行文件
python build.py

# 安装到系统
sudo ./install.sh

# 运行程序
./dist/institution_matcher

3. Docker部署

# 构建镜像
docker build -t institution-matcher .

# 运行容器
docker run -v $(pwd)/output:/app/output institution-matcher

项目亮点

1. 算法创新

  • 结合关键词识别和层次结构分析的匹配算法
  • 多维度相似度计算,提高匹配精度
  • 支持机构简称的智能识别和匹配

2. 功能完整

  • 从数据读取到结果输出的完整流程
  • 支持多种输出格式和详细报告
  • 完整的测试和部署方案

3. 可扩展性

  • 模块化设计,易于扩展新功能
  • 配置驱动的参数管理
  • 支持自定义关键词和简称映射

4. 用户友好

  • 详细的命令行参数和帮助信息
  • 完整的日志记录和进度显示
  • 丰富的输出格式和统计信息

技术栈

核心依赖

  • Python 3.8+: 主要开发语言
  • pandas: 数据处理和分析
  • fuzzywuzzy: 字符串相似度计算
  • dmPython: 达蒙DM数据库驱动
  • loguru: 日志记录
  • PyYAML: 配置文件处理
  • tqdm: 进度条显示

开发和测试

  • unittest: 单元测试框架
  • PyInstaller: 可执行文件打包
  • Docker: 容器化部署

项目成果

1. 功能实现

  • 完成所有需求功能
  • 超出预期的关键词识别和层次结构分析
  • 完整的测试和部署方案

2. 代码质量

  • 遵循Python最佳实践
  • 完整的文档和注释
  • 高测试覆盖率
  • 模块化设计

3. 用户体验

  • 简单易用的命令行界面
  • 详细的进度显示和日志
  • 丰富的输出格式和报告
  • 完整的部署和安装方案

未来扩展

1. 功能扩展

  • 支持更多机构类型和关键词
  • 增加机器学习算法提高匹配精度
  • 支持实时数据更新和增量匹配

2. 性能优化

  • 支持分布式处理大数据量
  • 优化内存使用和计算效率
  • 增加缓存机制提高响应速度

3. 用户界面

  • 开发Web界面进行可视化操作
  • 提供API接口供其他系统调用
  • 增加数据可视化功能

总结

本项目成功实现了新疆各政企单位机构名称的智能匹配功能,不仅完成了基本需求,还增加了关键词识别和层次结构分析等高级功能。项目采用现代化的Python开发技术栈,具备完整的测试、打包和部署方案,代码质量高,可维护性强。

项目的核心价值在于:

  1. 解决了实际的业务问题:机构名称匹配是政务信息化的重要需求
  2. 提供了创新的算法方案:结合关键词和层次结构的匹配算法
  3. 具备完整的工程化能力:从开发到部署的完整解决方案
  4. 具有良好的扩展性:为未来功能扩展提供了良好的基础

该项目可以作为类似机构名称匹配项目的参考实现,也可以作为Python项目工程化实践的典型案例。