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

网站建设收税网站死链是什么

网站建设收税,网站死链是什么,建设工程质量检测管理办法,wordpress主题设置教程我前面的2篇文章分别讲了如果利用余弦相似度来判断2篇文章的相似度,来确定文章是否存在抄袭,和余弦相似度的原理,即余弦相似度到底是怎么来判断文章的相似性高低的等等。这一篇再说下,对于文章字数多和大量文章时,如果…

        我前面的2篇文章分别讲了如果利用余弦相似度来判断2篇文章的相似度,来确定文章是否存在抄袭,和余弦相似度的原理,即余弦相似度到底是怎么来判断文章的相似性高低的等等。这一篇再说下,对于文章字数多和大量文章时,如果找到两篇相似度高的文章。这里就需要考虑内存溢出的风险了。所以对第一篇的代码进行了改造。在一定程度上降低了内存溢出的风险。

pom依赖

<dependency><groupId>org.apache.commons</groupId><artifactId>commons-math3</artifactId><version>3.6.1</version>
</dependency>

       这里和第一篇略有不同,即第一篇采用的hankcs包实现的余弦相似度算法。本篇文章时通过math3包实现的。但是原理相同。

代码如下

package com.lsl.config;import org.apache.commons.math3.linear.ArrayRealVector;
import org.apache.commons.math3.linear.RealVector;import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.*;public class PlagiarismDetector {// 计算余弦相似度public static double cosineSimilarity(RealVector vectorA, RealVector vectorB) {double dotProduct = vectorA.dotProduct(vectorB);double normA = vectorA.getNorm();double normB = vectorB.getNorm();return dotProduct / (normA * normB);}// 将文本转换为词频向量public static Map<String, Integer> textToWordFrequency(String text) {Map<String, Integer> wordFrequency = new HashMap<>();String[] words = text.split("\\s+");for (String word : words) {wordFrequency.put(word, wordFrequency.getOrDefault(word, 0) + 1);}return wordFrequency;}// 将词频映射转换为向量public static RealVector wordFrequencyToVector(Map<String, Integer> wordFrequency, List<String> vocabulary) {double[] vector = new double[vocabulary.size()];for (int i = 0; i < vocabulary.size(); i++) {vector[i] = wordFrequency.getOrDefault(vocabulary.get(i), 0);}return new ArrayRealVector(vector);}// 读取文件内容(流式读取)public static String readFile(String filePath) throws IOException {StringBuilder content = new StringBuilder();try (BufferedReader br = new BufferedReader(new FileReader(filePath))) {String line;while ((line = br.readLine()) != null) {content.append(line).append("\n");}}return content.toString();}// 构建词汇表(增量构建)public static List<String> buildVocabulary(Path papersDir) throws IOException {Set<String> vocabulary = new HashSet<>();Files.list(papersDir).forEach(path -> {try {String content = readFile(path.toString());String[] words = content.split("\\s+");vocabulary.addAll(Arrays.asList(words));} catch (IOException e) {e.printStackTrace();}});return new ArrayList<>(vocabulary);}// 主函数public static void main(String[] args) throws IOException {// 论文文件目录Path papersDir = Paths.get("D:\\codeabc");// 构建词汇表List<String> vocabulary = buildVocabulary(papersDir);// 存储每篇论文的词频向量List<RealVector> vectors = new ArrayList<>();// 逐篇处理论文Files.list(papersDir).forEach(path -> {try {String content = readFile(path.toString());Map<String, Integer> wordFrequency = textToWordFrequency(content);RealVector vector = wordFrequencyToVector(wordFrequency, vocabulary);vectors.add(vector);} catch (IOException e) {e.printStackTrace();}});System.err.println("共有=" + vectors.size() + "文章");// 比较每对论文的相似度for (int i = 0; i < vectors.size(); i++) {for (int j = i + 1; j < vectors.size(); j++) {double similarity = cosineSimilarity(vectors.get(i), vectors.get(j));if (similarity > 0.9) { // 假设相似度大于0.9认为是抄袭System.out.printf("Paper %d and Paper %d are similar with cosine similarity: %.2f%n", i, j, similarity);}}}}
}

运行截图如下:

改进点说明

  1. 流式读取文件

    • 使用BufferedReader逐行读取文件内容,避免一次性加载整个文件到内存中。

  2. 增量构建词汇表

    • 使用Files.list逐篇读取论文内容,逐步构建词汇表,而不是一次性加载所有论文内容。

  3. 逐篇处理论文

    • 在构建词频向量时,逐篇处理论文,避免一次性加载所有论文的词频向量到内存中。

  4. 内存优化

    • 使用HashSet存储词汇表,避免重复词汇占用额外内存。

    • 使用ArrayList存储词频向量,确保内存使用可控

进一步优化建议

  1. 分布式计算

    • 如果数据量非常大(如100,000篇论文),可以考虑使用分布式计算框架(如Apache Spark)来并行处理数据。

  2. 外部存储

    • 将词汇表和词频向量存储到磁盘(如数据库或文件),避免内存不足。

  3. 分块比较

    • 将论文分成多个块,逐块比较相似度,进一步减少内存占用。

  4. 剔除干扰词汇

    • 比如代码中对于一些import导入语句可以剔除


文章转载自:

http://WcSPg1iD.qptbn.cn
http://UwLTdGc4.qptbn.cn
http://i3u5o1IV.qptbn.cn
http://vYo7BoBQ.qptbn.cn
http://TE7IXqFc.qptbn.cn
http://BoOoS003.qptbn.cn
http://d0KRH4eF.qptbn.cn
http://0LaqTVxc.qptbn.cn
http://zOgTyQ2G.qptbn.cn
http://Y3afRTcI.qptbn.cn
http://aWXZfwMj.qptbn.cn
http://ybe1ZQpf.qptbn.cn
http://z2qLQzUl.qptbn.cn
http://wdNLGcEJ.qptbn.cn
http://z8VHAtT9.qptbn.cn
http://P5UulRbW.qptbn.cn
http://euIx6BUC.qptbn.cn
http://II0kum0i.qptbn.cn
http://wkESj5hN.qptbn.cn
http://ZgRDXgz2.qptbn.cn
http://bLarbyYM.qptbn.cn
http://4CEsmtfQ.qptbn.cn
http://eT5BxWzk.qptbn.cn
http://O8DpvFns.qptbn.cn
http://GP8siTfh.qptbn.cn
http://V8vqfz8Z.qptbn.cn
http://hboQYI14.qptbn.cn
http://aj4bm1fQ.qptbn.cn
http://T0AzFd8N.qptbn.cn
http://vZM0otHp.qptbn.cn
http://www.dtcms.com/wzjs/648217.html

相关文章:

  • 做网站的为什么那么多骗子怎么找wordpress模板代码
  • 无极网站网站石家庄住房城乡建设网站
  • 对新网站做seo大概需要多久网站计划任务怎么做
  • 江苏省建设执业资格注册中心网站网上注册公司app
  • 杭州住房和城乡建设局网站首页做程序网站需要什么代码吗
  • 天津企业网站制作夸克搜索入口
  • 建立收费网站手机网站二级域名
  • 创建购物网站多少钱太原seo网站管理
  • 网站策划的内容包含了什么?如何让网站自适应手机
  • 网站 逻辑结构小网站下载渠道有哪些
  • 企业网站建设存在的典型问题有哪些?门户网站开发工具
  • 美食网站首页怎么做做非洲国际贸易网站
  • 衡水做网站服务商武进建设局网站为何老是打不开
  • 广州市医院网站建设昆明移动互联网开发
  • 视频网站建站费用活动策划书模板范文
  • 专业网站推广的公司哪家好做报废厂房网站怎么做
  • 南宁网站设计方法百度互联网公司邯郸分公司
  • 八亿wap建站石家庄做网站公司汉狮价格
  • 网站建设公司销售经理职责品牌网站设计制作公司
  • 郑州网站开发公买服务器的网站
  • asp网站开发的主要困难wordpress主题分享
  • 网站运营与管理第二版我的微信公众号
  • 网站做推广团队vps做网站教程
  • 备案网站免网4399影视免费观看高清
  • 专业企业网站建设新闻发布会稿子
  • 微博指数查询入口青岛做网站seo
  • 建设信用卡银行商城网站任县网站建设价格信息
  • 住房和建设部网站网站群建设需求
  • 河北省企业网站建设公司吉首公司网站找谁做
  • 做网站 后端是谁来做的佛山网站建设哪个