使用结巴分词(jieba)对自然语言进行特征预处理(Python、Java 实现)
一、前言之前使用基于 Python 语言的 Spark 进行机器学习,编程起来是十分简单。① 但是算法部署到云服务器上,是一个障碍。② 得借助 Flask/Django 等 Python Web 开发框架,同时这些框架的部署又是一个障碍。③ 借助 Docker 来简化部署,Spark 环境又是一个障碍。近来试着将之前的Python版算法改写为 Java 版本。首先是 jieba 分词的...
·
一、前言
之前使用基于 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);
}
}
更多推荐
已为社区贡献2条内容
所有评论(0)