Bean_sprout的第一次编程作业
一、PSP表格
PSP2.1 | Personal Software Process Stages | 预估耗时(分钟) | 实际耗时(分钟) |
---|---|---|---|
Planning | 计划 | 60 | 120 |
· Estimate | · 估计这个任务需要多少时间 | 10 | 5 |
Development | 开发 | ||
· Analysis | · 需求分析 (包括学习新技术) | 240 | 300 |
· Design Spec | · 生成设计文档 | ||
· Design Review | · 设计复审 | 30 | 30 |
· Coding Standard | · 代码规范 (为目前的开发制定合适的规范) | 10 | 30 |
· Design | · 具体设计 | 240 | 240 |
· Coding | · 具体编码 | 600 | 800 |
· Code Review | · 代码复审 | 30 | 60 |
· Test | · 测试(自我测试,修改代码,提交修改) | 120 | 120 |
Reporting | 报告 | ||
· Test Repor | · 测试报告 | 30 | 30 |
· Size Measurement | · 计算工作量 | 30 | 10 |
· Postmortem & Process Improvement Plan | · 事后总结, 并提出过程改进计划 | 30 | 30 |
· 合计 | 1430 | 2765 |
二、计算机模块接口
2.1 计算模块接口的设计与实现过程
2.1.1 思路
敏感词出现的可能有很多种可能,如falungong、T M等针对这个情况,我觉得建立一个汉字结合拼音的字典树可以很方便的进行查找,但是在后面的进程出现了一个问题,我不是很解决。
我的想法就是讲文本内容读出然后进行一个一个的字符进行读写,然后进入树中搜索,然后碰到数字、字符等影响判断的就进行跳过,在检测长度与树中对应长度相等时就是说明查找得到敏感词。
对于字的拆分我只需要将词库中的加入树中即可。
2.1.2 代码段
设计有三个类一个用文本处理,一个类作为单纯的保存节点,一个类树类进行建树与进行敏感词的搜索
文本处理没有什么感觉主要就是进行读与写
主要就是对建树的操作:
# 传入敏感词
def P_Work(self, phrase_store):
pass
# 将敏感词转换为对应的矩阵便于后续插入字典树中
def str2matrix(self, phrase):
pass
# 递归建树,获取每一行的
def insertKey(self, layer: int):
pass
# 递归建树将汉字、拼音以及拼音首字母合在一起,例如"汉字", ”汉Z",...
def recursionInsertKey(self, row_now: int, layer: int, phrase: str):
pass
# 将所有模式串插入树中
def insert(self, word, source: str):
pass
# 传入文本一段一段的文字,搜索每一段的敏感词
def search(self, s: str, line: int):
pass
# 利用节点存储的字符长度信息,获取敏感词及其在搜索串内的坐标
def matched(self, node, s, cur_pos, count: int, line: int):
- 因为我是对每一段中逐个字符开始搜索,然后我在谐音处理的时候发生很多的不愉快,因为将文字转为拼音的时候会出现很多个字符,不可以通过原有函数进行搜索,不想改变树的结构,便考虑再开一个函数进行鉴别,奈何挣扎失败。
2.1.3计算模块接口部分的性能改进。
- 目前还没有什么想法希望可以大家帮助。
2.1.4计算模块部分单元测试展示。
if __name__ == "__main__":
tmp = Trie()
tmp.P_Work(["邪教"])
tmp.search(s="你好我是邪教,这个也是x教,这个还是邪 教", line=1)
print(tmp.line_result)
print(tmp.word_result)
print(tmp.source_result)
结果:
[1, 1, 1]
['邪教', '邪教', '邪教']
['邪教', 'x教', '邪 教']
if __name__ == "__main__":
tmp = Trie()
tmp.P_Work(["邪教","小屁孩"])
tmp.search(s="你好我是邪教,这个也是x教,这个还是邪 教,大家好这是小屁123孩", line=1)
tmp.search(s="xiao屁孩,大家好这是小屁1234孩", line=2)
print(tmp.line_result)
print(tmp.word_result)
print(tmp.source_result)
结果:
[1, 1, 1, 1, 2, 2]
['邪教', '邪教', '邪教', '小屁孩', '小屁孩', '小屁孩']
['邪教', 'x教', '邪 教', '小屁123孩', 'xiao屁孩', '小屁1234孩']
三、心得体会
- 在编码前一定要计划好程序结构,不然之后的代码修改就非常难受,还不一定能够解决,麻了麻了。结合要去一定要多看,多读,多参考,这样才能找到进行更好的选择,选择更加合适自己的算法。虽然这个过程非常煎熬,做出来的东西也不怎么样,但是在这个过程中学习到了挺东西,勉强控制了这个骂人的心。
Bean_sprout的第一次编程作业的更多相关文章
- 第一次编程作业(My Own Score)
博客班级 https://edu.cnblogs.com/campus/fzzcxy/2018SE2 作业要求 https://edu.cnblogs.com/campus/fzzcxy/2018SE ...
- Stanford coursera Andrew Ng 机器学习课程编程作业(Exercise 2)及总结
Exercise 1:Linear Regression---实现一个线性回归 关于如何实现一个线性回归,请参考:http://www.cnblogs.com/hapjin/p/6079012.htm ...
- 11061160_11061151_Pair Project: Elevator Scheduler软件工程结对编程作业总结
软件工程结对编程作业总结 11061160 顾泽鹏 11061151 庞梦劼 一.关于结对编程 这次的软工任务既不是单打独斗的个人任务,也不是集思广益的团队项目,而是人数为两人的结对编程.两个人合 ...
- 【BUAA软件工程】第一次阅读作业
BUAA软件工程 第一次阅读作业 项目 内容 这个作业属于哪个课程? 北航软工 这个作业的要求在哪里? 第一次个人作业 我在这个课程的目标是? 学习高效严谨的软件工程开发过程,建立团队意识 这个作业在 ...
- jzoj3208. 【JSOI2013】编程作业(kmp)
题面 Description Will相信,很多同学都有过这样的经历:大牛已经写好了编程作业,而作为菜鸟的自己不会写怎么办呢?拿大牛的代码抄一下嘛!但是提交一模一样的作业是不是不太好?于是就改一改变量 ...
- c++ 西安交通大学 mooc 第十三周基础练习&第十三周编程作业
做题记录 风影影,景色明明,淡淡云雾中,小鸟轻灵. c++的文件操作已经好玩起来了,不过掌握好控制结构显得更为重要了. 我这也不做啥题目分析了,直接就题干-代码. 总结--留着自己看 1. 流是指从一 ...
- stanford coursera 机器学习编程作业 exercise 3(逻辑回归实现多分类问题)
本作业使用逻辑回归(logistic regression)和神经网络(neural networks)识别手写的阿拉伯数字(0-9) 关于逻辑回归的一个编程练习,可参考:http://www.cnb ...
- C++ 第一次上机作业
今天完成了C++第一次上机作业,感觉比较简单. 题目: 求2个数或3个正整数中的最大数,用带有默认参数的函数实现. 对3个变量按由小到大顺序排序,要求使用变量的引用. 编写一个程序,用同一个函数名对几 ...
- ufldl学习笔记和编程作业:Feature Extraction Using Convolution,Pooling(卷积和汇集特征提取)
ufldl学习笔记与编程作业:Feature Extraction Using Convolution,Pooling(卷积和池化抽取特征) ufldl出了新教程,感觉比之前的好,从基础讲起.系统清晰 ...
随机推荐
- ANTLR学习(一)ANTLR简介和环境搭建
一.ANTLR简介和学习动机 1. ANTLR简介 antlr是指可以根据输入自动生成语法树并可视化的显示出来的开源语法分析器.ANTLR-Another Tool for Language Reco ...
- 关于布隆过滤器,手写你真的知其原理吗?让我来带你手写redis布隆过滤器。
说到布隆过滤器不得不提到,redis, redis作为现在主流的nosql数据库,备受瞩目:它的丰富的value类型,以及它的偏向计算向数据移动属性减少IO的成本问题.备受开发人员的青睐.通常我们使用 ...
- CSharpEntityFramework与CodeFirst实践
CSharpEntityFramework与CodeFirst实践 前言 当我们进行开发的时候,常常会用到数据库来对数据进行持久化的操作,有的时候,我们并不想要在进行代码开发的过程中,还去关注数据库的 ...
- Serverless 对研发效能的变革和创新
作者 | 杨皓然(不瞋) 对企业而言,Serverless 架构有着巨大的应用潜力.随着云产品的完善,产品的集成和被集成能力的加强,软件交付流程自动化能力的提高,我们相信在 Serverless 架构 ...
- 几何 三垂模型 及 正方形 及 弦图 及 jio拉jio模型 及 中位线
Q:$AO\bot OB,AO=OB,CO\bot OD,CO=OD,BC\bot EF$ 求证 $E$ 为 $AD$ 中点 A:作如图 $AI\bot IH\bot HD$ $\because AO ...
- Vue3学习(七)之 列表界面数据展示
一.前言 昨晚可能是因为更新完文章后,导致过于兴奋睡不着(写代码确实太容易让人兴奋了),结果两点多才睡着,大东北果然还是太冷了. 不知道是不是因为膝盖和脚都是冰凉的,所以才导致很晚才能入睡? 刚眯了一 ...
- JBOSS未授权访问漏洞利用
1. 环境搭建 https://www.cnblogs.com/chengNo1/p/14297387.html 搭建好vulhub平台后 进入对应漏洞目录 cd vulhub/jboss/CVE-2 ...
- 机器学习:EM算法
EM算法 各类估计 最大似然估计 Maximum Likelihood Estimation,最大似然估计,即利用已知的样本结果,反推最有可能(最大概率)导致这样结果的参数值的计算过程. 直白来讲,就 ...
- 第5次 Beta Scrum Meeting
本次会议为Beta阶段第6次Scrum Meeting会议 会议概要 会议时间:2021年6月6日 会议地点:「腾讯会议」线上进行 会议时长:10min 会议内容简介:对完成工作进行阶段性汇报:对下一 ...
- [对对子队]会议记录4.20(Scrum Meeting11)
今天已完成的工作 何瑞 工作内容:搭建第三关,添加了运行指令标识 相关issue:搭建关卡2.3 相关签入:4.20签入1 4.20签入2 吴昭邦 工作内容:搭建第三关 相关iss ...