ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

个人项目

2021-09-15 23:02:23  阅读:179  来源: 互联网

标签:info 10 15 个人 项目 library dic 2021


这个作业属于哪个课程 课程链接
这个作业要求在哪里 作业要求
这个作业的目标 PSP表格的使用,基本开发流程的了解与知识的学习,程序测试与开发。

Github链接

个人项目

一、个人开发流程PSP表格

PSP Personal Software Process Stages 预估耗时(分钟) 实际耗时(分钟)
Planning 计划 20 15
· Estimate · 估计这个任务需要多少时间 20 15
Development 开发 590 600
· Analysis · 需求分析 (包括学习新技术) 120 60
· Design Spec · 生成设计文档 30 20
· Design Review · 设计复审 20 30
· Coding Standard · 代码规范 (为目前的开发制定合适的规范) 10 15
· Design · 具体设计 200 240
· Coding · 具体编码 100 130
· Code Review · 代码复审 50 25
· Test · 测试(自我测试,修改代码,提交修改) 60 80
Reporting 报告 70 90
· Test Repor · 测试报告 50 60
· Size Measurement · 计算工作量 10 10
· Postmortem & Process Improvement Plan · 事后总结, 并提出过程改进计划 10 20
· 合计 680 705

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

基本思路是:

先通过FileUtils分析出文件的字符串,再获取字符串的词频与单词后通过数值计算工具解析词频单词Map为词频数组并进行重复率计算,最后再通过FileUtils输出答案文件。

三、模块接口之间的调用与耗时情况

如图使用jprofiler分析结果

结果说明程序占用时间最久的在于对字符串进行分词与解析功能上,这个方法是Ansj组件内部方法,所能做的优化可以是在传入字符串时不将整个文件内容传入,而是分段将内容传入,这样可以初步优化这个程序的执行。但最好的方式还是选择一个处理方式更快的分析算法。

四、具体的测试案例:

1. 文件读取功能的测试

@Test
public void testReadFileToString() throws IOException {
    String path = "log.log";
    String context = FileUtils.readFileToString(path);
    System.out.println(context);
}

四月 15, 2021 2:25:37 下午 com.moxiaoxiao.JULTest testLogConfig
严重: severe
四月 15, 2021 2:25:37 下午 com.moxiaoxiao.JULTest testLogConfig
警告: warning
四月 15, 2021 2:25:37 下午 com.moxiaoxiao.JULTest testLogConfig
信息: info
四月 15, 2021 2:25:37 下午 com.moxiaoxiao.JULTest testLogConfig
配置: config

Process finished with exit code 0

2. 分析词频与单词测试

@Test
public void testGetTermsAndCounts() throws IOException, FileEmptyException {
    String path = "log.log";
    String context = FileUtils.readFileToString(path);
    Map<String, Integer> map = AnalysisUtils.getTermsAndCounts(context);
    System.out.println(map);
}

九月 15, 2021 10:23:11 下午 org.ansj.dic.impl.File2Stream info
信息: path to stream library/ambiguity.dic
九月 15, 2021 10:23:11 下午 org.ansj.library.AmbiguityLibrary info
信息: load dic use time:1 path is : library/ambiguity.dic
九月 15, 2021 10:23:11 下午 org.ansj.dic.impl.File2Stream info
信息: path to stream library/default.dic
九月 15, 2021 10:23:11 下午 org.ansj.library.DicLibrary info
信息: load dic use time:1 path is : library/default.dic
九月 15, 2021 10:23:12 下午 org.ansj.library.DATDictionary info
信息: init core library ok use time : 865
九月 15, 2021 10:23:12 下午 org.ansj.library.NgramLibrary info
信息: init ngram ok use time :469
{com=4, 严重=1, 25=4, 15=4, 37=4, 信息=1, 四月=4, moxiaoxiao=4, 2021=4, testlogconfig=4, jultest=4, 2=4, 配置=1, 下午=4, 警告=1, severe=1, warning=1, config=1, info=1}

Process finished with exit code 0

3.测试计算重复率

@Test
public void testGetRepeatRate() throws IOException, FileEmptyException {
    String path = "log.log";
    String path2 = "2.log";
    String context = FileUtils.readFileToString(path);
    Map<String, Integer> map = AnalysisUtils.getTermsAndCounts(context);
    String context2 = FileUtils.readFileToString(path2);
    Map<String, Integer> map2 = AnalysisUtils.getTermsAndCounts(context2);
    System.out.println(MathUtils.getRepeatRate(map, map2));
}

九月 15, 2021 10:24:00 下午 org.ansj.dic.impl.File2Stream info
信息: path to stream library/ambiguity.dic
九月 15, 2021 10:24:00 下午 org.ansj.library.AmbiguityLibrary info
信息: load dic use time:0 path is : library/ambiguity.dic
九月 15, 2021 10:24:00 下午 org.ansj.dic.impl.File2Stream info
信息: path to stream library/default.dic
九月 15, 2021 10:24:00 下午 org.ansj.library.DicLibrary info
信息: load dic use time:2 path is : library/default.dic
九月 15, 2021 10:24:01 下午 org.ansj.library.DATDictionary info
信息: init core library ok use time : 765
九月 15, 2021 10:24:02 下午 org.ansj.library.NgramLibrary info
信息: init ngram ok use time :453
0.9881371839677033

4.测试答案输出

@Test
public void testWriteAns() throws IOException, FileEmptyException {
    String path = "log.log";
    String path2 = "2.log";
    String context = FileUtils.readFileToString(path);
    Map<String, Integer> map = AnalysisUtils.getTermsAndCounts(context);
    String context2 = FileUtils.readFileToString(path2);
    Map<String, Integer> map2 = AnalysisUtils.getTermsAndCounts(context2);
    Double rate = MathUtils.getRepeatRate(map, map2);
    FileUtils.writeAns("ans.txt", path, path2, rate);
}

九月 15, 2021 10:24:43 下午 org.ansj.dic.impl.File2Stream info
信息: path to stream library/ambiguity.dic
九月 15, 2021 10:24:43 下午 org.ansj.library.AmbiguityLibrary info
信息: load dic use time:0 path is : library/ambiguity.dic
九月 15, 2021 10:24:43 下午 org.ansj.dic.impl.File2Stream info
信息: path to stream library/default.dic
九月 15, 2021 10:24:43 下午 org.ansj.library.DicLibrary info
信息: load dic use time:1 path is : library/default.dic
九月 15, 2021 10:24:44 下午 org.ansj.library.DATDictionary info
信息: init core library ok use time : 687
九月 15, 2021 10:24:45 下午 org.ansj.library.NgramLibrary info
信息: init ngram ok use time :422

Process finished with exit code 0

答案文件:

原文:log.log
抄袭版论文的文件:2.log
重复率:0.99

5.测试空白参数

@Test
public void testEmptyMain() throws Exception{
    String[] args = {"", "",""};
    App.main(args);
}

原论文与抄袭论文不存在或答案输出路径为空!

6.测试正常参数

@Test
public void testMain() throws Exception{
    String[] args = {"orig.txt", "orig.txt","ans.txt"};
    App.main(args);
}

九月 15, 2021 10:26:14 下午 org.ansj.dic.impl.File2Stream info
信息: path to stream library/ambiguity.dic
九月 15, 2021 10:26:14 下午 org.ansj.library.AmbiguityLibrary info
信息: load dic use time:0 path is : library/ambiguity.dic
九月 15, 2021 10:26:14 下午 org.ansj.dic.impl.File2Stream info
信息: path to stream library/default.dic
九月 15, 2021 10:26:14 下午 org.ansj.library.DicLibrary info
信息: load dic use time:2 path is : library/default.dic
九月 15, 2021 10:26:15 下午 org.ansj.library.DATDictionary info
信息: init core library ok use time : 725
九月 15, 2021 10:26:16 下午 org.ansj.library.NgramLibrary info
信息: init ngram ok use time :462
已将结果输出至:ans.txt

Process finished with exit code 0

输出文件:

原文:orig.txt
抄袭版论文的文件:orig.txt
重复率:1.00

五、异常声明

  • 请确保参数个数正确:

    该错误可能出现在使用cmd命令时参数个数并没有按要求给出3个文件路径导致,有可能是因为给少了也可能是因为给多了。

  • 原论文与抄袭论文不存在或答案输出路径为空!:

    该错误可能出现于原论文与抄袭论文路径不存在答案输出路径为空

  • 答案文件已存在,请使用新路径以避免覆盖!:

    该错误可能出现与答案文件已经存在于本地磁盘上,请更换一个路径并带上一个想要输出的答案文件的名字。

  • 文件读取有异常!:

    该错误可能出现与文件读取权限的设置上,请确保所有文件都是处于可读状态下。

六、其他声明

  1. 控制台输出:

    九月 15, 2021 10:26:14 下午 org.ansj.dic.impl.File2Stream info
    信息: path to stream library/ambiguity.dic
    九月 15, 2021 10:26:14 下午 org.ansj.library.AmbiguityLibrary info
    信息: load dic use time:0 path is : library/ambiguity.dic
    九月 15, 2021 10:26:14 下午 org.ansj.dic.impl.File2Stream info
    信息: path to stream library/default.dic
    九月 15, 2021 10:26:14 下午 org.ansj.library.DicLibrary info
    信息: load dic use time:2 path is : library/default.dic
    九月 15, 2021 10:26:15 下午 org.ansj.library.DATDictionary info
    信息: init core library ok use time : 725
    九月 15, 2021 10:26:16 下午 org.ansj.library.NgramLibrary info
    信息: init ngram ok use time :462
    

    属于正常日志记录信息,而不是错误。

  2. 重复率的计算采用的是余弦相似性的方式进行计算,对于两篇相似的文章,单词词频越相近则会得出一个更高的重复率,而如果单词词频相差较远甚至完全不相同时,重复率才会较低。

  3. 参考文章:TF-IDF与余弦相似性的应用

七、实际测试效果

标签:info,10,15,个人,项目,library,dic,2021
来源: https://www.cnblogs.com/moxiaoxiaooo/p/15291320.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有