D 的个人博客

开源程序员,自由职业者

小而美的 Java 博客系统 Solo
Golang 在线 IDE Wide
黑客与画家的社区 Sym
  menu
401 文章
1,867 评论
3398688 浏览
3 当前访客
ღゝ◡╹)ノ❤️

StoneAgeDict一期工程总结


StoneAgeDict

                ——Online, Real-time Dictionary Service

一期工程概述

从2月1日至今, StongeAgeDict项目经历了三次迭代,顺利完成了一期工程。

1. 明确了需求

  • 用户无需注册便可以查询、提交词汇定义或解释、例句等
  • 词汇审核人员可以审核用户提交的词汇更新

2. 确定了架构、技术

  • 采用OSGi作为底层框架
  • AJAX的Web界面

3. 实现了查询、审核词汇

  • 查询词库:用户进行词汇查询的共同、通用词库
  • 待审核词库:用户提交的词汇更新词库

4. 查询词库数据导入

  • 一部43W词汇的英汉辞典查询库
详细一点的设计可以参考StoneAgeDict现阶段设计小结

二期工程展望

二期工程主要分为两大研究实现方向:

1. 词汇查询性能调优

  • 数据库服务器参数调优
  • 应用程序、查询缓存调优

2. 降低词汇审核人员工作量,提高审核工作质量

这个是二期工程的研究重点和难点,可以从以下两方面入手:
  • 自动过滤用户提交的无用词汇更新(类似垃圾邮件过滤,可以采用贝叶斯分类模型
  • 自动过滤用户提交的重复词汇定义(过滤与已有词库定义重复的词库更新部分)
以上提到的两个方面属于自然语言处理、数据挖掘范畴,可以作为研究课题开展。

3. 丰富查询库

  • 增大同语言的词汇量储备
  • 增加多种语言词汇支持

4. 用户自己的词库

在某些场景下,用户的确需要自己的词库。例如:X教授拥有自己的整理的词库,对他的学生讲学的时候就很方便。要满足类似的用户需求,只需要在查询时根据用户名在查询词库中抽取出对于用户更新的部分即可。也就是说,用户可以定制自己的过滤器以抽取出不同的词汇定义,即可满足用户词库共享

一些认识

  1. 有时,诱导用户去简化他的需求可以让用户、开发团队受益良多,win-win才是我们所期待的
  2. 复杂的应用总是构建在简单的应用上的,这样才能保证系统整体的稳定和开发过程的敏捷
  3. 无论是基本的Water-full、Prototype、Iteration过程还是RUP、Agile等实际使用的过程模型、方法论,项目管理一定要做好,不能没有,也不能过度。只从过度这一点来看,与软件设计的过度设计有很多想通之处。软件工程问题上升到哲学范畴看的话,核心问题就是权衡、矛盾处理

评论