Skip to content

第一期w1:知识提取

zhengj3 edited this page Jun 12, 2016 · 29 revisions

知识提取是要解决结构化数据生成的问题。但是广义上讲,知识提取是数据质量提升中的一环,各种提升数据质量的方法,都可以视为某种知识提取。学术上一般是用自然语言处理的方法,但在实践中通常是利用规则。

我们要熟悉的概念和工具有 (假设大家已经熟悉了Python)

正则表达式

正则表达式(Regular Expression, regex)是字符串处理的基本功。数据爬取、数据清洗、实体提取、关系提取,都离不开regex。

教程:

应该掌握的知识点

  • 基本regex语法
  • 用match匹配模式
  • 使用group和提取匹配数据

Regex工具

进阶阅读

中文分词和词性标注

分词也是后续处理的基础。分词做得好,核心秘密在词库,算法的影响反而不太大。分词是会出错的。不过有些场合(比如检索排序),只要错误是一贯的,影响也不是太大。分词后面可以用规则来弥补。工程上很丑陋,上不了台面,但对早期的小项目可能够用了。

词性(Part of Speech, POS)就是中学大家学过的动词、名词、形容词等等的词的分类。一般的分词工具都会有词性标注的选项。

教程:

应该掌握的知识点

  • 用jieba分词和提取词性
  • 使用自定义词典
  • 熟悉中文词性标记是什么(如n nr v)

扩展阅读:

命名实体识别

用nltk调用Stanford NLP包

import os
from from nltk.tag import StanfordNERTagger

def main():
    st = StanfordNERTagger('english.all.3class.distsim.crf.ser.gz') 
    print st.tag('George Washington is the president of the United States.'.split())

if __name__ == "__main__":
    os.environ["CLASSPATH"] = "~/Library/stanford-ner-2015-12-09"
    os.environ["STANFORD_MODELS"] = "~/Library/stanford-ner-2015-12-09/models"
    main()

可以更改tagger和models 比如NER,中文models

记得设置CLASSPATH和STANFORD_MODELS

作业

综合分词工具和正则表达式提取邮件签名档

(待续)

线下聚会

特邀讲者:丁海星,介绍正则表达式的高级玩法

#KG小组北京一期成员github账号:

 姓名       账号 
  1. 胡杨 superhy
  2. 徐卓夫 ipush
  3. 侯月源 moonscar
  4. 田昌海 Jamestch
  5. 高晓燕 elisagao
  6. 侯立莎 yimiwawa
  7. 耿新鹏 xpgeng
  8. 梁方舟 pklfz
  9. 郑胤 Lan09 (TBD)
  10. 王鸿霄 wang101
  11. 李靖 L0113408
  12. 方东昊 Spirit-Dongdong
  13. 丁海星 godlikedog
  14. 付 鹏 pengfoo
  15. 张梦迪 mandyzore
  16. 佟海奇 tongtongqi
  17. 郭兴雨 buptguo
  18. 张志瑛 minenki
  19. 曹志远 smartczy
  20. 周祥 ucaszx
  21. 杨凯文 gentlekevin
  22. 王震 newle
  23. 鲍捷 baojie
Clone this wiki locally