首页 > 人工智能 > 自然语言 > hanlp中文智能分词自动识别文字提取实例
需求:客户给销售员自己的个人信息,销售帮助客户下单,此过程需要销售人员手动复制粘贴收获地址,电话,姓名等等,一个智能的分词系统可以让销售人员一键识别以上各种信息
经过调研,找到了一下开源项目
1 、 word 分词器
2 、 ansj 分词器
3 、 mmseg4j 分词器
4 、 ik-analyzer 分词器
5 、 jcseg 分词器
6 、 fudannlp 分词器
7 、 smartcn 分词器
8 、 jieba 分词器
9 、 stanford 分词器
10 、 hanlp 分词器
最后选择了 hanlp ,步骤官网都有,下面演示智能匹配地址
1 List<Term> list = HanLP.newSegment().seg(" 汤姆江西省南昌市红谷滩新区 111 号电话 12023232323");
2 System.out.println(list);
输出
1 [ 汤姆 /nrf, 江西省 /ns, 南昌市 /ns, 红谷滩 /nz, 新区 /n, 111/m, 号 /q, 电话 /n, 12023232323/m]
大公告成,不过前提必须下载那个 600 多 M 的 data 包并导入,才可以识别地址,否则只是做了初步的识别
附上完整代码
1 String str = " 汤姆 江西省南昌市红谷滩新区 111 号 12023232323";
2 String address = "";
3 String phone = "";
4 String name = "";
5 List<Term> terms = NLPTokenizer.segment(str);
6 System.out.println(terms);
7 for (Term term : terms) {
8 if (term.nature.startsWith("nr")){
9 //nr 代表人名
10 name = term.word;
11 System.out.println("name: " + term.word);
12 }else if (term.nature.startsWith("m") && term.word.length() == 11){
13 //m 代表数字
14 phone = term.word;
15 System.out.println(" 电话 : " + term.word);
16 }
17 }
18 // 由于地址包含了数字,解析的时候数字成为单独的个体,与实际不符,所以通过差集求出地址
19 address = str.replace(phone, "").replace(name, "").trim();
20 System.out.println("address: " + address);
运行结果
1 name: 汤姆
2 电话 : 12023232323
3 address: 江西省南昌市红谷滩新区 111 号
---------------------
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/31524777/viewspace-2222231/ ,如需转载,请注明出处,否则将追究法律责任。