当前位置: 首页 > news >正文

网站建设博敏discuz品牌空间网站

网站建设博敏,discuz品牌空间网站,WordPress上不了,福州网站建设出格网络需求 **文本推荐:**有多个文本字符串,如何设计一个简单的统计方法(从词频的角度设计),来计算出多个文本字符串两两之间的相似度,并输出大于指定相似度阈值的文本 分析理解 使用Java实现文本相似度计算的…

需求

**文本推荐:**有多个文本字符串,如何设计一个简单的统计方法(从词频的角度设计),来计算出多个文本字符串两两之间的相似度,并输出大于指定相似度阈值的文本

分析理解

使用Java实现文本相似度计算的一种方法是通过构建词频向量并计算余弦相似度,具体介绍如下,简单易懂
在这里插入图片描述
在这里插入图片描述

代码实现

复杂粘贴可以直接运行

        <!--  使用HanLP进行分词  --><dependency><groupId>com.hankcs</groupId><artifactId>hanlp</artifactId><version>portable-1.8.4</version></dependency>
import com.hankcs.hanlp.tokenizer.StandardTokenizer;
import java.util.*;
import java.util.stream.Collectors;public class ChineseTextRecommender {// 使用HanLP进行中文分词// 构建词频向量// 假设我们有两个文本文档,我们想衡量它们的主题相似性。每个文档可以被表示为一个向量,其中包含词频(TF)或TF-IDF值。// 文档A: "the cat sat on the mat on the mat"// 文档B: "the cat and the dog played"// 我们选择几个关键词:"the", "cat", "sat", "on", "mat", "and", "dog", "played"。每个词在文档中出现的次数(词频)可以构成一个向量。// 向量A: [2, 1, 1, 1, 2, 0, 0, 0]("the", "cat", "sat", "on", "mat", "and", "dog", "played")// 向量B: [1, 1, 0, 0, 0, 1, 1, 1]public static Map<String, Integer> buildTermVector(String text) {List<String> words = StandardTokenizer.segment(text).stream().map(term -> term.word).collect(Collectors.toList());Map<String, Integer> termVector = new HashMap<>();for (String word : words) {termVector.put(word, termVector.getOrDefault(word, 0) + 1);}return termVector;}// 计算余弦相似度public static double cosineSimilarity(Map<String, Integer> vectorA, Map<String, Integer> vectorB) {double dotProduct = 0.0;double normA = 0.0;double normB = 0.0;for (String key : vectorA.keySet()) {dotProduct += vectorA.get(key) * (vectorB.getOrDefault(key, 0));normA += Math.pow(vectorA.get(key), 2);}for (String key : vectorB.keySet()) {normB += Math.pow(vectorB.get(key), 2);}if (normA == 0 || normB == 0) {return 0.0;}return dotProduct / (Math.sqrt(normA) * Math.sqrt(normB));}// 推荐与指定文本相似度高的文本 texts为待判断文本列表public static List<String> recommendTexts(List<String> texts, String targetText, double threshold) {Map<String, Double> similarityScores = new HashMap<>();Map<String, Integer> targetVector = buildTermVector(targetText);for (String text : texts) {Map<String, Integer> textVector = buildTermVector(text);double similarity = cosineSimilarity(targetVector, textVector);similarityScores.put(text, similarity);System.out.println(text + " ----Similarity: " + similarity);}return similarityScores.entrySet().stream().filter(entry -> entry.getValue() >= threshold).map(Map.Entry::getKey).collect(Collectors.toList());}public static void main(String[] args) {// 相似度分别为0.91 0.59 0.54 0.799 0.791List<String> texts = Arrays.asList("这是一个测试文档吗", "这是第二个文档", "这是第三个文档","这是一个文档吗","这是第一个测试文档吧哈哈");String targetText = "这是一个测试文档";double threshold = 0.8; // 理论上,阈值在0.5左右都可以接受List<String> recommendedTexts = recommendTexts(texts, targetText, threshold);System.out.println("推荐文本:");recommendedTexts.forEach(System.out::println);}
}

输出结果

在这里插入图片描述

http://www.yayakq.cn/news/454868/

相关文章:

  • 怎么在外国网站上找产品做跨境电商wordpress上传doc文件大小
  • 安卓图形网站建设新闻稿件代发平台
  • 百度 seo排名查询seo推广计划
  • 网站建设的实际价值莱州网页设计
  • 做ktv网站大概多少钱怎么在网站标题做logo
  • 网站建设招标网江西省人社窗口作风建设网站
  • 义乌企业网站搭建首选搜索引擎快速优化排名
  • 网站推广建设西安网站设设
  • 怎么和网站合作推广网站建设与维护模板
  • 柳州网站建设33重庆网站建设seo公司
  • 二手房网站建设书郑州网站关键词排名技术代理
  • 织梦网站自动跳转手机网站百度热门关键词
  • 山东建设银行官网网站自学编程网站免费
  • 上海做网站的公司官网河北邯郸房价
  • 建设网站空间选择网站制作价格范围
  • 石家庄建站公司网站开发程序员 工资
  • 网站建设公司包括哪些板块化工行业网站建设
  • 丰台专业网站建设公司企业网站的cms
  • 网站设计一般包括哪些地推任务网
  • 厦门做手机网站公司工作心得体会简短的
  • 做网站我网站找第三方支付wordpress主题代码分析
  • 深圳网站建设 百业wordpress前台登录按钮
  • 德阳建设公司网站刷题网站怎么做
  • 图片展示网站建设扬中信息发布
  • 无锡网站公司哪家好牡丹江信息网手机版招聘
  • 怎样算网站侵权潜江网站搭建
  • 上海建设行业的资质网站重庆营销网站制作
  • 设计网站公司湖南岚鸿公司上海网站建设开发公
  • 盐城专业做网站的公司哪家好腾讯云的wordpress安装目录
  • 新开的公司做网站多少钱网页设计与制作教程期末考试