[HanLP]SpringBoot2.3整合HanLP1.7.7

该博客围绕提取地址字符串中区、街乡镇、村字段展开。使用HanLP和SpringBoot技术,通过自定义词典分词获取相关字段,再向经信局请求经纬度和点位名称并保存至数据库。还给出了设计思路的流程图下载链接,最后总结了实现过程中的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、需求场景

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

二、使用技术

HanLP+SpringBoot

三、设计思路

在这里插入图片描述

流程图下载:https://download.youkuaiyun.com/download/qq_36254699/13119828

四、具体实现

  1. pom引入jar
<dependency>
   <groupId>com.hankcs</groupId>
    <artifactId>hanlp</artifactId>
    <version>1.7.7</version>
</dependency>
<dependency>
    <groupId>com.hankcs</groupId>
    <artifactId>hanlp-sources</artifactId>
    <version>1.7.7</version>
</dependency>
  1. 自定义词典,设置自定义词典中的词属性为na:
#自定义词典路径,用;隔开多个自定义词典,空格开头表示在同一个目录,使用“文件名 词性”形式则表示这个词典的词性默认是该词性。优先级递减。
#所有词典统一使用UTF-8编码,每一行代表一个单词,格式遵从[单词] [词性A] [A的频次] [词性B] [B的频次] ... 如果不填词性则表示采用词典的默认词性。
CustomDictionaryPath=data/dictionary/custom/add_place.txt na; non-place.txt n;
  1. 获取属性为na的字符串,拼接到一起实现利用自定义词典进行分词
/**
* 获取ns nt类型字符串,一旦遇到非规定类型直接结束
* ns	地名
* nt	机构团体名
*/
public static String[] getNaStr(String address) {
   List<Term> 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};
}

五、效果

在这里插入图片描述

六、问题总结

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一杯糖不加咖啡

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值