高亮显示与拼音汉字互转及文本相似度匹配

中文分词

这个分词算法是基于网上一个叫IK分词算法(这里并没有使用我的那个敏感词过滤算法)!我只是将它的词表进行了优化和补充。在这个IK算法基础上主要做的就是将Lucene部分去除,只留下核心的分词逻辑。

相关词搜索

这个部分是使用敏感词查找算法的理念,但算法上不同!所谓相关词搜索,就是从指定的词中查找出词库中所有与这些词相关的词,也就是从一个词的集合中查找另一个词的集合!这个逻辑与场景不同于从一个目标文本中匹配指定词库中的词,它相当于从若干个目标文本中匹配指定词库中的词!
这里的算法思想是:先将所有词库中的词存储在一张定义的内存表中,每个词进行编号,然后将词库中的所有词中的每个字建立索引,索引信息中说明该字在哪些词中拥有(即记录这些词的编号信息),在匹配时,将目标词进行循环处理,处理方式为:看目标词的第一个字有没有在索引中,如果有,取出这个索引中的所有词,然后再用indexOf进行判断是否存在,否则直接通过!在查找出所有相关词的同时会按照得分进行排序(相关词的数据结构为compareable)并最终返回查找到的相关词。
这里需要解释的是,因为目标词库中的词基本上不会太多,因此这个算法在效率上还是没有多大问题的!

高亮显示

这个算法使用的是敏感词查找算法!这里对查找的过程不再说明,现在说明一些替换的方式:在替换逻辑上,考虑到不同场景使用不同的高亮方式,因此这里的接口输入的是一个Formatter抽象类,用户可以根据自己不同的需求自己扩展高亮方式!系统中默认实现了一个HTML方式的高亮实现类。
其中Formatter类的代码为:

public abstract class Formtter {
    /**
     * 将指定的字符串用该格式化器进行格式化操作!
     * 
     * @param text 预处理的内容
     * @return 返回处理过的内容
     */
    public abstract String format(Lexeme word);

    /**
     * 获取格式化的开始标志符号
     * 
     * @return
     */
    public abstract String getStartTag();

    /**
     * 获取格式化的结束标志符号
     * 
     * @return
     */
    public abstract String getEndTag();
}

目前还存在一些问题:不能很好有效地解决带有特殊内容的高亮,如带有格式的信息,如XML、HTML等!

汉字与拼音互转

在搜索规划路线上,我们要求后期实现根据用户输入的词还要提示用户可以查找与之拼音相同的词,这样可以做到帮用户进行一定的纠错和提示,如用户输入“港铁”,则系统会提示用户可以输入“钢铁”查询试试。
这个功能的算法理念也是基于敏感词过滤算法。但所不同的地方在于汉字与拼音的转换过程中对多音字的处理一定要准确!因此这里的重点是如何处理多音字的拼音与汉字的转换问题。
在汉字转换为拼音时,要分清楚哪个多音字该发什么音,这时可以将所有多音字的词语作为词库,将整个目标文本中的多音字词语转换为拼音,剩下的字就可以直接转换为拼音了,如果有的多音字词语没有被完整收录,则显示它的所有拼音的情况!
在拼音转换为汉字时,因为每个拼音都有若干个字,因此需要尽量将词语对应的拼音作为词库,将整个目标文本中的词拼音转换为对应的词语,然后其余的进行汉字转换,如果一个发音有多个汉字,则显示它的所有汉字的情况。
在整个转换过程中,如果遇到不需要转换的内容,则直接保留下来!另外,这个算法还有需要完善的地方:如增加词的排序功能(因为根据业务不同,词的得分情况也不同,所以应该在转换时,将得分靠前的词优先匹配并将整个结果靠前)、有时候不能做出精确的拼音到汉字的转换,如“change”可能会被转换为“谗歌”等(当然这仅仅只是一个例子,真正情况下只可能转换为“嫦娥”,因为词典中有这个词与拼音)。

相似度匹配

其算法原理基于三个个:敏感词过滤算法、分词算法与最小编辑距离算法。
敏感词过滤算法是将词当中的一些无意义的词过滤掉,如:“有限公司”等。
分词算法的作用是将过滤剩下的内容进行分词,并将这些词建立索引,便于缩小计算的集合范围。
最小编辑距离的作用是计算两个字符串之间的相似度。因此,其算法的完整过程可以描述如下(如果以后这块数据太大,而且需求变大,则将采用搜索服务来处理):

  1. 将所有集合信息(如所有已审核的公司名称)去除无意义词(如地名、“有限公司”等词)之后,分词建立索引;
  2. 将用户输入的词进行去除无意义的词之后,分词,并用这些分词从集合中查询出所有相关的信息;
  3. 对这些查询出来的信息进行相似度计算,将相似度超过阀值的保存并按照相似度降序排列(即相似度越高排越前面)
计算2个拼音的相似度 PHP版本 计算2个拼音的相似度,百度示例是JAVA版本的 我修改成PHP 版本的。原文是在我的博客,欢迎大家访问 点击打开链接(点这里)使用方法如 getEditDistance(“zhang1,san1”, “zhang1,shan1”); (JAVA版本)public static int getEditDistance(String s, String t) { int d[][]; ... 阅读详情

相关推荐

Java之词义相似度计算(语义识别、词语情感趋势、词林相似度、拼音相似度、概念相似度、字面相似度)

Java之词义相似度计算(语义识别、词语情感趋势、词林相似度、拼音相似度、概念相似度、字面相似度)

多种相似度计算的python实现

前言         在机器学习中有很多地方要计算相似度,比如聚类分析和协同过滤。计算相似度的有许多方法,其中有欧几里德距离(欧式距离)、曼哈顿距离、Jaccard系数和皮尔逊相关度等等。我们这里把一些常用的相似度计算方法,用python进行实现以下。大家都是初学者,我认为把公式先写下来,然后再写代码去实现比较好。 欧...

Flaneur-yz的博客 2639

拼音汉字模糊匹配字库(仿google和百度搜索引擎字词库)

拼音汉字模糊匹配字库(仿google和百度搜索引擎)共有2万多个字词和拼音对应

拼音字符串相似度

语音识别出的结果并不一定是我们想要的汉子,例如:“张三” &“张叁”。所以如何判断识别出的结果是我们想要的,一种方法就是用到拼音的模糊比较。

m0_37749564的博客 1343

中文文本相似度匹配算法

中文文本相似度匹配算法 simHash 海明距离 IK分词 完整的可运行的示例代码 包含simHash 算法,使用IK 对中文文本进行分词处理

C#实现计算两个特征词相似度

中文信息处理过程中用到的,C#实现计算两个特征词相似度

python人工智能是什么意思_Python人工智能之路 jieba gensim 最好别分家之最简单的相似度实现...

简单的问答已经实现了,那么问题也跟着出现了,我不能确定问题一定是"你叫什么名字",也有可能是"你是谁","你叫啥"之类的,这就引出了人工智能中的另一项技术:自然语言处理(NLP) : 大概意思就是 让计算机明白一句话要表达的意思,NLP就相当于计算机在思考你说的话,让计算机知道"你是谁","你叫啥","你叫什么名字"是一个意思这就要做 : 语义相似度接下来我们用Python大法来实现一个简单的自然...

weixin_39779537的博客 239

elasticsearch-analysis-lc-pinyin拼音分词器

该插件是elasticsearch拼音分词插件,支持中文,拼音,首字母混合搜索。 在实际搜索需求中,常常需要对中文做拼音搜索,首字母搜索或者中文拼音首字母混合搜索。比如要对 "广发聚财信用" 这几个中文进行拼音搜索,我们可能的搜索关键字:“guangfa”,“gfjc”,“guangfajucai”,“guangfjc”,“gfajcai”,“广发juc” 等等的混合搜索

HarmonyOS ArkTS开发实战:用Axios封装一个通用的网络请求工具类(附完整代码)

本文详细介绍了如何在HarmonyOS ArkTS开发中利用Axios封装一个通用的网络请求工具类,涵盖架构设计、核心模块实现、UI状态联动及高级功能扩展。通过单例控制器、拦截器链配置和Token自动刷新机制,提升网络请求的稳定性和可维护性,适用于各类HarmonyOS应用开发场景。

weixin_30772105的博客 491

RAW、RGB、YUV图像格式的采样与存储原理详解

本文详细解析了RAW、RGB和YUV三种核心图像格式的采样与存储原理。RAW是传感器原始数据,信息完整但需后期处理;RGB直接对应显示,直观但数据量大;YUV通过亮色分离与色度下采样,在保证观感的前提下大幅提升传输与存储效率,是视频编码与流媒体的主流格式。理解其差异是图像处理与视频开发的基础。

e4f5g6h7的博客 516

Unity UGUI集成Pinyin4Net实现中文智能输入与动态切换

在Unity应用开发中,中文输入处理是提升用户体验的关键环节。其核心原理在于将中文字符转换为拼音,并基于此进行智能匹配与提示。这项技术通过集成拼音转换库,赋予UI组件理解中文拼音的能力,从而在灵活性、性能和包体大小之间取得平衡。其技术价值在于能够实现不依赖系统输入法的深度自定义输入解决方案,支持实时搜索、智能提示和内容过滤等功能。典型的应用场景包括游戏内的物品搜索、聊天框好友@功能以及角色昵称输入等需要中文智能输入的界面。本文以Unity UGUI框架为基础,详细介绍了如何集成Pinyin4Net库,构建一

weixin_34194087的博客 563

Anthropic三件套重构AI工作流:Claude Code、Design与桌面宠物实战指南

AI协作已从单点工具迈入系统化工作流阶段。理解AI作为‘协作者’而非‘执行器’的本质,是提升工程效率的关键前提;其核心在于对任务调度、自适应推理与人机交互边界的重新定义。Claude Code的xhigh effort机制体现了分层推理的工程智慧,Claude Design以HTML为原生设计语言实现设计-代码一体化,而桌面宠物则将抽象的token消耗具象为可感知的硬件反馈。这些能力共同指向一个趋势:AI工作流正从prompt调参走向契约式委派、从界面割裂走向跨模态统一。本文结合Opus 4.7最新实践,解

a4512138的专栏 485

Pycorrector:开箱即用的中文文本纠错工具,降低NLP应用门槛

自然语言处理(NLP)是人工智能的核心领域之一,旨在让计算机理解、解释和生成人类语言。其基本原理是通过算法模型学习语言的统计规律和语义表示。在众多NLP任务中,文本纠错具有极高的技术价值,它能自动检测并修正文本中的拼写、语法和用词错误,是提升内容质量和用户体验的关键技术。该技术广泛应用于搜索引擎查询修正、智能输入法、内容审核、OCR/ASR后处理以及文档校对等场景。Pycorrector作为一个开源的中文文本纠错工具,通过整合规则、统计语言模型和深度学习模型,提供了一个统一且易用的API,显著降低了中文纠错

weixin_33971977的博客 336

基于CNN对抗嵌入的图像隐写——CNN-Based Adversarial Embedding for Image Steganography

CNN-Based Adversarial Embedding for Image Steganography https://ieeexplore.ieee.org/abstract/document/8603808 这篇论文发表在TIFS( IEEE TRANSACTIONS ON INFORMATION FORENSICS AND SECURITY),TIFS是网络与信息安全领域的国际两大顶级期刊之一,中国计算机学会(CCF)推荐的A类期刊,SCI一区TOP期刊,目前影响因子有7多了。 1 概

weixin_48654804的博客 2279

D16: OpenClaw + Notion API:知识管理新玩法

本文介绍了如何利用OpenClaw连接Notion API构建自动化知识管理系统。文章首先分析了传统知识管理的痛点,包括信息分散、更新不及时等问题,并对比了Notion与其他工具在API完整性、结构化程度等方面的优势。接着详细说明了Notion API的获取和授权流程,并设计了包含项目知识库、技术决策库和会议纪要库的三层架构系统。最后通过会议纪要自动归档的实战案例,展示了如何通过YAML配置实现从飞书会议到Notion的自动化知识沉淀流程。该方案能有效解决团队知识管理中的信息碎片化问题,提升协作效率。

刘一说的IT专栏 275

ElasticSearch学习

ElasticSearch使用教程

mkldxnh的博客 479

主流几个JDK版本:JDK 8、JDK 11、JDK 17 和 JDK 21 的区别

主流几个JDK版本:JDK 8、JDK 11、JDK 17 和 JDK 21 的区别

技术分享 1727

濒危语言AI处理:极小数据下的轻量级多层架构实践

濒危语言处理是自然语言处理(NLP)中极具挑战性的低资源场景,其核心在于应对语料稀缺、标注缺失、算力受限与文化敏感等多重约束。传统端到端大模型因依赖海量同质化数据,在此类任务中常出现过拟合、部署失败与文化误读等问题。因此,基于微模块化、分层解耦与本地化运行的轻量级架构成为更可行的技术路径——它融合声学增强、形态解析、语义锚定与交互生成四层设计,强调100行代码可理解、1GB内存可运行、1小时训练可收敛。该范式不仅支撑语音识别、词干提取、文化适配等关键能力,更服务于语言学家、社区教师与母语者等真实用户,在树莓

weixin_30527423的博客 406

第1章 机器人SLAM算法工程师主要做什么的?(附SLAM学习路线及资料推荐)

对于想从事机器人与自动驾驶领域的在校大学生、研究生来说,建图定位算法工程师是一个极具发展潜力的岗位,而SLAM知识体系则是胜任该岗位的核心支撑。从基础的计算机工具、C++语言,到核心的开源框架、数学知识,再到硬件衔接与项目实践,每一个环节都不可或缺。建议大家结合自身兴趣确定侧重方向(如激光SLAM、融合定位),先通过开源项目建立实践认知,再补全理论知识,同时积极参与社区交流。

行知SLAM 955

全新YOLO26有效涨点改进专栏目录 | 本专栏持续更新500+篇内容 | 包含各种卷积、主干网络、各种注意力机制、检测头、损失函数、小目标检测改进、二次创新模块、独家创新等几百种创新点改进

🔥《2026年YOLO26改进专栏》🔥 🚀持续更新500+最前沿创新改进点(顶会顶刊论文/独家创新策略),涵盖主干网络、各种卷积、注意力机制、检测头等模块,助力科研论文发表与模型性能提升,支持检测/分割/分类任务。订阅即获完整可运行项目,提供专业QQ答疑群,适合科研发论文(SCI/CCF/核心)及工业应用(PCB/医学/遥感检测)。专栏价格将逐步上涨,早订更优惠! ⭐特色:非计算机专业友好、模块可自由组合、全网独家创新;📌适用:研究生大论文和小论文创新、小目标检测、多领域科研应用,满足不同研究需求。

Ai缝合怪、助力小伙伴高效发论文 5163

Python 学习 ---> 模块、pypi ( 模块库 )、添加模块路径

什么是 模块 在 Python 中,一个.py文件就是一个模块(Module)。模块的名字就是文件的名字。在模块内部,通过全局变量__name__可以获取模块名(即字符串) 模块作用 为了实现代码的复用,通常会把一些其他程序中重用的代码拿出来单独放在一个程序文件中,

freeking101的博客 3485

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

python 拼音相似度_各种相似度计算的python实现

各种相似度计算的python实现前言在数据挖掘中有很多地方要计算相似度,比如聚类分析和协同过滤。计算相似度的有许多方法,其中有欧几里德距离、曼哈顿距离、Jaccard系数和皮尔逊相关度等等。我们这里把一些常用的相似度计算方法,用python进行实现以下。如果是初学者,我认为把公式先写下来,然后再写代码去实现比较好。欧几里德距离几个数据集之间的相似度一般是基于每对对象间的距离计算。最常用的当然是欧几...

weixin_39572972的博客 437

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

python计算汉字拼音的相似拼音

找出单字的相似拼音

killyouworld的博客 766

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

中文相似度匹配算法

基于音形码的中文字符串相似度算法 背景介绍 字符串相似度算法是指通过一定的方法,来计算两个不同字符串之间的相似程度。通常会用一个百分比来衡量字符串之间的相似程度。字符串相似度算法被应用于许多计算场景,在诸如数据清洗,用户输入纠错,推荐系统, 剽窃检测系统,自动评分系统,以及网页搜索和DNA序列匹配这些方向都有着十分广泛的应用。   常见的字符串相似度算法包括编辑距离算法(EditDista

chndata的专栏 6万+
上一篇: 敏感词过滤算法实现
下一篇: Maxthon插件开发
hellohank
博客等级 码龄19年 0粉丝 5原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值