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出了新教程,感觉比之前的好,从基础讲起.系统清晰 ...
随机推荐
- 计算机网络-4-2-ARP地址解析协议以及IP数据报不可变组成部分
地址解析协议ARP 在实际的应用中,我们会经常遇见这样的一个问题:我们已知一个机器(主机或者路由器的),我们怎么获取相应的硬件地址?,地址解析协议就是用来解决这个问题的. ARP协议的作用: 由上 ...
- JVM学习笔记——方法区
方法区 Method Area 方法区在逻辑上属于堆的一部分,但可以看做是一块独立于 Java 堆的内存空间.所有的字段和方法字节码,以及一些特殊的方法,如构造函数,接口代码在此定义.所有定义方法的信 ...
- CentOS7下Hadoop伪分布式环境搭建
CentOS7下Hadoop伪分布式环境搭建 前期准备 1.配置hostname(可选,了解) 在CentOS中,有三种定义的主机名:静态的(static),瞬态的(transient),和灵活的(p ...
- Spring Security OAuth2 微服务认证中心自定义授权模式扩展以及常见登录认证场景下的应用实战
一. 前言 [APP 移动端]Spring Security OAuth2 手机短信验证码模式 [微信小程序]Spring Security OAuth2 微信授权模式 [管理系统]Spring Se ...
- Unity——计时器功能实现
Unity计时器 Demo展示 介绍 游戏中有非常多的计时功能,比如:各种cd,以及需要延时调用的方法: 一般实现有一下几种方式: 1.手动计时 float persistTime = 10f flo ...
- JVM:Java中的引用
JVM:Java中的引用 本笔记是根据bilibili上 尚硅谷 的课程 Java大厂面试题第二季 而做的笔记 在原来的时候,我们谈到一个类的实例化 Person p = new Person() 在 ...
- [no_code][Beta]发布声明报告
$( "#cnblogs_post_body" ).catalog() 软件下载 一个全新的超简易的OCR表单识别工具 轻松拍照,实现手写表格识别 一键打开,支持多种应用打开你的表 ...
- 6月8日 Scrum Meeting
日期:2021年6月8日 会议主要内容概述: 确定6.9日下午两点到五点集中对接 初步确定主题配色和echarts默认图表颜色 一.进度情况 组员 负责 两日内已完成的工作 后两日计划完成的工作 工作 ...
- 【技术博客】在Unity3d中实现烟花效果
在游戏开发中,我们经常需要用到类似烟花的效果.在Unity3d中,实现烟花效果的方法不止一种,我选用了Unity3d中新添加的粒子特效工具--visual effect graph来进行实现. 实现过 ...
- [no code][scrum meeting] Beta 1
$( "#cnblogs_post_body" ).catalog() 会议纪要 会议在微信群进行:集体反思alpha阶段博客分数尤其是scrum博客分数低的问题,讨论beta阶段 ...