当前位置:酷我小说>科幻灵异>程序员修炼生涯> 第四章 文本第过滤
阅读设置(推荐配合 快捷键[F11] 进入全屏沉浸式阅读)

设置X

第四章 文本第过滤(1 / 2)

 使用了SVN和JIRA以后,工作效率得到了提高,羽方的工作热情也得到了提升,觉得自己对于团队的作用越来越高,在团队中的认同感也是越来越高了。

这一天,羽方有迎来了自己新的任务,文本过滤的优化。公司的系统本来就有文本过滤的功能,只是过滤的方式是通过关键字过滤进行的,也就是简单的进行文字匹配,如果命中的关键字太多的话,就把对应的网站进行标识,然后交由管理员进行审核。现在的问题是通过简单的关键字进行匹配的话,经常会出现误判的情况,领导和系统的使用者都希望能够提高系统的识别准确性,减少用户的工作量。然后这个问题就交给了羽方来处理。

羽方领到了任务,却没有想到好的处理办法。因为他在网络上进行过搜索,目前主要的方法是通过切词进行处理。切词以后,在对切出来的词语进行关键字匹配,这样就可以大大提高文本过滤的识别准确性。但是这种方法羽方却无法使用,因为如果要把所有的网页进行切词的话,会导致整个系统的识别效率降低,就是说一个网页的识别可能都需要2~3秒的时间。然而,实际上系统的需求要至少1秒钟内可以检测10个以上的网页,如果使用了切词方法,会导致系统的效率跟不上爬虫的效率。

不能够进行切词,羽方就必须考虑其他的方法,在保证效率的同时,能够尽可能的提高文本过滤的准确性。羽方想了好久,也没有想到可行的办法。无奈之下,像范平海进行了求助。范平海当然知道羽方的任务,而且心中也有着自己的想法,等到羽方求助的时候,就告诉了羽方。那就是对关键字进行评分,不同的关键字评分不同,而且有些特殊的关键字评分可以是负数,然后计算所有的关键字评分总和,如果达到了一个阈值,就把该网页提取出来,这样的话,准确度比着之前肯定会有一个很大的提高。

羽方听了之后,觉得确实会有不错的效果,就准备开始写代码了。却又发现如果使用了评分机制的话,就会需要大量的修改代码,因为整个的文本检查流程都会发生变化,以前是对于每个关键字只检查一次,而现在每个关键字都需要检查多次,如果处理不好的话,就会导致系统的检测性能降低很多。

关于这个问题,羽方在咨询过范平海之后,决定使用C++代码来实现关键字的检查,然后通过Python调用C++的动态库来实现文本过滤的效果,因为在性能上,C++有着天然的优势,自己处理内存比着Python的性能要高很多。就这样羽方决定先使用C++实现关键字的过滤系统,然后再使用ctypes进行动态库调用。

这是一个完整的工作,也是羽方第一次接触多语言的共同开发,进行语言间的调用。由于没有使用过ctypes,羽方只能再从头学习。庆幸的是,羽方在学校的时候学习的编程语言就是C++,不需要重新学习C++了,这样就可以自己直接实现关键字的检查模块了。为了提高关键字检查的性能,羽方采用了二叉树遍历的方式,因为这样的话只需要遍历一次整篇网页的文本,而不需要每个关键字都过滤一遍文本。基于在学校时学习的基础还算扎实,羽方很快就实现了关键字检查的模块,并封装成了动态链接库,以供python的调用。

Python的调用模块的书写难度绝不亚于关键字检查模块的书写,因为内存申请的问题,羽方在书写调用模块的时候,遇到了很多的内存申请和异常返回的问题。好在,经过网上的资料搜索和范平海的帮助,羽方顺利完成了整个文本过滤模块的实现。

完成了整个文本过滤模块的代码编写之后,羽方进行了一些测试工作,发现性能比着以前有所降低,但是还在可接受的范围之内,而准确率确实提高了不少,心中非常高兴,就把代码提交到了SVN之上。

上一章 目录 +书签 下一页