第一次编程作业

一、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的第一次编程作业的更多相关文章

  1. 第一次编程作业(My Own Score)

    博客班级 https://edu.cnblogs.com/campus/fzzcxy/2018SE2 作业要求 https://edu.cnblogs.com/campus/fzzcxy/2018SE ...

  2. Stanford coursera Andrew Ng 机器学习课程编程作业(Exercise 2)及总结

    Exercise 1:Linear Regression---实现一个线性回归 关于如何实现一个线性回归,请参考:http://www.cnblogs.com/hapjin/p/6079012.htm ...

  3. 11061160_11061151_Pair Project: Elevator Scheduler软件工程结对编程作业总结

    软件工程结对编程作业总结 11061160  顾泽鹏 11061151  庞梦劼 一.关于结对编程 这次的软工任务既不是单打独斗的个人任务,也不是集思广益的团队项目,而是人数为两人的结对编程.两个人合 ...

  4. 【BUAA软件工程】第一次阅读作业

    BUAA软件工程 第一次阅读作业 项目 内容 这个作业属于哪个课程? 北航软工 这个作业的要求在哪里? 第一次个人作业 我在这个课程的目标是? 学习高效严谨的软件工程开发过程,建立团队意识 这个作业在 ...

  5. jzoj3208. 【JSOI2013】编程作业(kmp)

    题面 Description Will相信,很多同学都有过这样的经历:大牛已经写好了编程作业,而作为菜鸟的自己不会写怎么办呢?拿大牛的代码抄一下嘛!但是提交一模一样的作业是不是不太好?于是就改一改变量 ...

  6. c++ 西安交通大学 mooc 第十三周基础练习&第十三周编程作业

    做题记录 风影影,景色明明,淡淡云雾中,小鸟轻灵. c++的文件操作已经好玩起来了,不过掌握好控制结构显得更为重要了. 我这也不做啥题目分析了,直接就题干-代码. 总结--留着自己看 1. 流是指从一 ...

  7. stanford coursera 机器学习编程作业 exercise 3(逻辑回归实现多分类问题)

    本作业使用逻辑回归(logistic regression)和神经网络(neural networks)识别手写的阿拉伯数字(0-9) 关于逻辑回归的一个编程练习,可参考:http://www.cnb ...

  8. C++ 第一次上机作业

    今天完成了C++第一次上机作业,感觉比较简单. 题目: 求2个数或3个正整数中的最大数,用带有默认参数的函数实现. 对3个变量按由小到大顺序排序,要求使用变量的引用. 编写一个程序,用同一个函数名对几 ...

  9. ufldl学习笔记和编程作业:Feature Extraction Using Convolution,Pooling(卷积和汇集特征提取)

    ufldl学习笔记与编程作业:Feature Extraction Using Convolution,Pooling(卷积和池化抽取特征) ufldl出了新教程,感觉比之前的好,从基础讲起.系统清晰 ...

随机推荐

  1. P5056-[模板]插头dp

    正题 题目链接:https://www.luogu.com.cn/problem/P5056 题目大意 \(n*m\)的网格,求有多少条回路可以铺满整个棋盘. 解题思路 插头\(dp\)的,写法是按照 ...

  2. Radius协议-学习

    目录 RFC Radius 协议 Radius-学习 RADIUS协议的主要特征 客户端/服务器模式 安全的消息交互机制 良好的扩展性 AAA介绍 C/S结构 RADIUS在协议栈中的位置 RADIU ...

  3. The Data Way Vol.4|开源是创造软件诸多方法中最好的一种形式

    关于「The Data Way」 「The Data Way」是由 SphereEx 公司出品的一档播客节目.这里有开源.数据.技术的故事,同时我们关注开发者的工作日常,也讨论开发者的生活日常:我们聚 ...

  4. Idea进行java应用的远程调试Remote debugging

    本文可以解决如下两个问题: 1.如何处理和调试那些只发生在生产环境(或其他远程环境)而本地开发环境可能没办法重现的"问题". 2.只有一个可以部署的war/jar包,只有class ...

  5. 题解 Children Trips

    题目传送门 Description 给出一个大小为 \(n\) 的边权全为 \(1,2\) 的带权树,有 \(q\) 此查询,每次给出 \(u,v,p\) ,问 \(u\to v\) 每次可以最多走边 ...

  6. Centos7 python3环境搭建 兼容python2.7

    Centos7 python3环境搭建 兼容python2.7 安装前提依赖 yum install openssl-devel bzip2-devel expat-devel gdbm-devel ...

  7. git GUI Clients

    git GUI Clients Git 自带用于提交 (git-gui) 和浏览 (gitk) 的内置 GUI 工具,但也有一些第三方工具供寻求特定平台体验的用户使用. References Git ...

  8. python在指定一行的下一行插入文本

    给定一个程序,程序中有许多函数,比如,funcA,funcB,现在,如何在生成的函数中插入一个logger()语句? 这里用一个solidity程序做例子 pragma solidity ^0.4.0 ...

  9. Less-(1~4) union select

    Less-1: 核心语句: 无任何防护:回显查询结果或错误内容. 输入单引号闭合语句中的单引号,#注释后面的内容,即可注入.由于有查询结果回显,直接联合注入即可. 1'order by x #(有些环 ...

  10. jdbc简单学生管理系统

    这个是java连接mysql数据库的一个简单学生系统,通过jdbc连接数据库. 工具类 JDBCuntils. package Student; import java.io.IOException; ...