adnb34g 发表于 2018-11-30 14:01:00

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, 电话 大公告成,不过前提必须下载那个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    电话: 120232323233    address: 江西省南昌市红谷滩新区111号

页: [1]
查看完整版本: hanlp中文智能分词自动识别文字提取实例