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

用 Python 实现成语同频判断:结构模式识别的有趣应用(文中含源码)

🐍 用 Python 实现成语同频判断:结构模式识别的有趣应用(文中含源码)

一、介绍

本文将展示如何使用 Python 自动判断两个成语是否为“同频成语”——
也就是:两个成语的结构是否一致

成语是汉语文化的精粹,短短四字,往往蕴含深意。
然而,从语言学角度看,成语的结构模式也很有规律,比如:

  • “高高兴兴”“快快乐乐” → AABB
  • “将计就计”“讨价还价” → ABAB
  • “滔滔不绝”“茫茫人海” → AABC
  • “自相矛盾”“刻舟求剑” → ABCD

这些结构规律可以用于自动语言分析、汉语教学软件、诗词生成器等自然语言处理场景。

二、什么是“同频成语”?

在语言学中,如果两个成语的结构相同,就称它们是“同频成语”。

成语1 成语2 结构 是否同频
高高兴兴 快快乐乐 AABB ✅ 是
将计就计 讨价还价 ABAB ✅ 是
滔滔不绝 茫茫人海 AABC ✅ 是
守株待兔 喜气洋洋 ABCD vs AABB ❌ 否

这里的 “AABB”“ABAB”“AABC”“ABCD” 等结构模式,可以通过字的重复规律自动推断出来。


三、算法思路

我们不直接查表,而是根据每个字的出现顺序,构建一个“模式字符串”。

例如:

  1. 成语 “高高兴兴”:

    • 第1字“高” → A
    • 第2字“高”重复 → A
    • 第3字“兴” → B
    • 第4字“兴”重复 → B
      → 模式:AABB
  2. 成语 “将计就计”:

    • “将” → A
    • “计” → B
    • “就” → C
    • “计”重复 → B
      → 模式:ABCB(非标准,但相似于 ABAB)

因此,如果两个成语的模式字符串完全一致,我们就认为它们是“同频”的。


四、Python 源代码

以下是完整的 Python 代码👇

# -*- coding: utf-8 -*-
# 成语同频判断程序
# 功能:判断两个成语的结构是否相同(即是否为“同频成语”)# =============================
# 一、定义成语结构提取函数
# =============================def get_pattern(chengyu: str) -> str:"""根据汉字重复情况生成结构模式字符串。例如:- "高高兴兴" → AABB- "将计就计" → ABAB- "自相矛盾" → ABCD- "滔滔不绝" → AABC作用:通过检测每个汉字出现的顺序规律,用字母表示成语的结构类型。"""# 创建一个空字典,用来存储“汉字 → 模式字母”的映射# 例如 {"高": "A", "兴": "B"}mapping = {}# 用于保存最终的模式结果,如 ["A", "A", "B", "B"]pattern = []# 初始化下一个可用的模式字母,从 "A" 开始依次递增next_char = 'A'# 遍历成语中的每一个汉字for char in chengyu:# 如果当前汉字尚未出现过if char not in mapping:# 将该汉字分配给当前的模式字母mapping[char] = next_char# 下一个新汉字使用下一个字母(A→B→C→...)next_char = chr(ord(next_char) + 1)# 不论新旧,把当前字对应的模式字母加入 pattern 列表pattern.append(mapping[char])# 把 ['A', 'A', 'B', 'B'] 转换为 "AABB" 返回return ''<
http://www.dtcms.com/a/465624.html

相关文章:

  • Element中 el-tree 如何隐藏 Tree 组件中的父节点 Checkbox
  • 基于「多模态大模型 + BGE向量检索增强RAG」的航空维修智能问答系统(vue+flask+AI算法)
  • 基于屏幕空间投影面积的剔除(Screen-space Area Culling, SSAC)
  • Google 智能体设计模式:路由总结
  • 大庆网站建设公司哪家好论坛网站怎么建设
  • AI智能体赋能历史和社会科学领域之仿真:崩塌方程式 —— 复杂系统内源性衰退的统一理论与领导力行动框架
  • MATLAB进行数据的各种统计分析
  • Google 智能体设计模式:并行化
  • 数据仓库入门:从超市小票看懂数仓
  • 公众号运营技巧河北省邢台市seo
  • BEVFUSION解读(五)
  • 制造行业档案管理难题,档案宝如何灵活破局?
  • 哈尔滨服务器租用-青蛙云
  • 深度解析 Spring Boot 应用 Logback 初始化失败问题:从报错定位到彻底解决
  • leetCode——二叉树刷题——平衡二叉树
  • 资讯网站 整体ui自己在线制作logo免费图片
  • 网站源码下载免费一 网站建设管理基本情况
  • Linux内核架构浅谈8-Linux内核与UNIX的传承:设计思想与特性差异
  • C# 写入CSV文件和导出CSV文件总结
  • 基于NVIDIA ORIN+FPGA+AI自动驾驶硬件在环注入测试
  • 怎么帮网站做支付接口王妃说此生不复相见
  • 虚幻基础:NPC制作
  • 智能眼镜行业腾飞在即,苹果/微美全息锚定“AR+AI眼镜融合”之路抢滩市场!
  • vue中慎用v-if和v-show导致不好排查无预期的错误和异常
  • Rokid JSAR 技术开发全指南:基于 Web 技术栈的 AR 开发实战
  • 顶尖高校读研经验-读研生活篇
  • 例点估算网站开发项目工作量推荐做任务网站
  • 【RH850F1KMS1】一文了解瑞萨MCU的芯片引脚标识名称
  • MPLS技术详解1:原理、架构与转发机制详析
  • WPF自定义控件之环形进度条