资源简介
中文文本相似度匹配算法 simHash 海明距离 IK分词
完整的可运行的示例代码 包含simHash 算法,使用IK 对中文文本进行分词处理
代码片段和文件信息
package SimHash; /**
* Created by danjunwei_sx on 2017/11/15.
*/
import org.wltea.analyzer.core.IKSegmenter;
import org.wltea.analyzer.core.Lexeme;
import java.io.IOException;
import java.io.StringReader;
import java.math.BigInteger;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
/**
* Function: simHash 判断文本相似度,该示例程支持中文
* date: 2013-8-6 上午1:11:48
* @author june
* @version 0.1
*/
public class SimHash
{
/* private String tokens;
private BigInteger intSimHash;
private String strSimHash;
private int hashbits = 64;*/
public String tokens;
public BigInteger intSimHash;
public String strSimHash;
public int hashbits = 64;
public SimHash(String tokens) throws IOException {
this.tokens = tokens;
this.intSimHash = this.simHash();
}
public SimHash(String tokens int hashbits) throws IOException {
this.tokens = tokens;
this.hashbits = hashbits;
this.intSimHash = this.simHash();
}
HashMap wordMap = new HashMap();
public BigInteger simHash() throws IOException {
// 定义特征向量/数组
int[] v = new int[this.hashbits];
// 英文分词
// StringTokenizer stringTokens = new StringTokenizer(this.tokens);
// while (stringTokens.hasMoreTokens()) {
// String temp = stringTokens.nextToken();
// }
// 1、中文分词,分词器采用 IKAnalyzer3.2.8 ,仅供演示使用,新版 API 已变化。
StringReader reader = new StringReader(this.tokens);
// 当为true时,分词器进行最大词长切分
// IKSegmentation ik = new IKSegmentation(reader true);
IKSegmenter ik = new IKSegmenter(readertrue);
Lexeme lexeme = null;
String word = null;
StringBuffer temp = new StringBuffer(); //String temp = null
while ((lexeme = ik.next()) != null) {
word = lexeme.getLexemeText();
temp.append(word+“ “);//temp = temp+“ “+word;
// 注意停用词会被干掉
// System.out.println(word);
// 2、将每一个分词hash为一组固定长度的数列.比如 64bit 的一个整数.
BigInteger t = this.hash(word);
for (int i = 0; i < this.hashbits; i++) {
BigInteger bitmask = new BigInteger(“1“).shiftLeft(i);
// 3、建立一个长度为64的整数数组(假设要生成64位的数字指纹也可以是其它数字)
// 对每一个分词hash后的数列进行判断如果是1000...1那么数组的第一位和末尾一位加1
// 中间的62位减一也就是说逢1加1逢0减1.一直到把所有的分词hash数列全部判断完毕.
if (t.and(bitmask).signum() != 0) {
// 这里是计算整个文档的所有特征的向量和
// 这里实际使用中需要 +- 权重,比如词频,而不是简单的 +1/-1,
v[i] += 1;
} else {
v[i] -= 1;
}
}
}
System.out.println(temp); //
BigInteger fingerprint = new BigInteger(“0“);
StringBuffer simHashBuffer = new StringBuffer();
for (int i = 0; i
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 11 2017-11-15 12:00 simHash\mvn_project\.idea\.name
文件 1151 2017-11-15 12:01 simHash\mvn_project\.idea\compiler.xm
文件 941 2017-11-16 17:48 simHash\mvn_project\.idea\encodings.xm
文件 224 2017-11-15 15:21 simHash\mvn_project\.idea\libraries\ikanalyzer_2012_u6.xm
文件 337 2017-11-15 15:27 simHash\mvn_project\.idea\libraries\IKAnalyzer_all_jar.xm
文件 462 2017-11-15 12:01 simHash\mvn_project\.idea\libraries\Maven__junit_junit_3_8_1.xm
文件 584 2017-11-15 15:09 simHash\mvn_project\.idea\misc.xm
文件 273 2017-11-15 12:00 simHash\mvn_project\.idea\modules.xm
文件 143 2017-11-15 12:00 simHash\mvn_project\.idea\scopes\scope_settings.xm
文件 173 2017-11-15 12:00 simHash\mvn_project\.idea\vcs.xm
文件 34268 2017-11-17 09:52 simHash\mvn_project\.idea\workspace.xm
文件 4939784 2017-11-15 15:26 simHash\mvn_project\jar\IKAnalyzer_all_jar.zip
文件 23 2017-11-17 10:06 simHash\mvn_project\jar\jar包引入.txt
文件 1021 2017-11-17 09:52 simHash\mvn_project\mvn_project.iml
文件 1383 2017-11-17 09:52 simHash\mvn_project\pom.xm
文件 7044 2017-11-15 17:45 simHash\mvn_project\src\main\java\SimHash\SimHash.java
文件 5800 2017-11-17 09:50 simHash\mvn_project\src\main\java\Test\Test.java
文件 57 2017-11-15 12:01 simHash\mvn_project\src\main\webapp\index.jsp
文件 222 2017-11-15 12:01 simHash\mvn_project\src\main\webapp\WEB-INF\web.xm
文件 5080 2017-11-17 09:52 simHash\mvn_project\target\classes\SimHash\SimHash.class
文件 4612 2017-11-17 09:52 simHash\mvn_project\target\classes\Test\Test.class
目录 0 2017-11-15 17:45 simHash\mvn_project\src\main\java\SimHash
目录 0 2017-11-17 09:50 simHash\mvn_project\src\main\java\Test
目录 0 2017-11-15 12:01 simHash\mvn_project\src\main\webapp\WEB-INF
目录 0 2017-11-17 09:50 simHash\mvn_project\src\main\java
目录 0 2017-11-15 12:01 simHash\mvn_project\src\main\resources
目录 0 2017-11-15 12:01 simHash\mvn_project\src\main\webapp
目录 0 2017-11-17 09:52 simHash\mvn_project\target\classes\SimHash
目录 0 2017-11-17 09:52 simHash\mvn_project\target\classes\Test
目录 0 2017-11-15 15:29 simHash\mvn_project\target\generated-sources\annotations
............此处省略14个文件信息
- 上一篇:肌电信号采集
- 下一篇:《数据通信原理》历年试题
相关资源
- 搜狗中文文本分析语料库
- gensim包的tfidf方法计算中文文本相似度
- 中文文本情感分类已标注
- 中文文本分类项目数据集.rar
- 中文文本纠错数据集.zip
- 基于svm的中文文本自动分类系统的语
- 中文文本自动分词和标注
- 基于svm的中文文本分类系统
- 中文文本情感分析超级字典包.zip
- NLP小白入门——超全中文文本分类系
- 基于深度学习的中文文本情感分类
- 中文文本分类语料由复旦大学李荣陆
- 中文文本分类语料-测试集
- 搜狗文本分类语料库-中文文本分类
- 复旦中文文本分类-训练集
- word2vec词向量训练及中文文本相似度计
- 中文文本分类语料复旦完整版
- 复旦大学中文文本分类数据集
- 中文文本分类语料库复旦大学训练与
- 复旦大学中文文本分类数据集-训练
- 中文文本分类语料复旦-训练集
- 喜悦、愤怒、厌恶、低落微博带标注
- 中文文本分类语料复旦-测试集
- 新闻类中文文本分类数据集
- 中文文本分类语料复旦训练集+测试集
- 中文文本预处理;k-means聚类
- 中文文本停用词表
- text-cnn源代码
- 中文文本分类停用词表
- Detecting Near-Duplicates for Web Crawling
评论
共有 条评论