如何开始信息提取?

时间:2009-02-21 19:40:22

标签: math machine-learning nlp information-extraction

您能否推荐一条培训路径,以便在信息提取方面取得进展。我开始阅读它来做我的一个爱好项目,并很快意识到我必须擅长数学(代数,统计,问题)。我已经阅读了一些关于不同数学主题的介绍性书籍(它非常有趣)。寻求一些指导。请帮忙。

更新:只是回答其中一条评论。我对文本信息提取更感兴趣。

8 个答案:

答案 0 :(得分:9)

  

回答其中一条评论。一世   我对文本信息更感兴趣   提取

根据项目的性质,Natural language processingComputational linguistics都可以派上用场 - 他们提供工具来衡量,从文本信息中提取功能,并应用培训,评分或分类。好的介绍性书籍包括OReilly's Programming Collective Intelligence(关于“搜索和排名”,文档过滤以及决策树的章节)。

利用这些知识的建议项目:POS(词性)标记和命名实体识别(能够识别纯文本的名称,地点和日期)。您可以将维基百科用作训练语料库,因为大多数目标信息已经在信息框中提取 - 这可能会为您提供一些有限的测量反馈。

IE中的另一个重要因素是搜索,这个领域不容小觑。同样,OReilly的书提供了基本排名的一些介绍;一旦你拥有大量的索引文本,你就可以用它做一些真正的IE任务。以Peter Norvig: Theorizing from data为出发点,非常好的激励因素 - 也许你可以重新实现他们的一些成果作为学习练习。

作为预警,我认为我有义务告诉你,信息提取是 hard 。任何特定任务的前80%通常是微不足道的;然而,IE任务的每个额外百分比的难度通常在指数上 - 在开发和研究时间内增长。它也是非常缺乏文档的 - 大部分高质量的信息目前都是晦涩难懂的白皮书(Google scholar是你的朋友) - 一旦你的手被烧了几次就检查出来。但最重要的是,不要让这些障碍让你失望 - 在这个领域取得进展肯定是很大的机会。

答案 1 :(得分:5)

我会推荐Christopher D. Manning,Prabhakar Raghavan和HinrichSchütze的优秀书Introduction to Information Retrieval。它涵盖了广泛的问题领域,形成了信息提取的最佳(2008)基础,并可在全文(在给定链接下)在线提供。

答案 2 :(得分:4)

我建议您查看Natural Language Toolkit (nltk)NLTK Book。两者都是免费提供的,是很好的学习工具。

答案 3 :(得分:3)

你不需要擅长数学来做IE只是理解算法是如何工作的,试验你需要最佳结果性能的案例,以及你需要达到目标准确度水平和工作的规模接着就,随即。您基本上使用算法和编程以及CS / AI /机器学习理论的各个方面而不是编写关于构建新机器学习算法的博士论文,您必须通过数学原理说服某人为什么算法有效,所以我完全不同意那个概念。实践与理论之间存在差异 - 众所周知,数学家更多地依赖于理论,然后是算法的可行性,以产生可行的商业解决方案。但是,你需要做一些背景阅读NLP的书籍和期刊论文,以找出人们从他们的结果中找到的东西。 IE是一个非常特定于上下文的域,因此您需要首先在您尝试提取信息的上下文中定义 - 您将如何定义此信息?你的结构模型是什么?假设您从半结构化和非结构化数据集中提取。然后,您还需要权衡是否要从标准人工方法接近IE,这涉及正则表达式和模式匹配等问题,或者您是否希望使用Markov Chains等统计机器学习方法来实现。你甚至可以看看混合方法。

您可以遵循的标准流程模型是调整数据/文本挖掘方法:

预处理 - 定义和标准化您的数据,以便从各种或特定来源中提取数据 细分/分类/聚类/关联 - 你的黑盒子,你的大部分提取工作都将完成 后处理 - 将数据清理回您想要存储的位置或将其表示为信息

此外,您需要了解什么是数据和什么是信息之间的区别。您可以将已发现的信息重新用作数据源,以构建更多信息图/树/图。这都是非常情境化的。

标准步骤:input-> process-> output

如果您使用的是Java / C ++,则可以使用大量可用的框架和库。 如果您想要进行大量标准文本提取,Perl将是一个很好的语言来进行NLP提取工作。

您可能希望将数据表示为XML或甚至表示为RDF图(语义Web),并且对于定义的上下文模型,您可以构建关系和关联图,这些图最有可能随着您提出越来越多的提取请求而发生变化。将其部署为一个宁静的服务,因为您希望将其视为文档资源。您甚至可以将其链接到分类数据集,并使用Solr进行分面搜索。

阅读的好消息来源是:

  • 计算语言学与自然语言处理手册
  • 统计自然语言处理基础
  • 展望中的信息提取应用
  • 使用Perl和Prolog进行语言处理简介
  • 言语和语言处理(Jurafsky)
  • 文本挖掘应用程序编程
  • 文本挖掘手册
  • 驯服文字
  • 智能网络算法
  • 构建搜索应用程序
  • IEEE Journal

确保在将此类应用程序/算法部署到生产环境之前进行全面评估,因为它们可以递归地增加您的数据存储要求。您可以使用AWS / Hadoop进行群集,使用Mahout进行大规模分类。将您的数据集存储在MongoDB或非结构化转储中,插入jackrabbit等。首先尝试使用原型进行试验。您可以使用各种档案来建立路易斯语料库,推特,TREC等培训。您甚至可以查看alchemyapi,GATE,UIMA,OpenNLP等。

从标准文本构建提取更容易,然后说一个Web文档,因此在预处理步骤中的表示对于定义您试图从标准化文档表示中提取的确切内容变得更加重要。

标准措施包括:精确度,召回率,f1度量等。

答案 4 :(得分:2)

我不同意那些推荐阅读编程集体智慧的人。如果你想做任何中等复杂度的事情,你需要擅长应用数学和PCI给你一种虚假的自信心。例如,当谈到SVM时,它只是说libSVM是实现它们的好方法。现在libSVM绝对是一个很好的包,但谁关心包。你需要知道的是为什么SVM给出了它所给出的极好结果,以及它与贝叶斯思维方式(以及Vapnik如何成为传奇)的根本区别。

恕我直言,没有一个解决方案。你应该很好地掌握线性代数和概率以及贝叶斯理论。贝叶斯,我应该补充一点,对于人类的氧气来说同样重要(它有点夸张,但你理解我的意思,对吧?)。此外,抓住机器学习。只是使用其他人的工作是完全没问题的,但是当你想知道为什么事情按原样完成时,你将不得不知道一些关于ML的事情。

检查这两个:

http://pindancing.blogspot.com/2010/01/learning-about-machine-learniing.html

http://measuringmeasures.com/blog/2010/1/15/learning-about-statistical-learning.html

http://measuringmeasures.com/blog/2010/3/12/learning-about-machine-learning-2nd-ed.html

好的,现在就是其中三个:) /酷

答案 5 :(得分:1)

维基百科Information Extraction文章是一个快速介绍。

在更高的学术水平上,您可能想要浏览像Integrating Probabilistic Extraction Models and Data Mining to Discover Relations and Patterns in Text这样的论文。

答案 6 :(得分:1)

如果您需要企业级NER服务,请查看here。开发NER系统(和训练集)是一项非常耗时且高技能的任务。

答案 7 :(得分:0)

这有点偏离主题,但您可能想阅读O'Reilly的编程集体智慧。它间接处理文本信息提取,并没有假设数学背景。