hanlp中文智慧分詞自動識別文字提取例項

adnb34g發表於2018-11-30


需求:客戶給銷售員自己的個人資訊,銷售幫助客戶下單,此過程需要銷售人員手動複製貼上收穫地址,電話,姓名等等,一個智慧的分詞系統可以讓銷售人員一鍵識別以上各種資訊

經過調研,找到了一下開源專案

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部落格 ” ,連結:http://blog.itpub.net/31524777/viewspace-2222231/,如需轉載,請註明出處,否則將追究法律責任。

相關文章