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

唐山专业做网站公司乌海seo公司

唐山专业做网站公司,乌海seo公司,网站设计公司网站设计公司,如何修改网站ico需求 **文本推荐:**有多个文本字符串,如何设计一个简单的统计方法(从词频的角度设计),来计算出多个文本字符串两两之间的相似度,并输出大于指定相似度阈值的文本 分析理解 使用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/850798/

相关文章:

  • 派点网站建设咸阳做网站哪家好
  • 有什么兼职做it的网站好保定百度推广联系电话
  • 未备案网站 怎么处理北京 网站备案
  • 织梦网站后台密码错误公明做网站
  • 网站广东省备案系统7个免费的ui素材网站
  • 单页面网站 万网x3网站建设标准依据
  • 查询网站有哪些导入链接及数量电脑安装什么版本wordpress
  • 怎么制作网站链接转发视频怎么用手机免费下载1688视频
  • 网站导航栏效果昆明网站建设大全
  • 免费家具网站模板ui设计公司排行榜
  • 网站诊断seo当前数据是指制作一个自己的网站
  • 上海 网站设计企业网络管理系统
  • 在哪里买空间做网站删除wordpress主题
  • 腾讯网站开发规范做网站大概需要几个人
  • 一级a做爰片免费观看 安全网站盐城高端网站建设
  • 长沙做网站设计公司网页美工薪酬范围
  • 企业可以备案几个网站做电商平台网站有哪些内容
  • 做 爱 网站小视频下载如何创建网站
  • 宁夏做网站好的公司公众号怎么绑定网站吗
  • 大石桥网站广告创意设计方案
  • 做小程序好还是做微网站好购物网站页面设计图片
  • 锡林郭勒盟建设工程造价管理网站烟台网站排行榜
  • 网站打不开 其它能打开学校门户网站
  • 媒介盒子网站是哪家公司做的建设网站公司有哪些
  • 深圳网站备案查询佛山网站建设电话
  • 织梦网站模板后台密码找回建站特别慢wordpress
  • 青海做网站多少钱网站备案查询系统php版
  • 南通高端网站设计开发宁波快速建站公司
  • 烟台做网站找哪家好建设银行官方网站 诚聘英才
  • 苏州微网站制作南京制作网站公司哪家好