Table of Contents
Author | weiwu (victor.wuv@gmail.com) |
Date | 2018-04-12 13:41:16 |
Title |
1 知识提取
知识提取是要解决结构化数据生成的问题。但是广义上讲,知识提取是数据质量提升中的一环,各种提升数据质量的方法,都可以视为某种知识提取。学术上一般是用自然语言处理的方法,但在实践中通常是利用规则。
我们要熟悉的概念和工具有
1.1 正则表达式
1.2 中文分词和词性标注
1.3 命名实体识别
综合分词工具和正则表达式提取邮件签名档
2 知识表示
知识表示是如何组织数据的结构,以方便推导出新的结构的方法。传统上属于逻辑的分支,但在实践中我们会用很简单、可读、可维持的数据结构。
实体抽取,实体链接,对齐,消歧,关系抽取
2.1 JSON和YAML
在Python中使用JSON超级简单,JSON和Python的字典很像,可以转换。看官方文档即可
掌握下面这些库会让你处理json和字典的时候更开心
- attrdict https://github.com/bcj/AttrDict a['foo']['bar']可以写做a.foo.bar 或a['foo'].bar。可读/写属性,可递归访问属性,继承dict的各种方法
- marisa-trie https://github.com/kmike/marisa-trie 超级节约内存的字典
- DAWG http://dawg.readthedocs.org/en/latest/ 另一个超级节约内存的字典
- orderedmultidict https://github.com/gruns/orderedmultidict 多值有序字典
- jsonpickle http://jsonpickle.github.io/ JSON持久化。支持更复杂数据的存储
- jq http://stedolan.github.io/jq/tutorial/ 命令行上的json处理和查询
- pjson https://github.com/igorgue/pjson 在命令行上彩色打印json
- jsonlint https://github.com/zaach/jsonlint 格式化json
- jsawk https://github.com/micha/jsawk json的awk,一个快速的命令上的查询工具
- json-diff https://www.npmjs.org/package/json-diff 比较两个json
- YAML:JSON的超集,有更简洁的语法 http://yaml.org/
YAML在我看来比JSON的可读性更好,更加Pythonic(因为其语法接近Python)。当然有人可能会不喜欢缩进,不过Python社区的智力一般比较高,不会有这种偏见。YAML里可以有节点之间的链接,因此可以表示图。此外yaml里可以写!注!释!我认为YAML是天然的最好的知识图谱表示语法。
- PyYAML是Python里的Yaml处理库 http://pyyaml.org/wiki/PyYAML
2.2 RDF和OWL
Resource Description Framework: A framework designed for metadata data model, typically triples.
Web Ontology Language: An ontology is like a parent class.
2.3 JSON-LD
jason linked. 自己设计电子邮件的结构化表示
3 知识存储
知识存储解决如何管理大量的结构化数据。我们可以用不同的数据库工具。现代的关系数据库可能可以解决大多数需要知识图谱的场合。某些特殊场合,我们需要图数据库。
3.1 知识链接的方式:字符串、外键、URI
3.2 PostgreSQL及其JSON扩展
3.3 图数据库 Neo4j和OrientDB
3.4 RDF数据库Stardog
选择一种数据库存储自己的电子邮件
4 知识检索
知识检索提供对用户友好的交互。知识检索从简单到复杂可分为六级:关键词、词联想、词本体、短程关系、长程关系、自由问答。我们会实践前两个层次的技术,并了解后面四个层次。
4.1 Gensim实现主题模型
4.2 ElasticSearch
4.3 SearchKit构造分面浏览器
4.4 IBM Watson的架构
浏览和检索自己的电子邮件