前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >hanlp中文智能分词自动识别文字提取实例

hanlp中文智能分词自动识别文字提取实例

作者头像
IT小白龙
修改2018-12-03 09:55:53
2.8K0
修改2018-12-03 09:55:53
举报
文章被收录于专栏:hadoop学习笔记

需求:客户给销售员自己的个人信息,销售帮助客户下单,此过程需要销售人员手动复制粘贴收获地址,电话,姓名等等,一个智能的分词系统可以让销售人员一键识别以上各种信息

经过调研,找到了一下开源项目

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号

---------------------

本文系转载,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文系转载前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档