一、前言

之前使用基于 Python 语言的 Spark 进行机器学习,编程起来是十分简单。
① 但是算法部署到云服务器上,是一个障碍。
② 得借助 Flask/Django 等 Python Web 开发框架,同时这些框架的部署又是一个障碍。
③ 借助 Docker 来简化部署,Spark 环境又是一个障碍。

近来试着将之前的Python版算法改写为 Java 版本。

首先是 jieba 分词的改写。

二、代码

1. Python

① 加载模块

pip  install jieba

② 业务逻辑代码

import jieba

con1 = jieba.cut("曾经不可一世的共享经济,才没两年就真的要凉凉了?")
# 转换成列表
content1 = list(con1) 
print(content1)
# Tfidf 是比较好的方式。
tf = TfidfVectorizer()  
c1 = ' '.join(content1)
# 词合并一句,像英语句子一样,具有间隔,即中文分词
print(c1)   
data = tf.fit_transform([c1])
# 去重复、逗号
print(tf.get_feature_names())  
# 转为二维数组
print(data.toarray())  

在这里插入图片描述

2. Java

① 首先要加入正确的依赖

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

② 业务逻辑代码

package com.cun.utils;
import com.huaban.analysis.jieba.JiebaSegmenter;
import java.util.List;
public class JieBaUtils {
    public static String getSentence(String sentence) {
        JiebaSegmenter jiebaSegmenter = new JiebaSegmenter();
        List<String> strings = jiebaSegmenter.sentenceProcess(sentence);
        StringBuilder sb = new StringBuilder();
        // 简单处理示例
        for (int i = 0; i < strings.size(); i++) {
            if (strings.get(i).equals(",") ||
                    strings.get(i).equals("。") ||
                    strings.get(i).equals("、") ||
                    strings.get(i).equals(":") ||
                    strings.get(i).equals("?")) {
                continue;
            }
            sb.append(strings.get(i)).append(" ");
        }
        return sb.substring(0, sb.length() - 1);
    }
    public static void main(String[] args) {
        String sentence = JieBaUtils.getSentence("搜索引擎模式,在精确模式的基础上,对长词再次切分,提高召回率,适合用于搜索引擎分词。");
        System.out.println(sentence);
    }
}

在这里插入图片描述

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐