zoukankan      html  css  js  c++  java
  • 第一次个人编程作业

    GitHub仓库

    请指教

    计算模块接口的设计与实现过程

    步骤

    • 运用cppjieba对文本进行分词。
    • 对分词结果进行降噪处理
    • 计算余弦相似度

    流程图

    理论知识

    一、词袋模型

    文档内容中出现频率越高的词项,越能描述该文档。因此可以统计每个词项在每篇文档中出现的次数,即词项频率,记为

    词项频率

    ,其中t 为词项,d为文档。获得文档中每个词的 tf 权重,一篇文档则转换成了词-权重的集合,通常称为词袋模型。

    二、余弦相似度

    对于统计好词项频率的文本,可以为分别生成n维向量。两个文本的向量之间形成一个夹角,如果夹角为0度,意味着方向相同、线段重合;如果夹角为90度,意味着形成直角,方向完全不相似;如果夹角为180度,意味着方向正好相反。因此,我们可以通过夹角的大小,来判断向量的相似程度。夹角越小,就代表越相似。

    余弦相似度

    因此,可以近似地用文本词向量的余弦相似度代替为文本相似度。
    余弦相似度计算方法

    余弦相似度

    函数模块

    一、文件处理模块

    • 运用cppjieba对文件内容进行分词处理
    • 运用停用词表对分词结果降噪

    二、文本相似度计算

    • 对处理后的文件进行词向量统计
    • 计算余弦相似度,用余弦相似度近似替代文本相似度

    测试

    测试代码

    string thefiles[]={"orig_0.8_add.txt",
    		   "orig_0.8_del.txt",
    		   "orig_0.8_dis_1.txt",
    		   "orig_0.8_dis_3.txt",
    		   "orig_0.8_dis_7.txt",
    		   "orig_0.8_dis_10.txt",
    		   "orig_0.8_dis_15.txt",
    		   "orig_0.8_mix.txt",
    		   "orig_0.8_rep.txt"};
    	string path;
            string path0="main.exe sim_0.8/orig.txt sim_0.8/";
    	string path2=" result.txt";
    	for(int i=0;i<9;i++){
    		cout<<"文件orig.txt与文本" <<thefiles[i]<< "的相似度:"<<endl;
    		path=path0+thefiles[i]+path2;
    		system(path.c_str()); 
    		cout<<endl;
    	}
    

    测试结果

    性能分析

    计算模块部分异常处理

    一、输入文件数目不对

    处理方案:提示当前输入文件参数数目。

    异常1

    二、无法找到文件或文件打开失败

    处理方案:提示文件打开失败。
    异常2

    PSP表格

    psp表格

    个人总结

    这次作业一边百度一边写,期间学完这个又有了另一个等着学,学海无涯呐!

  • 相关阅读:
    ASP.NET Core基于SignalR实现消息推送实战演练
    corn常用表达式
    muzejs 基于webassembly 的高性能数据可视化库
    xk6 构建原理说明
    集群、分布式、负载均衡区别
    Docker深入浅出系列 | Swarm多节点实战
    You Can’t Sacrifice Partition Tolerance
    Cookies are deleted when I close the browser?
    Using more than one index per table is dangerous?
    Multiple Indexes vs Multi-Column Indexes
  • 原文地址:https://www.cnblogs.com/molly-woo/p/13686225.html
Copyright © 2011-2022 走看看