当前位置: 首页 > news >正文

用Python打造智能姓名生成器:从数据分离到AI赋能

用Python打造智能姓名生成器:从数据分离到AI赋能


在这里插入图片描述

目录

  1. 项目概述与功能清单
  2. 环境准备与工具选择
  3. 项目架构设计
  4. 核心代码实现
  5. AI古文解析模块
  6. 交互界面开发
  7. 使用示例与效果展示
  8. 扩展思路与优化建议

1. 项目概述与功能清单

核心功能

  • 数据管理
    • CSV文件存储姓氏/名字库
    • 支持用户导入/导出数据
  • 交互界面
    • 姓名生成与实时预览
    • 已选名单管理(增删改查)
    • 排除词输入框(黑名单过滤)
  • AI赋能
    • 从古文中提取字词及注解
    • 自动生成姓名寓意解析
  • 扩展功能
    • 五行/笔画筛选
    • 生成结果导出为PDF/Excel

2. 环境准备与工具选择

必要工具包

# 基础库
pip install pandas          # 数据管理
pip install numpy           # 数据处理# 图形界面
pip install customtkinter   # 现代化UI库(或使用标准tkinter)# AI相关
pip install transformers    # Hugging Face模型库
pip install jieba           # 中文分词
pip install requests         # 网络请求
pip install bs4             # 网页解析(用于古文爬取)# 文件处理
pip install python-docx     # Word导出
pip install reportlab       # PDF导出

推荐开发工具

  • IDE: VSCode / PyCharm
  • 版本控制: Git + GitHub
  • 文档: Markdown + Typora

3. 项目架构设计

name-generator/
├── data/                   # 数据存储
│   ├── surnames.csv        # 姓氏库
│   ├── male_names.csv      # 男性名字库
│   ├── female_names.csv    # 女性名字库
│   └── ancient_texts/      # 古文原文存储
│
├── core/                   # 核心逻辑
│   ├── generator.py        # 姓名生成算法
│   ├── ai_parser.py        # AI古文解析
│   └── utils.py            # 工具函数
│
├── gui/                    # 界面模块
│   ├── main_window.py      # 主窗口
│   └── components/         # 可复用UI组件
│
├── outputs/                # 生成结果
│   ├── pdf/                # PDF导出
│   └── excel/              # Excel导出
│
└── config.json             # 配置文件(如模型路径)

4. 核心代码实现

数据层(data_loader.py)

import pandas as pd
from pathlib import Pathclass DataLoader:def __init__(self, data_dir="data"):self.data_dir = Path(data_dir)def load_surnames(self):return pd.read_csv(self.data_dir / "surnames.csv")["surname"].tolist()def load_names(self, gender):filename = f"{gender}_names.csv"return pd.read_csv(self.data_dir / filename)["name"].tolist()def save_custom_data(self, data, filename):df = pd.DataFrame(data, columns=["item"])df.to_csv(self.data_dir / filename, index=False)

生成逻辑(generator.py)

import random
from typing import Listclass NameGenerator:def __init__(self, surnames: List[str], names: List[str]):self.surnames = surnamesself.names = namesself.blacklist = set()  # 排除词列表def set_blacklist(self, blacklist: List[str]):self.blacklist = set(blacklist)def generate(self, gender=None, num=5):filtered_names = [n for n in self.names if n not in self.blacklist]return [random.choice(self.surnames) + random.choice(filtered_names)for _ in range(num)]

5. AI古文解析模块

核心功能实现(ai_parser.py)

from transformers import pipeline
import jieba
import requests
from bs4 import BeautifulSoupclass AncientTextAnalyzer:def __init__(self):self.model = pipeline("text2text-generation", model="uer/gpt2-chinese-lyric")self.keywords = set()def extract_keywords(self, text):# 使用jieba提取高频词words = jieba.lcut(text)self.keywords = {w for w in words if len(w) == 1}  # 提取单字return self.keywordsdef get_meaning(self, character):# 调用汉字API获取释义(示例)url = f"https://hanziyuan.net/api/character/{character}"try:res = requests.get(url).json()return res.get("meaning", "暂无注解")except:return "网络请求失败"def generate_name_meaning(self, name):# 生成寓意文案prompt = f"请用古文风格解释名字'{name}'的寓意:"return self.model(prompt, max_length=50)[0]['generated_text']def feed_text(self, text):# 投喂古文并解析self.extract_keywords(text)return {"characters": list(self.keywords),"meanings": {c: self.get_meaning(c) for c in self.keywords}}

古文数据采集示例

def crawl_gutenberg_poetry():"""从古诗文网抓取数据"""url = "https://www.gushiwen.org/"html = requests.get(url).textsoup = BeautifulSoup(html, "html.parser")poems = [div.text for div in soup.select(".contson")]return "\n".join(poems)

6. 交互界面开发

主窗口设计(main_window.py)

import customtkinter as ctk
from tkinter import messageboxclass MainWindow(ctk.CTk):def __init__(self):super().__init__()self.title("AI智能起名系统")self.geometry("800x600")# 左侧配置面板self.setup_left_panel()# 右侧展示面板self.setup_right_panel()def setup_left_panel(self):frame = ctk.CTkFrame(self, width=250)frame.pack(side="left", fill="y")# 排除词输入self.blacklist_entry = ctk.CTkEntry(frame, placeholder_text="输入要排除的字(逗号分隔)")self.blacklist_entry.pack(pady=10)# AI古文输入self.ai_text = ctk.CTkTextbox(frame, height=150)self.ai_text.pack(pady=10)ctk.CTkButton(frame, text="解析古文", command=self.parse_text).pack()def setup_right_panel(self):# 姓名展示列表self.name_list = ctk.CTkScrollableFrame(self)self.name_list.pack(side="right", fill="both", expand=True)# 操作按钮self.export_btn = ctk.CTkButton(self, text="导出结果", command=self.export)self.export_btn.pack(side="bottom")def parse_text(self):text = self.ai_text.get("1.0", "end")analyzer = AncientTextAnalyzer()result = analyzer.feed_text(text)messagebox.showinfo("解析完成", f"提取到{len(result['characters']}个可用字")def export(self):# 实现导出逻辑pass

已选名单管理组件

class SelectedNamesPanel(ctk.CTkFrame):def __init__(self, parent):super().__init__(parent)self.names = []self.listbox = ctk.CTkListbox(self)self.listbox.pack(fill="both", expand=True)# 操作按钮btn_frame = ctk.CTkFrame(self)ctk.CTkButton(btn_frame, text="删除", command=self.delete).pack(side="left")ctk.CTkButton(btn_frame, text="清空", command=self.clear).pack(side="left")btn_frame.pack()def delete(self):selected = self.listbox.curselection()if selected:del self.names[selected[0]]self.update_list()def update_list(self):self.listbox.delete(0, "end")for name in self.names:self.listbox.insert("end", name)

7. 使用示例与效果展示

操作流程演示

# 启动应用
if __name__ == "__main__":app = MainWindow()app.mainloop()
  1. 输入排除字
    在左侧面板输入 伟,强,芳,系统将自动过滤包含这些字的候选名。

  2. 投喂古文
    粘贴《诗经》片段至古文输入框,点击解析后AI提取出 清、昭、穆、雅 等字。

  3. 生成姓名
    点击生成按钮,右侧展示候选名单:

    林清晏  周昭然  陆穆宁  沈雅舟
    
  4. 查看寓意
    双击名字弹出解析窗口:

    林清晏
    清者明澈如水,晏者安然若山,此名寄寓心境澄明、生活安宁之愿。

  5. 导出结果
    支持导出为结构化Excel文件,包含姓名、五行属性和寓意注解。


8. 扩展思路与优化建议

功能扩展

  • 五行筛选器
    添加下拉菜单选择金木水火土属性,结合笔画数逻辑过滤结果
  • API扩展
    接入公安部姓名查重API,避免高频重名
  • 多语言支持
    使用googletrans库实现中英双语注解生成

性能优化

# 添加缓存提升AI响应速度
from functools import lru_cache@lru_cache(maxsize=1000)
def get_meaning_cached(char):return self.get_meaning(char)

用户体验增强

  • 实时预览
    输入排除字时动态刷新候选列表
  • 历史记录
    使用sqlite3保存用户操作记录
  • 音律检查
    调用pypinyin检测姓名读音平仄搭配

结语

通过本项目的实践,可掌握:

  1. 现代化Python GUI开发技巧
  2. 基于Transformer模型的NLP应用方法
  3. 生产级应用的数据架构设计

出于创作的需要,开始开发本项目,目前仍在改进中,内容难免有疏漏,欢迎在评论区留言指导交流😊


http://www.mrgr.cn/news/94673.html

相关文章:

  • 用pyqt做个日期输入控件,实现公农历转换及干支纪时功能
  • MapReduce处理数据流程
  • 【论文阅读】Adversarial Patch Attacks on Monocular Depth Estimation Networks
  • CT重建笔记(四)——三维重建
  • 数据结构-----初始数据结构、及GDB调试
  • 安装配置Anaconda,配置VSCode
  • 西咸新区 能金区调研
  • 设计模式(行为型)-策略模式
  • 基于 Verilog 的时序设计:从理论到实践的深度探索
  • 【AWS入门】AWS云计算简介
  • 快速导出接口设计表——基于DOMParser的Swagger接口详情半自动化提取方法
  • TCP 三次握手四次挥手过程详解
  • 基于物品的协同过滤(itemCF)
  • 编程题-第k个语法符号(中等)
  • RK3568 android11 基于PN7160的NXP NFC移植
  • 基于cat1的贵重物品的状态和位置小型监控系统特色解析
  • hot100算法刷题:二叉树的层序遍历
  • 解决 openeuler 系统 docker 下载慢,docker 镜像加速
  • 线性回归原理推导与应用(五):波士顿房价预测实战
  • Flux 文生图技术解析与部署实践