打算搞一个中文世界的类WikiData的项目,用来收集整理中文世界的所有知识体系。
先把基础的存储、展示、众包协同等实现,再按数据领域一个个的进行数据建设。
因为是对标WikiData,价值分析、市场机会分析等在前面的几篇文章中也有说明,在这里就不赘述了,直接上计划!
功能模块
1.实体展示
单个实体的详情展示页面,有一套通用的展示模板,针对不同类型的实体可能需要特殊的展示模板;
2.实体搜索
根据实体名、别名搜索实体,根据实体名+属性名搜索实体的属性
3.用户管理
注册、登录、找回密码、个人资料、社交帐号、关注/被关注、操作动态、成就奖励等
4.单实体增删改
基于页面表单形式的单个编辑,主要面向普通小白用户,小规模、快速的特点
5.实体批量增删改
针对有批量数据处理能力的开发人员,需要考虑schema相关的制定、验证等
6.应用&API
基于知识库之上的面向最终用户的产品应用,或为这些应用提供高效易用的api
技术选型
1.实体与实体关系的存储主要采用MongoDB,会搭配使用Redis,
会用到JSON相关的技术,诸如JSON-LD,JSON-Schema等;
2.用户帐号系统等互联网成熟功能模块的数据存储会使用MySQL;
3.编程语言采用Python, Web开发框架采用Web.py;
4.实体检索会使用Lucene的python版本pylucene;
5.前端会使用Bootstrap和jQuery+Mustache.js,
太先进的前端技术诸如Angular/React/Vue,以及打包工具Webpack之类的暂时先不使用;
6.服务器先采用百度开放云的BAE产品;
如何让BAE支持pyLucene,目前还没定论
7.使用Git管理源代码;
Roadmap
先实现业务模型,再考虑性能优化
1.以汉字领域为首个case,实现单条实体的详情展示页/随机展示
2.把实体领域集、属性集当成比较特殊的数据领域,存储起来?
3.实体搜索 (query 解析)
需要用到lucene,但是bce没有docker容器,先实现-再考虑部署?
数据量少情况下的临时替代方案,mongodb的search功能?
由于BAE环境问题,需要综合考虑Lucene,Xapian, Elasticsearch,Whoosh等几种方案。
4.实体+属性的搜索
5.用户登录/注册(mobile-昵称-头像-微博-微信-QQ-Email)/找回密码
6.向个人库提交数据 (增、删、改、查)
数据校验、提交日志
7.个人库-主库的实体建立对应关系 (主库已有的实体,主库还没有的实体)
8.数据抽样机制
9.实现数据由个人库向主库的导入
10.单条记录新增 (变更日志 沙盒-审核-正式的机制实现)
11.单条记录编辑 (属性级、实体级的锁定机制实现)
实体关系
12.schema工具 - 编辑、展示、版本变更对已有数据的影响
json-schema
json-ld ?
与schema.org的关系
属性归一
提示-自动补全-智能推断等
10.应用&API (nlp-基础语料库)
- 汉字处理: 繁简转换,汉字拼音转换,同音字(谐音)(河蟹-和谐),文学押韵等
- 一词多义: 文章? 李娜
- 别名问题: 刘德华 老婆 == 华仔 太太,网页收录/索引建库前对关键词做归一处理
- 简称/全称:卫计委、计生办、sb等,也算一种别名问题;
- 中文分词:本质上还是基于词典的分词,若基于知识库,可以进一步把分出来的词和知识库中的实体、属性建立对应关系;
- 实体相似度:香蕉-苹果-梨子,哪个最不一样?
相关链接
https://www.wikidata.org/
http://schema.org/
http://json-schema.org/
http://json-ld.org/
http://www.json.org/
https://www.mongodb.org/
http://redis.io/
https://www.mysql.com/
https://www.python.org/
http://webpy.org/ ,轻量级python web开发框架
http://jquery.com/
http://v3.bootcss.com/ , bootstrap
https://github.com/janl/mustache.js , js模板引擎
https://bce.baidu.com/