• jieba分词/jieba-analysis(java版)


    简介

    支持分词模式
    Search模式,用于对用户查询词分词
    Index模式,用于对索引文档分词
    特性
    支持多种分词模式
    全角统一转成半角
    用户词典功能
    conf 目录有整理的搜狗细胞词库
    因为性能原因,最新的快照版本去除词性标注,也希望有更好的 Pull Request 可以提供该功能。

    简单使用

    获取jieba-analysis

    <dependency>
      <groupId>com.huaban</groupId>
      <artifactId>jieba-analysis</artifactId>
      <version>1.0.2</version>
    </dependency>

    案例

    @Test
    public void testDemo() {
        JiebaSegmenter segmenter = new JiebaSegmenter();
        String[] sentences =
            new String[] {"这是一个伸手不见五指的黑夜。我叫孙悟空,我爱北京,我爱Python和C++。", "我不喜欢日本和服。", "雷猴回归人间。",
                          "工信处女干事每月经过下属科室都要亲口交代24口交换机等技术性器件的安装工作", "结果婚的和尚未结过婚的"};
        for (String sentence : sentences) {
            System.out.println(segmenter.process(sentence, SegMode.INDEX).toString());
        }
    }

    原文链接:https://github.com/huaban/jieba-analysis

    我的应用

    package com.analysis;
    
    import java.io.BufferedReader;
    import java.io.InputStreamReader;
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.util.List;
    import java.util.UUID;
    
    import org.junit.Before;
    import org.junit.Test;
    
    import com.huaban.analysis.jieba.JiebaSegmenter;
    import com.huaban.analysis.jieba.JiebaSegmenter.SegMode;
    import com.huaban.analysis.jieba.SegToken;
    
    public class jiebaTest {
    
        private Connection con = null;
        private PreparedStatement pstmt = null;
    
        /**
         * 连接
         */
        @Before
        public void beforeDemo() throws Exception {
            Class.forName("com.mysql.jdbc.Driver");
            String url = "jdbc:mysql://localhost:3306/test?user=root&password=root";
            con = DriverManager.getConnection(url);
        }
    
        /**
         * 分词查询测试
         */
        @Test
        public void getDemo() throws Exception {
            BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
            String str = br.readLine();
    
            String sql = "select * from t_jieba where name = ?";
            pstmt = con.prepareStatement(sql);
    
            pstmt.setString(1, str);
            ResultSet rs = pstmt.executeQuery();
    
            while (rs.next()) {
                System.out.println(rs.getInt(1)+"--"+rs.getString(2)+"--"+rs.getString(3)+"--"+rs.getString(4)+"--"+rs.getString(5));
                pstmt.clearParameters();
                String sql1 = "update t_jieba set times = ? where id = ?";
                pstmt = con.prepareStatement(sql1);
                pstmt.setInt(1, 1+ new Integer(rs.getString(5)));
                pstmt.setInt(2, rs.getInt(1));
                pstmt.executeUpdate();
            }
            
            rs.close();
            pstmt.close();
        }
    
        /**
         * 分词插入测试
         */
        @Test
        public void addDemo() throws Exception {
            String sql = "insert into t_jieba (name,cid,c_name,times) select ?,?,?,? from DUAL where not EXISTS(select name from t_jieba where name=?)";
            pstmt = con.prepareStatement(sql);
            JiebaSegmenter segmenter = new JiebaSegmenter();
            String[] sentences = new String[] { "大话数据结构", "深入浅出设计模式", "JavaEE开发的颠覆者: Spring Boot实战", "java从入门到放弃" };
            for (String sentence : sentences) {
                //System.out.println(segmenter.process(sentence, SegMode.INDEX).toString());
                String uuid = UUID.randomUUID().toString();
                uuid = uuid.replace("-", "");
                List<SegToken> list = segmenter.process(sentence, SegMode.INDEX);
                for (SegToken segToken : list) {
                    String name = segToken.word.trim();
                    if (name != null && !"".equals(name)) {
                        pstmt.setString(1, segToken.word);
                        pstmt.setString(2, uuid);
                        pstmt.setString(3, sentence);
                        pstmt.setString(4, "0");
                        pstmt.setString(5, segToken.word);
                        pstmt.executeUpdate();
                        pstmt.clearParameters();
                    }
                }
            }
            pstmt.close();
            System.out.println("插入成功!");
        }
    
    }
    MyDemo
  • 相关阅读:
    使用Arduino和加速度计自制计步器
    使用MPU6050陀螺仪自制Arduino数字量角器
    使用Arduino和SD卡模块记录数据并导出到Excel
    NUCLEO-8L152开发板中文应用笔记整理集合
    使用Arduino开发板连接干簧管(Reed Switch)的方法
    MSP430 LaunchPad开发板入门教程集合
    使用Arduino开发板和ESP8266从互联网读取数据
    使用Arduino开发板实现与MPU6050陀螺仪传感器连接的方法
    使用Arduino和LED光柱显示器件轻松制作电池电压指示器
    JDK和JRE的区别
  • 原文地址:https://www.cnblogs.com/bky-lzw/p/7799238.html
Copyright © 2020-2023  润新知