文本聚类 java_【Java】文本聚类
【Java】文本聚类
前言:
由于接到一个任务,大概是对回复内容的质量进行评估(有点类似于情感分类),由于这种分类,没有定性的指标,只能认为规定 好——坏 之间的几个梯度指标,但由于有些回复的内容过长,人工打标签的时候不方便,我就想着使用 主题抽取模型抽取长文本转化为短文本,再利用 文本聚类 的方法,把相似的文本存放到一起
准备工作
由于需要处理表格数据,这里我用到了java的 poi 框架
安装:
由于我是使用mavan构建的项目,所以直接添加依赖就可以了
org.apache.poi
poi
3.11
org.apache.poi
poi-ooxml
3.11
org.apache.poi
poi-ooxml-schemas
3.11
文本聚类和主题抽取
我直接采用hanlp这个框架中的模型
项目流程
项目流程.png
具体实现
package com.NLP.test;
import com.hankcs.hanlp.HanLP;
import com.hankcs.hanlp.mining.cluster.ClusterAnalyzer;
import org.apache.poi.xssf.usermodel.XSSFCell;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.List;
import java.util.Set;
public class TextCluster {
public static void main(String[] args) throws IOException {
//聚类器分析器
ClusterAnalyzer analyzer = new ClusterAnalyzer();
//读入数据
XSSFWorkbook xssfWorkbook = new XSSFWorkbook(new FileInputStream("附件4.xlsx"));
XSSFSheet xssfSheet = xssfWorkbook.getSheetAt(0);
//
int count = xssfSheet.getLastRowNum();
for(int i = 0;i<=count;i++){
XSSFRow xssfRow = xssfSheet.getRow(i);
XSSFCell xssfCell = xssfRow.createCell(7,5);
XSSFCell cateCell = xssfRow.createCell(8);
cateCell.setCellValue(-1);
if(i!=0){
String text = xssfRow.getCell(5).getStringCellValue();
String id = String.valueOf(xssfRow.getCell(0).getNumericCellValue());
if(text.length()<50){
}else {
List results = HanLP.extractSummary(text, 2);
String tempTest="";
for(String item:results){
tempTest+=item+",";
}
text = tempTest;
}
xssfCell.setCellValue(text);
analyzer.addDocument(id,text);
}else {
xssfCell.setCellValue("shortText");
}
}
System.out.println(analyzer.repeatedBisection(1.0));
int categorynum = 0;
for(Set item:analyzer.repeatedBisection(1.0)){
for(String uid:item){
for(int i = 1;i<=count;i++){
XSSFRow xssfRow = xssfSheet.getRow(i);
String id = String.valueOf(xssfRow.getCell(0).getNumericCellValue());
if(id.equals(uid)){
xssfRow.getCell(8).setCellValue(categorynum);
}
}
}
categorynum++;
}
//生成数据
xssfWorkbook.write(new FileOutputStream("附件4_转换.xlsx"));
}
}
文本聚类 java_【Java】文本聚类相关推荐
- 凝聚式层次聚类 java_凝聚法层次聚类之ward linkage method
凝聚法分层聚类中有一堆方法可以用来算两点(pair)之间的距离:欧式,欧式平方,manhattan等,还有一堆方法可以算类(cluster)与类之间的距离,什么single-linkage.compl ...
- java为文本框添加背景颜色,文本框添加背景图片,文本框背景图片,文本框添加水印[Java...
文本框添加背景图片,文本框背景图片,文本框添加水印[Java 文本框添加水印 [Java]代码public class WatermarkTextField extends JTextField { ...
- 文本聚类算法Java实现
蛙蛙推荐:蛙蛙教你文本聚类 摘要:文本聚类是搜索引擎和语义web的基本技术,这次本蛙和大家一起学习一下简单的文本聚类算法,可能不能直接用于实际应用中,但对于想学搜索技术的初学者还是有一定入门作用的.这 ...
- 基于聚类算法的文本热点问题挖掘算例实现(文本聚类)
在现实生活中,有时候我们可能得到一大堆无标签文本,这时候可能需要对文本进行聚类挖掘,找出热点问题是什么. 文本聚类 第一步:数据读取 import pandas as pd import re imp ...
- 基于Kmeans算法的文档聚类(包含Java代码及数据格式)
本文作者:合肥工业大学 管理学院 钱洋 email:1563178220@qq.com 内容可能有不到之处,欢迎交流. 未经本人允许禁止转载. 介绍 给定多篇文档,如何对文档进行聚类.本博客使用的是k ...
- java文本输入输出小结
Java 文本输入主要包含两种方法:FileRead -- 按字符读入,InputSreamReader -- 按行输入. java 文本输出也包含两种方法:FileWriter 和 OuputStr ...
- java计算两个文本框的值,java 文本框自动获取另外两个文本框的值的乘积
java 文本框自动获取另外两个文本框的值的乘积 关注:282 答案:2 手机版 解决时间 2021-02-25 21:59 提问者壹玍徴戰何亽陪 2021-02-25 13:53 在panel里 ...
- win10系统怎么写java_win10系统制作java文本的操作方法
很多小伙伴都遇到过对 具体方法如下: 1.首先我们点击电脑桌面左下角的菜单; 2.接着在弹出的菜单栏里,我们点击最下方的[所有应用]; 3.然后我们会看到更为详细的菜单栏,接着我们通过 4.接下来点开 ...
- java 复制文本内容_基于java文本复制的7种方式总结
如下所示: package copy; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import ...
- Java实验8 T2.编程包含一个文本框和一个文本区域
编程包含一个文本框和一个文本区域,文本框内容改变时,将文本框中的内容显示在文本区域中:在文本框中按回车键时,清空文本区域的内容. package test8;import javax.swing.ev ...
最新文章
- 万字超强图文讲解 AQS 以及 ReentrantLock 应用
- jvm性能调优 - 07线上应用部署JVM实战_栈内存与永久代预估与设置
- 恢复mysql数据库详细图解_binlog恢复mysql数据库超详细步骤
- jquery json学习
- 【CodeForces - 570A】Elections(模拟,水题)
- 俯视排版类型海报|没思路?试试可临摹PSD分层模板设计吧!
- 【优化算法】粒子群优化算法(PSO)【含Matlab源码 1073期】
- TransCAD教程 | 北航综合交通试验课程内容
- mac编译linux开源软件,Mac 端超好用的免费开源软件,我推荐这几款
- oracle数据库sql语句插入时间信息
- 【老九学堂】【Java】详解常见的53个关键字
- 分享:你必须知道的H5加速器九大常识!
- python数据分析与挖掘(二十七)--- Pandas量化--股票基础知识
- 【Chrome】从Google官网下载 Google Chrome 离线安装包
- vivo手机解析包错误解决方式
- 【C语言刷题】将一个十进制数字转化为二进制数字
- MacOS上高效管理SSH服务器-Core Shell
- JS树结构操作:查找、遍历、筛选、树结构和列表结构相互转换
- 韩国梨花女子大学计算机类,韩国留学梨花女子大学院系设置详解
- 树的概念:层次、高度、深度、宽度