# Similarity
similarity, compute similarity score between text strings, Java written.
similarity,相似度计算工具包,可用于文本相似度计算、情感倾向分析等,Java编写。
**similarity**是由一系列算法组成的Java版相似度计算工具包,目标是传播自然语言处理中相似度计算方法。**similarity**具备工具实用、性能高效、架构清晰、语料时新、可自定义的特点。
# Feature
**similarity**提供下列功能:
- 词语相似度计算
* **词林编码法相似度[推荐]**
* 汉语语义法相似度
* 知网词语相似度
* 字面编辑距离法
- 短语相似度计算
* **简单短语相似度[推荐]**
- 句子相似度计算
* **词性和词序结合法[推荐]**
* 编辑距离算法
* Gregor编辑距离法
* 优化编辑距离法
- 段落相似度计算
* **余弦相似度[推荐]**
* 编辑距离
* 欧几里得距离
* Jaccard相似性系数
* Jaro距离
* Jaro–Winkler距离
* 曼哈顿距离
* SimHash + 汉明距离
* Sørensen–Dice系数
- 知网义原
* 词语义原树
- 情感分析
* 正面倾向程度
* 负面倾向程度
* 情感倾向性
- 近似词
* word2vec
在提供丰富功能的同时,**similarity**内部模块坚持低耦合、模型坚持惰性加载、词典坚持明文发布,使用方便,帮助用户训练自己的语料。
# Usage
引入Jar包
### Maven
```xml
<repositories>
<repository>
<id>jitpack.io</id>
<url>https://jitpack.io</url>
</repository>
</repositories>
```
```xml
<dependency>
<groupId>com.github.shibing624</groupId>
<artifactId>similarity</artifactId>
<version>1.1.6</version>
</dependency>
```
### Gradle
gradle的引入:[![jitpack](https://jitpack.io/v/shibing624/similarity.svg)](https://jitpack.io/#shibing624/similarity)
### 使用示例
```java
import org.xm.Similarity;
import org.xm.tendency.word.HownetWordTendency;
public class demo {
public static void main(String[] args) {
double result = Similarity.cilinSimilarity("电动车", "自行车");
System.out.println(result);
String word = "混蛋";
HownetWordTendency hownetWordTendency = new HownetWordTendency();
result = hownetWordTendency.getTendency(word);
System.out.println(word + " 词语情感趋势值:" + result);
}
}
```
## 功能演示
### 1. 词语相似度计算
文本长度:词语粒度
**推荐**使用词林相似度:`org.xm.Similarity.cilinSimilarity`,是基于[同义词词林](https://blog.csdn.net/sinat_33741547/article/details/80016713)的相似度计算方法
example: [src/test/java/org.xm/WordSimilarityDemo.java](src/test/java/org/xm/WordSimilarityDemo.java)
```java
package org.xm;
public class WordSimilarityDemo {
public static void main(String[] args) {
String word1 = "教师";
String word2 = "教授";
double cilinSimilarityResult = Similarity.cilinSimilarity(word1, word2);
double pinyinSimilarityResult = Similarity.pinyinSimilarity(word1, word2);
double conceptSimilarityResult = Similarity.conceptSimilarity(word1, word2);
double charBasedSimilarityResult = Similarity.charBasedSimilarity(word1, word2);
System.out.println(word1 + " vs " + word2 + " 词林相似度值:" + cilinSimilarityResult);
System.out.println(word1 + " vs " + word2 + " 拼音相似度值:" + pinyinSimilarityResult);
System.out.println(word1 + " vs " + word2 + " 概念相似度值:" + conceptSimilarityResult);
System.out.println(word1 + " vs " + word2 + " 字面相似度值:" + charBasedSimilarityResult);
}
}
```
* result:
![word_sim result](./docs/pic/word_sim.png)
### 2. 短语相似度计算
文本长度:短语粒度
**推荐**使用短语相似度:`org.xm.Similarity.phraseSimilarity`,本质是通过两个短语具有的相同字符,和相同字符的位置计算其相似度的方法
example: [src/test/java/org.xm/PhraseSimilarityDemo.java](src/test/java/org/xm/PhraseSimilarityDemo.java)
```java
public static void main(String[] args) {
String phrase1 = "继续努力";
String phrase2 = "持续发展";
double result = Similarity.phraseSimilarity(phrase1, phrase2);
System.out.println(phrase1 + " vs " + phrase2 + " 短语相似度值:" + result);
}
```
* result:
![phrase sim result](./docs/pic/phrase_sim.png)
### 3. 句子相似度计算
文本长度:句子粒度
**推荐**使用词形词序句子相似度:`org.xm.similarity.morphoSimilarity`,一种既考虑两个句子相同文本字面,也考虑相同文本出现的前后顺序的相似度方法
example: [src/test/java/org.xm/SentenceSimilarityDemo.java](src/test/java/org/xm/SentenceSimilarityDemo.java)
```java
public static void main(String[] args) {
String sentence1 = "中国人爱吃鱼";
String sentence2 = "湖北佬最喜吃鱼";
double morphoSimilarityResult = Similarity.morphoSimilarity(sentence1, sentence2);
double editDistanceResult = Similarity.editDistanceSimilarity(sentence1, sentence2);
double standEditDistanceResult = Similarity.standardEditDistanceSimilarity(sentence1,sentence2);
double gregeorEditDistanceResult = Similarity.gregorEditDistanceSimilarity(sentence1,sentence2);
System.out.println(sentence1 + " vs " + sentence2 + " 词形词序句子相似度值:" + morphoSimilarityResult);
System.out.println(sentence1 + " vs " + sentence2 + " 优化的编辑距离句子相似度值:" + editDistanceResult);
System.out.println(sentence1 + " vs " + sentence2 + " 标准编辑距离句子相似度值:" + standEditDistanceResult);
System.out.println(sentence1 + " vs " + sentence2 + " gregeor编辑距离句子相似度值:" + gregeorEditDistanceResult);
}
```
* result:
![sentence sim result](./docs/pic/sentence_sim.png)
### 4. 段落文本相似度计算
文本长度:段落粒度(一段话,25字符 < length(text) < 500字符)
**推荐**使用词形词序句子相似度:`org.xm.similarity.text.CosineSimilarity`,一种考虑两个段落中相同的文本,经过切词,词频和词性权重加权,并用余弦计算相似度的方法
example: [src/test/java/org.xm/similarity/text/CosineSimilarityTest.java](src/test/java/org/xm/similarity/text/CosineSimilarityTest.java)
```java
@Test
public void getSimilarityScore() throws Exception {
String text1 = "对于俄罗斯来说,最大的战果莫过于夺取乌克兰首都基辅,也就是现任总统泽连斯基和他政府的所在地。目前夺取基辅的战斗已经打响。";
String text2 = "迄今为止,俄罗斯的入侵似乎没有完全按计划成功执行——英国国防部情报部门表示,在乌克兰军队激烈抵抗下,俄罗斯军队已经损失数以百计的士兵。尽管如此,俄军在继续推进。";
TextSimilarity cosSimilarity = new CosineSimilarity();
double score1 = cosSimilarity.getSimilarity(text1, text2);
System.out.println("cos相似度分值:" + score1);
TextSimilarity editSimilarity = new EditDistanceSimilarity();
double score2 = editSimilarity.getSimilarity(text1, text2);
System.out.println("edit相似度分值:" + score2);
}
```
* result:
```shell
cos相似度分值:0.399143
edit相似度分值:0.0875
```
### 5. 基于义原树的情感分析
example: [src/test/java/org/xm/tendency/word/HownetWordTendencyTest.java](src/test/java/org/xm/tendency/word/HownetWordTendencyTest.java)
```java
@Test
public void getTendency() throws Exception {
HownetWordTendency hownet = new HownetWordTendency();
String word = "美好";
double sim = hownet.getTendency(word);
System.out.println(word + ":" + sim);
System.out.println("混蛋:" + hownet.getTendency("混蛋"));
}
```
* result:
![tendency result](./docs/pic/tendency.png)
本例是基于义原树的词语粒度情感极性
没有合适的资源?快使用搜索试试~ 我知道了~
基于Java实现的文本相似度计算工具包,可用于文本相似度计算、情感分析等任务,开箱即用
共145个文件
java:103个
txt:18个
png:9个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 152 浏览量
2023-09-18
11:16:40
上传
评论
收藏 4.64MB ZIP 举报
温馨提示
由一系列算法组成的Java版相似度计算工具包,目标是传播自然语言处理中相似度计算方法。similarity具备工具实用、性能高效、架构清晰、语料时新、可自定义的特点。 提供下列功能: 词语相似度计算 词林编码法相似度[推荐] 汉语语义法相似度 知网词语相似度 字面编辑距离法 短语相似度计算 简单短语相似度[推荐] 句子相似度计算 词性和词序结合法[推荐] 编辑距离算法 Gregor编辑距离法 优化编辑距离法 段落相似度计算 余弦相似度[推荐] 编辑距离 欧几里得距离 Jaccard相似性系数 Jaro距离 Jaro–Winkler距离 曼哈顿距离 SimHash + 汉明距离 Sørensen–Dice系数 知网义原 词语义原树 情感分析 正面倾向程度 负面倾向程度 情感倾向性 近似词 word2vec
资源推荐
资源详情
资源评论
收起资源包目录
基于Java实现的文本相似度计算工具包,可用于文本相似度计算、情感分析等任务,开箱即用 (145个子文件)
CITATION.cff 337B
concept.dat 3.96MB
sememe.dat 90KB
.gitignore 78B
concept.xml.gz 779KB
cilin.db.gz 553KB
sememe.xml.gz 27KB
XmlUtils.java 19KB
Learn.java 13KB
ConceptSimilarity.java 12KB
ConceptParser.java 9KB
StringUtil.java 8KB
SimHashPlusHammingDistanceTextSimilarity.java 8KB
ModelParser.java 7KB
Concept.java 6KB
JaroDistanceTextSimilarity.java 6KB
SemanticSimilarity.java 6KB
Training.java 6KB
EuclideanDistanceTextSimilarity.java 5KB
ManhattanDistanceTextSimilarity.java 5KB
TextSimilarity.java 5KB
Similarity.java 5KB
MorphoSimilarity.java 5KB
WordFreqStatistics.java 4KB
GregorEditDistanceSimilarity.java 4KB
SememeSimilarity.java 4KB
NewEditDistanceSimilarity.java 4KB
JaccardTextSimilarity.java 4KB
Variable.java 4KB
PinyinDictionary.java 4KB
JaroWinklerDistanceTextSimilarity.java 4KB
Tokenizer.java 3KB
WordSimilarityDemo.java 3KB
DiceTextSimilarity.java 3KB
WordKmeans.java 3KB
Block.java 3KB
EditDistance.java 3KB
Split.java 3KB
CosineSimilarity.java 3KB
EditDistanceSimilarity.java 3KB
SememeParser.java 3KB
HownetWordTendency.java 3KB
CilinDictionary.java 3KB
Sememe.java 3KB
NaiveBayesClassifier.java 3KB
SuperString.java 3KB
Word.java 2KB
PinyinDictionaryTest.java 2KB
IHownetMeta.java 2KB
CharBasedSimilarity.java 2KB
CilinCode.java 2KB
AtomicFloat.java 2KB
StandardEditDistanceSimilarity.java 2KB
Feature.java 2KB
Word2vecTest.java 2KB
Word2vec.java 2KB
FileUtil.java 2KB
WordNeuron.java 2KB
PhraseSimilarity.java 2KB
CilinSimilarity.java 2KB
Instance.java 2KB
WordEditUnit.java 1KB
SememeType.java 1KB
ChunkEditUnit.java 1KB
StringUtilTest.java 1KB
SentenceSimilarityDemo.java 1KB
ConceptTest.java 1KB
ITextSimilarity.java 1KB
EditUnit.java 1KB
NewEditDistanceSimilarityTest.java 1KB
PinyinSimilarity.java 1KB
MorphoSimilarityTest.java 1KB
CosineSimilarityTest.java 1KB
ModelParserTest.java 1010B
XmlException.java 985B
CharBasedSimilarityTest.java 958B
Huffman.java 945B
VecMap.java 922B
DicReader.java 921B
WordFreqStatisticsTest.java 907B
ConceptSimilarityTest.java 891B
EditDistanceSimilarityTest.java 880B
StandardEditDistanceSimilarityTest.java 792B
LearnTest.java 790B
CilinDictionaryTest.java 717B
EditDistance.java 682B
CilinSimilarityTest.java 670B
GregorEditDistanceSimilarityTest.java 651B
FileSegmentStatisticsDemo.java 626B
Neuron.java 570B
WordEntry.java 553B
ConceptLinkedList.java 529B
SemanticSimilarityTest.java 516B
MathUtilTest.java 497B
HownetWordTendencyTest.java 443B
TokenizerTest.java 416B
TendencyDemo.java 415B
PinyinSimilarityTest.java 407B
IWordTendency.java 396B
PhraseSimilarityDemo.java 378B
共 145 条
- 1
- 2
资源评论
云哲-吉吉2021
- 粉丝: 3198
- 资源: 1130
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- Docker容器配置进阶
- tensorflow-gpu-2.7.4-cp37-cp37m-manylinux2010-x86-64.whl
- 多段线、 圆、弧转多段线(仅我可见)
- tensorflow-2.7.2-cp38-cp38-manylinux2010-x86-64.whl
- yeyue-p8Yi4-ve4a83792.apk
- tensorflow-gpu-2.7.3-cp38-cp38-manylinux2010-x86-64.whl
- 五相感应电机矢量控制模型MATLAB
- RGLED (1) (1).circ
- IMG_20240427_215747.jpg
- python下前端WEB学习笔记
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功