第一次编程作业

一、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孩']

三、心得体会

  • 在编码前一定要计划好程序结构,不然之后的代码修改就非常难受,还不一定能够解决,麻了麻了。结合要去一定要多看,多读,多参考,这样才能找到进行更好的选择,选择更加合适自己的算法。虽然这个过程非常煎熬,做出来的东西也不怎么样,但是在这个过程中学习到了挺东西,勉强控制了这个骂人的心。

最新文章

  1. 【Junit 报错】No appenders could be found for logger (org.springframework.core.env.StandardEnvironment).
  2. 关于iBatis.NET连接各数据库时提示没找到数据库驱动的依赖文件
  3. Communication - 02.Call U
  4. MyCat 学习笔记 第十三篇.数据分片 之 通过HINT执行存储过程
  5. node.js创建服务器报错
  6. SqlParameter[] 添加
  7. 【Android 界面效果34】Android里Service的bindService()和startService()混合使用深入分析
  8. js中call和apply的用法和区别
  9. Ubuntu配置Android编译环境
  10. Android ViewPager实现图片标题轮播和点击事件
  11. X-Windows桌面
  12. 使用location.href跳转页面在火狐浏览器中报错404
  13. AtCoder Grand Contest 027 (AGC017) D - Modulo Matrix 构造
  14. [LeetCode] Reaching Points 到达指定点
  15. 转载:揪出MySQL磁盘消耗迅猛的真凶
  16. 云栖大会day2总结 上午
  17. file上传图片,base64转换、压缩图片、预览图片、将图片旋转到正确的角度
  18. Lambda的前世今生
  19. Oracle的安装与配置
  20. CDQZ.OPENJUDGE DataStructure22

热门文章

  1. SpringBoot之网站的登陆注册逻辑
  2. 手机淘宝轻店业务 Serverless 研发模式升级实践
  3. python中return的返回和执行
  4. 苹果的最新MacbookPro,炸到你了么?
  5. JAVA复习总体大纲
  6. 改善深层神经网络-week1编程题(Initializaion)
  7. MySQL:基础语法-1
  8. UltraSoft - Alpha - Scrum Meeting 3
  9. Unity 制作不规则形状button
  10. SpringCloud 2020.0.4 系列之服务降级