大作业0.001版发布

 

  今天有必要写篇日志来记录一下暑假c++大作业的情况。

  我还是笔到临头就无语,本来挺有想法要写的,现在又不知道说啥....写写流水账吧。

  首先是使劲的看算法书,华亮师兄扔了本《柔性字符串匹配》给我看,其实我没看完,我只看了单模式串匹配和近似匹配部分,多模式串、扩展模式串、正则表达式这三章我都还没看...以后补上...

    把看过的算法都用c++自己实现了一遍,然后选了一个BPR近似匹配算法来试试手。发现可以用,近似匹配算法部分的框架算是有了。

  接着想怎么来解决词库的问题,看了好多篇论文,谋篇论文里提到一个n-gram倒排索引的搜索方法,我就试着来建一个。利用txt文本文件的储存方式,我把牛津中英大词典的n-gram倒排索引给建了起来。

  但是我面临一个很恶心的问题,因为我的每一个索引项都是单独用一个txt文件储存的,索引项有4万个,那就意味着有4万个txt文件。虽然这些文件的大小只有2M,但是却占了100+M的空间,而且复制的时候极其缓慢。因为c++操作TXT文件的特点,我无法将这些TXT文件给合并到一起。

      这时吴华亮师兄建议我可以试试xml...于是我就去找xml的教程来看,初步掌握xml文件的特点后,发现c++无法直接操作xml文件。于是我就去找合适的第三方库来解决c++操作xml文件的问题,开始时用一个轻量级的库叫tinyxml,后来发现tinyxml不尽如人意,就想换一个。后来我找到了pugixml,这个比tinyxml更快更小更好用的库,就决定用这个库来解决xml的问题了。花了一天的时间看文档、一天的时间熟悉使用,第三天终于把n-gram倒排索引的xml文件给建了起来,这次只有一个文件,大小4m,十分好用,相当满意。

  然后就是界面的问题了。之前就计划界面用QT写,本来打算是用QlineEdit和Qlabel来草草解决的,但是在查资料写界面的过程中,发现网上有个挺符合我要求的模型,用到了QlistViewModel,然后我就模仿了那个模型。接着把我之前做好的算法部分、搜索部分、数据文件部分以及这个界面整合到一起,于是大作业0.001版就诞生了!!!

  软件的雏形就是这样了,往后会不断在这个雏形的基础上优化改进加功能....

  截个图给大家看看

      到现在为止,不算第三方库我的代码量才不到500行...我都无语了...看来得不断加功能才行,怎么也得撑到1000行...

  接下来有三个方面要做:首先是要优化算法,要添多一个过滤算法和高容错率下的近似匹配算法,还有智能排序的算法;然后是优化界面,把界面做的更好看一点,还要添加多一栏文本框才行;最后是丰富功能,比如记录用户的错误词库啊等等...

      呼,吃饭去咯,加油~

 

posted on 2012-07-24 12:25  unhealthy  阅读(231)  评论(0编辑  收藏  举报