范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

NLP开源形近字算法之形近字列表(番外篇)

  创作目的
  国内对于文本的相似度计算,开源的工具是比较丰富的。
  但是对于两个汉字之间的相似度计算,国内基本一片空白。国内的参考的资料少的可怜,国外相关文档也是如此。
  本项目旨在抛砖引玉,实现一个基本的相似度计算工具,为汉字 NLP 贡献一点绵薄之力。
  推荐阅读:
  NLP 中文形近字相似度计算思路
  中文形近字相似度算法实现,为汉字 NLP 尽一点绵薄之力
  当代中国最贵的汉字是什么?
  NLP 开源形近字算法补完计划(完结篇)
  NLP 开源形近字算法之形近字列表(番外篇)
  开源项目在线化 中文繁简体转换/敏感词/拼音/分词/汉字相似度/markdown 目录
  需求
  有时候我们并不是需要返回两个字的相似,而是需要返回一个汉字的相似列表。 实现思路
  我们可以分别计算所有的汉字之间的相似度,然后保留最大的前100个,放在字典中。
  然后实时查询这个字典即可。 实现方式
  bihuashu_2w.txt   中我们主要需要的是对应的 2W 常见汉字。
  hanzi_similar_list.txt   用来存放汉字和相似字的映射关系。数据初始化public static void main(String[] args) {     final String path = "D:codecoinnlp-hanzi-similarsrcmainresourceshanzi_similar_list.txt";     // 读取列表     List lines = FileUtil.readAllLines("D:codecoinnlp-hanzi-similarsrcmainresourcesnlpbihuashu_2w.txt");     // 所有的单词     Set allWordSet = new HashSet<>();     for(String line : lines) {         String word = line.split(" ")[0];         allWordSet.add(word);     }     // 循环对比     for(String word : allWordSet) {         List list = getSimilarListData(word, allWordSet);         String line = word +" " + StringUtil.join(list, "");         FileUtil.append(path, line);     } }
  •优先级队列取前 100 个
  我们通过优先级队列存储: private static List getSimilarListData(String word, Set wordSet) {     PriorityQueue items = new PriorityQueue<>(new Comparator() {         @Override         public int compare(SimilarListDataItem o1, SimilarListDataItem o2) {             // 相似度大的放在前面             return -o1.getRate().compareTo(o2.getRate());         }     });     for(String other : wordSet) {         if(word.equals(other)) {             continue;         }         // 对比         double rate = HanziSimilarHelper.similar(word.charAt(0), other.charAt(0));         SimilarListDataItem item = new SimilarListDataItem(other, rate);         items.add(item);     }     final int limit = 100;     List wordList = new ArrayList<>();     for(SimilarListDataItem item : items) {         wordList.add(item.getWord());         if(wordList.size() >= limit) {             break;         }     }     return wordList; }相似字的获取
  初始化好数据之后,一切就变得非常简单:
  •接口定义 /**  * 数据接口-相似列表  * @author binbin.hou  * @since 1.3.0  */ public interface IHanziSimilarListData {       /**      * 返回数据信息      * @param word 单词      * @return 结果      * @since 1.3.0      */     List similarList(String word);   }
  •数据获取 public class HanziSimilarListData implements IHanziSimilarListData {       private static volatile Map> map = Guavas.newHashMap();         @Override     public List similarList(String word) {         if(MapUtil.isEmpty(map)) {             initDataMap();         }           return map.get(word);     }       private void initDataMap() {         if(MapUtil.isNotEmpty(map)) {             return;         }           //DLC         synchronized (map) {             if(MapUtil.isEmpty(map)) {                 List lines = StreamUtil.readAllLines("/hanzi_similar_list.txt");                   for(String line : lines) {                     String[] words = line.split(" ");                     // 后面的100个相近词                     List list = StringUtil.toCharStringList(words[1]);                     map.put(words[0], list);                 }             }         }     }   }便利性
  为了用户使用方便,我们在  HanziSimilarHelper   中添加 2 个工具类方法:/**  * 相似的列表  * @param hanziOne 汉字一  * @param limit 大小  * @return 结果  * @since 1.3.0  */ public static List similarList(char hanziOne, int limit) {     return HanziSimilarBs.newInstance().similarList(hanziOne, limit); } /**  * 相似的列表  * @param hanziOne 汉字一  * @return 结果  * @since 1.3.0  */ public static List similarList(char hanziOne) {     return similarList(hanziOne, 10); }测试效果
  我们使用看一下效果:
  我们来看一下【爱】的形近字。 List list = HanziSimilarHelper.similarList("爱"); Assert.assertEquals("[爰, 爯, 受, 爭, 妥, 憂, 李, 爳, 叐, 雙]", list.toString());开源地址
  为了便于大家使用学习,项目已开源。
  https://github.com/houbb/nlp-hanzi-similar 小结
  一个字的形近字可以做很多有趣的事情,这个要看大家的想象力。
  实现方式也不难,最核心的还是相似度的计算。
  我是老马,期待与你的下次重逢。

贡献证券行业支教力量券商发力财商课程编者按继2021年10月中国证券业协会(下称协会)组织证券行业发起促进乡村振兴公益行动之后,为深化行动工作成效,协会搭建志愿者服务课题研究培训交流和项目展示等四个平台,并于今年4月深海评战火波及核电站,挑战全人类安全近日,联合国安理会就扎波罗热核电站安全问题召开紧急磋商,俄罗斯和乌克兰双方就核电站近期频频遇袭各执一词。如今,尽管俄方表态称,国际原子能机构代表团可能于9月初到达扎波罗热核电站,但对话董事长边程赴瑞士上市,给科达制造带来了什么?视频加载中对话董事长边程赴瑞士上市,给科达制造带来了什么?全国首批首家企业在瑞士成功上市两个多月内,完成从提交申请到正式挂牌上市刚过去的7月,科达制造发行的GDR(全球存托凭证)在长江流域高温干旱持续保供水保秋收各地出实招最近,高温天气频频刷屏,截至8月22日,中央气象台已连续33天发布高温预警。连续数日的高温少雨天气,令部分地区旱情持续发展。长江干流及洞庭湖鄱阳湖水位较常年同期偏低4。856。13宁夏自治区科协举办全区科学家精神教育基地培育建设工作培训班为深入贯彻落实习近平总书记关于弘扬科学家精神的重要指示精神,贯彻落实自治区第十三次党代会关于大力弘扬科学家精神的有关要求,推动规范科学家精神教育基地的建设,充分挖掘和利用好科学家精庐山的救赎(第三回)(网络下载转载作者五彩湾)经过了一夜的香甜,两个人重拾生活的信心。此时,看到庐山牯岭镇上已经人来人往,一派热闹景象。王进贤感概地说袁野!我从来没有感到一个早晨可以像今天早晨这样!庐打压华为,你们在兴奋什么?相信很多人也在前两年知道华为任正非用苹果平板和手机,也在很多人面前说过家里人都用苹果手机,好像有人还在网上看到过他和他家人用苹果,在前两年的新闻媒体上,网友分为两派,在很多新闻的评家暴男在家中被刀刺穿头部而亡真相背后令人恶气难抒警局接到报案,有个胖子死在家中,模样十分惨烈。刑警队长立刻带人赶去现场,只见死者倒在厨房,一把水果刀刺穿他的头,身体的周围全是酒瓶碎片,身上还被刺入一些,死状看上去很是惨烈。警员从格力电器准备更换河北经销商的原因分析记者近日了解到,格力电器已经停止对河北经销商的供货,同时河北经销商法人代表徐自发董事长也宣布,不做格力了,转做飞利浦。本着探寻事情真相的目的,记者第一时间电话联系了河北新兴格力电器戚薇因假货事件报警?网友知三当三人品真的有问题前段时间,网友琉璃是什么璃在网上发文怒批戚薇直播间公然卖假货,热搜一出,很多网友也争相表态说自己有类似遭遇,很难维权,戚薇方也是在第一时间回应商品为真并贴出相应证明,随后,该网友将追梦火焰蓝守护万家灯火丨森林消防为了锤炼水上救援技能有多拼?中国青年网8月20日内蒙古电(记者宋莉夏烯然)活饵救援操艇绕标翻船自救水面搜救8月19日,记者随追梦火焰蓝守护万家灯火网络主题采访团来到内蒙古森林消防总队大兴安岭支队绰尔大队水上救
世界上最孤独小镇,300人同住一栋大楼,学校邮局都在楼里整个镇子的人都住在一栋楼里是什么感觉?北美阿拉斯加极寒地带矗立着一栋孤独的大楼,大楼里藏着一个神秘的小镇,镇里的人加狗不足300个,然而住在这里的人,却从出生到死亡都不需要踏出大楼特斯拉又骤降?老司机告诉你什么才是买车的最佳时机特斯拉又降价了,我为什么要说又,准确地说是特斯拉又调价了,特斯拉的价格变化可以说是所有车企里最让人猝不及防的,每次调价都是几家欢喜几家愁,有人欢呼雀跃有人拉横幅维权,这样的次数多了隔夜美股全线上涨,中概股普跌特斯拉宣布下调中国部分车型售价海外资讯当地时间周一,美国三大股指全线收涨,道指涨1。34报31499。62点,标普500指数涨1。19报3797。34点,纳指涨0。86报10952。61点。安进涨3。72,可口联合利华召回干洗洗发水哈佛机器人的特别抓手中英双语闲杂概要1)AppleRaisingPricesforAppleTV,MusicServicesfortheFirstTime。苹果首次对电视和音乐服务提价。2)HarvardsRobot比华为更猛,又有中企登上行业之首,老美这次更没存在感对于华为大家应该都不陌生,也知道,华为不仅只有手机做得好,在电信设备上更是全球之巅,无论是在通讯基站还是微波回传等,市场份额都是行业第一,基本上都是竞争对手诺基亚和爱立信的总和,之三星生态互联有多强双11三星品牌好物推荐大家好,我是毒蘑菇。前阵子和大家分享了一篇Windows手机互联大家用过没?无需特定品牌,堪称多屏协同Lite的文章,来自微软的手机连接功能,达成最好体验的方式是用三星手机或者荣耀竞合结束了?新套餐上架了?竞合还没结束!流量卡现在先不要随便申请!近期有小伙伴咨询是不是竞合已经结束了,是不是就快要上新套餐了,在这里告诉大家哦竞合还没有结束哦现在竞合仍在进行中,还未结束,现在市面上的大流多账号防关联浏览器真的可以做到多账号防关联?跨境商户最头痛的是什么?是店铺没流量?销量上不去?商品堆积?都不是。对于跨境商户来说最头痛的是多账号关联问题。在现在的大环境下,竞争压力越来越大。商户不得不开始选择多账户运营这一条技术向新赋能未来2022科大讯飞全球1024开发者节畅享线上开启作为数字经济转型的关键及前沿创新的重要抓手,人工智能正持续推动众多产业蓬勃发展。10月24日,科大讯飞全球1024开发者节畅享线上板块正式开启,持续到10月28日,每天100017菲董Y2K拍卖会,黄金做的黑莓和Oakley作为流行文化标志人物,PharrellWilliams近期推出了Joopiter线上拍卖平台,并上架个人收藏,共52件拍品正在竞拍中,最高总估价近400万美元,其中黄金配件占比近半闪魔E05真无线蓝牙耳机体验分享,百元耳机但却如此优秀作为手机配件厂商,闪魔有着很多优秀的产品,比如手机壳,手机充电器,数据线等。我使用过闪魔的手机钢化膜,而且家里现在还备着苹果13和华为Mate30的钢化膜。从实际使用体验来看,闪魔