SpringBoot2.3整合HanLP1.7.7

一、需求场景

提取地址字符串中的 区、街乡镇、村的字段,使用获取到的字段向经信局发起请求获取经纬度和点位名称,保存至数据库。

二、使用技术

HanLP+SpringBoot

三、设计思路

四、具体实现

  1. pom引入jar

    com.hankcs hanlp 1.7.7 com.hankcs hanlp-sources 1.7.7

  2. 自定义词典,设置自定义词典中的词属性为na:

    #自定义词典路径,用;隔开多个自定义词典,空格开头表示在同一个目录,使用"文件名 词性"形式则表示这个词典的词性默认是该词性。优先级递减。 #所有词典统一使用UTF-8编码,每一行代表一个单词,格式遵从单词 词性A A的频次 词性B B的频次 ... 如果不填词性则表示采用词典的默认词性。 CustomDictionaryPath=data/dictionary/custom/add_place.txt na; non-place.txt n;

  3. 获取属性为na的字符串,拼接到一起:

    /**

    • 获取ns nt类型字符串,一旦遇到非规定类型直接结束
    • ns 地名
    • nt 机构团体名 */ public static String\[\] getNaStr(String address) { List termList = StandardTokenizer.segment(address); String word = ""; String hasNa = "false"; for (Term term : termList) { if ("na".equals(term.nature.toString())) { if (word.length() <= term.word.length()) { word = term.word; hasNa = "true"; } } } // 结果第一个是是否找到na属性字符串,第二个是最长的na字符串 return new String\[\]{hasNa, word}; }

五、效果

相关推荐
雪隐5 小时前
个人电脑玩AI-16让5060 Ti给你打工——MiniMax H3 提速实录:从"泡杯茶等视频"到"视频等你",一张 5060 Ti 的自我修养
前端·人工智能·后端
952365 小时前
Sentinel
java·后端·spring·sentinel·springcloud
名字还没想好☜5 小时前
Go 的 sync.Cond 实战:用条件变量做等待/通知,比忙轮询省 CPU
开发语言·数据库·后端·golang·go
zzzll11116 小时前
Spring Boot 入门指南:从零开始构建微服务
spring boot·后端·微服务
运维行者_6 小时前
企业带宽监控工具实战:网络流量分析与异常排查的5个关键能力
运维·服务器·开发语言·网络·分布式·后端·php
长栎6 小时前
你用了五年的消息队列,不知道它背后站着中介者模式
后端
Gopher_HBo6 小时前
路由注册:RouterGroup(routergroup.go)
后端
用户608186527906 小时前
Avalonia UI 控件样式定义的三种方式详解
后端
feng尘6 小时前
volatile 可见性与内存屏障知识点
后端
SamDeepThinking6 小时前
第3篇:企业级CAS单点登录实战-技术架构设计方案
后端·程序员·架构