ITPub博客

首页 > 人工智能 > 自然语言 > hanlp中文智能分词自动识别文字提取实例

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

自然语言 作者:adnb34g 时间:2018-11-30 11:02:34 2 删除 编辑


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

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

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/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
八年IT互联从业经历,专注网络营销、大数据、人工智能等领域的知识分享

注册时间:2018-03-09

  • 博文量
    184
  • 访问量
    165361