数据挖掘4:自然语言处理(NLP)信息提取技术

版权声明:本文为博主原创文章,未经博主允许不得转载。http://blog.csdn.net/LuoXianXion https://blog.csdn.net/LuoXianXion/article/details/88823009

 

目录

第1步:基础知识

第2步:确定宏观与微观理解

第3步:确定您想要的是什么(在合理的成本内)

第4步:理解整个文档(宏观理解)

第5步:提取事实,实体和关系(微观理解)

第6步:保持原产地/可追溯性

第7步:人工辅助过程


 

 

一旦识别提取清理了用例所需的内容,下一步就是要了解该内容。在许多用例中,具有最重要信息的内容以自然语言(例如英语,德语,西班牙语,中文等)写下,并且不方便地标记。要从此内容中提取信息,您需要依赖某些级别的文本挖掘,文本提取或可能的全自然语言处理(NLP)技术。

互联网内容的典型全文提取包括:

  • 提取实体 - 例如公司,人员,金额,关键举措等。
  • 根据功能,意图或目的,或按行业或其他类别对内容进行分类 - 正面或负面(例如情绪分析),以进行分析和趋势分析
  • 聚类内容 - 识别话语的主要主题和/或发现新主题
  • 事实提取 - 使用结构化信息填充数据库,以进行分析,可视化,趋势分析或警报
  • 关系提取 - 填写图形数据库以探索现实世界的关系

按照以下7个步骤使用自然语言处理(NLP)技术提取信息

NLPçææ¯ï¼tutorial_1.jpg


第1步:基础知识

自然语言处理的输入将是简单的Unicode字符流(通常为UTF-8)。将这个字符流转换为一系列词汇项(单词,短语和句法标记),然后可以用来更好地理解内容,需要进行基本处理。

基础知识包括:

  • 结构提取 - 基于标记识别字段和内容块
  • 识别并标记句子,短语和段落边界 - 这些标记在进行实体提取和NLP时很重要,因为它们可以作为分析发生的有用中断。

- 开源可能性包括Lucene Segmenting Tokenizer和Open NLP 句子以及段落边界检测器。

  • 语言识别 - 将检测整个文档以及每个段落或句子的人类语言。语言检测器对于确定要应用于文本的语言算法和词典至关重要。

- 开源可能性包括Google语言检测器优化语言检测器Chromium Compact语言检测器

- API方法包括Bing语言检测APIIBM Watson语言识别用于语言检测的Google Translation API

  • 标记 - 将字符流分成标记,可用于进一步处理和理解。标记可以是单词,数字,标识符或标点符号(取决于用例)

- 开源标记器包括Lucene分析器Open NLP Tokenizer

Basis Technology提供功能齐全的语言识别和文本分析软件包(称为Rosette Base Linguistics),这通常是任何语言处理软件的第一步。它包含语言识别,标记化,句子检测,词形还原,分解和名词短语提取。

- 作为我们的自然语言处理工具包的一部分,搜索技术有许多这些工具可用于英语和其他语言。我们的NLP工具包括标记化,首字母缩略词标准化,词形还原(英语),句子和短语边界,实体提取(所有类型但不统计)和统计短语提取。这些工具可与Basis Technology的解决方案结合使用。

  • 首字母缩略词标准化和标记 - 首字母缩略词可以指定为“IBM”或“IBM”,因此应对其进行标记和规范化。

- Search Technologies的令牌处理具有此功能。

  • 词形还原/词干 - 将单词变体缩减为更简单的形式,这可能有助于增加NLP实用程序的覆盖范围。

- 词形还原使用语言词典对词根进行准确缩减。如果可用,则非常优选词法化。Search Technologies为英语提供了词典化,我们的合作伙伴Basis Technologies为60种语言提供了词典化。

- 词干使用简单的模式匹配来简单地删除标记的后缀(例如删除“s”,删除“ing”等)。在开源的Lucene分析器提供所产生的许多语言。

  • 分解 - 对于某些语言(通常是日耳曼语,斯堪的纳维亚语和西里尔语),复合词需要分成更小的部分以允许准确的NLP。

- 例如:“samstagmorgen”是德语中的“Saturday Morning”

- 有关更多示例,请参阅维基词典德语复合词

- Basis Technology的解决方案已经解压缩。

  • 实体提取 - 识别和提取实体(人员,地点,公司等)是简化下游处理的必要步骤。有几种不同的方法:

- 正则表达式提取 - 适用于电话号码,ID号码(例如SSN,驾驶执照等),电子邮件地址,号码,URL,主题标签,信用卡号码和类似实体。

字典提取 - 使用标记序列字典并识别文本中何时出现这些序列。这对已知实体有利,例如颜色,单位,尺寸,员工,商业团体,药品名称,产品,品牌等。

基于模式的复杂提取 - 适用于人名(由已知组件构成),商业名称(由已知组件构成)和基于上下文的提取方案(例如,根据其上下文提取项目),这些方案在性质上和高精度优于高召回率。

统计提取 - 使用统计分析进行上下文提取。这对于人们姓名,公司名称,以前不知道的地理实体以及结构良好的文本(例如学术或新闻文本)都有好处。当高回忆率优于高精度时,倾向于使用统计提取。

  • 短语提取 - 提取具有强烈意义的标记(短语)序列,其独立于单独处理时的单词。在进行NLP时,应将这些序列视为一个单元。例如,“大数据”具有强烈的含义,当单独使用时,它与“大”和“数据”无关。所有公司都有这些在整个组织中普遍使用的短语,并且作为一个单元而不是单独处理。提取短语的技巧包括:

词性标注 - 识别来自名词或动词从句的短语

统计短语提取 - 识别比偶然发生的频率更高的令牌序列

混合 - 将两种技术结合使用,往往是最准确的方法。

第2步:确定宏观与微观理解

在开始之前,您应该决定需要什么级别的内容理解:

宏观理解 - 提供对整个文档的一般理解。

  • 通常使用统计技术执行
  • 它用于:聚类,分类,相似性,主题分析,文字云和摘要

微观理解 - 从个别短语或句子中提取理解。

  • 通常使用NLP技术执行
  • 它用于:提取事实,实体(见上文),实体关系,操作和元数据字段

请注意,虽然微观理解通常有助于宏观理解,但两者可能完全不同。例如,简历(或履历)可以将整体上的人识别为大数据科学家 [宏观理解],但它也可以将其识别为流利的法语 [微观理解]。

第3步:确定您想要的是什么(在合理的成本内)

并非所有自然语言理解(NLP)项目都能在合理的成本和时间内完成。完成了大量的NLP项目后,我们提供了一个流程图,帮助您确定您的需求是否可以通过当今的NLP技术进行管理。 

第4步:理解整个文档(宏观理解)

一旦您决定开始您的NLP项目,如果您需要更全面地了解该文档,这是一个“宏观理解。”这对以下内容非常有用:

  • 分类/分类/组织记录
  • 聚类记录
  • 提取主题
  • 一般情绪分析
  • 记录相似性,包括查找不同类型记录之间的相似性(例如,简历/简历中的职位描述)
  • 关键字/关键短语提取
  • 重复和近似重复的检测
  • 摘要/关键句提取
  • 语义搜索

标准体系结构是使用Apache SparkSpark MLlib(机器学习库)进行此分析。NLP架构通常如下所示:

Apacheçç«è±åºåarchitecture.jpg


在此体系结构中,内容从Internet或外部源(通过连接器)下载,然后写入Kafka队列并由Spark Machine Learning处理。结果将写入数据库或搜索引擎以供最终用户应用程序使用。

请注意,此架构中需要包含“文本处理库”,以处理上面“第1步:基础知识”中描述的所有基本NLP功能。这可以包括多个一起工作的开源项目,或者一个或两个供应商包。

Spark MLlib中有助于宏观理解的算法包括:

  • 向量 - 稀疏向量包含文档中加权的唯一单词或短语列表。权重可以使用TF / IDF或其他术语统计(例如文档中的位置,来自其他语料库或数据集的术语统计)来确定,然后归一化
  • Word2Vec - 计算所有术语的智能向量,使类似术语具有相似的向量。它可用于查找同义词和语义相似的单词。
  • 维度降低 - (通常,奇异值分解 - SVD)用于将任意N长度向量减少为更适合于分类的固定向量长度。
  • DIMSUM - 使用智能修剪算法将集合中的所有向量与集合中的所有其他向量进行比较。使用余弦相似性进行比较。
  • 最近邻 - 一种分类技术,用于将矢量与训练集中的样本矢量进行比较。最相似的向量(最近邻居)将用于对新记录进行分类。
  • 分类算法 - (决策树,随机森林,朴素贝叶斯,梯度提升树)可用于将文档分类或分类到训练集; 可能需要使用SVD减小尺寸
  • 聚类算法 - (K-Means [几种类型],LDA,PIC)识别相关文档的聚类和/或从内容集中提取主题。这可用于研究内容集中的记录类型或识别类似的文档集。请注意,也可以根据用户喜欢的记录类型对用户进行聚类。
  • Logistic回归 - 将多个文档统计和向量比较组合到一个用于对文档进行分类的公式中。

第5步:提取事实,实体和关系(微观理解)

微观理解是从文本中提取单个实体,事实或关系。这对于(从最简单到最难)是有用的:

  • 提取首字母缩略词及其定义
  • 提取引用其他文档的引用
  • 提取关键实体(人员,公司,产品,金额,地点,日期)。请注意,提取“关键”实体与提取“所有”实体不同(在选择哪个实体为“关键”时存在一些歧视)
  • 当未在网页中单独标记时,从全文中提取事实和元数据
  • 提取具有情绪的实体(例如对产品或公司的积极情绪)
  • 识别业务关系,目标/行动/犯罪者等关系。
  • 识别违规行为,表明可能违反规则的陈述
  • 提取带有归因的陈述,例如,人们的引用(谁说什么)
  • 提取规则或要求,例如合同条款,法规要求等。

必须通过对文本的句法分析来进行微观理解。这意味着订单和单词使用很重要。

执行提取有三种方法可以提供微观理解:

1.自上而下 - 确定词性,然后理解并将句子绘制成条款,名词,动词,对象和主语,修改形容词和副词等,然后遍历此结构以识别感兴趣的结构

  • 优点 - 可以处理复杂的,从未见过的结构和模式
  • 缺点 - 难以构造规则,易碎,经常因变量输入而失败,即使在解析后仍可能仍需要大量的模式匹配。

来自Google Cloud Natural Language API的自上而下的输出示例
(右键单击图像并选择“在新标签页中打开图像”以获得更好的图像清晰度)

å¾®ç解èªä¸èä¸ï¼output.jpg

在深度理解图中,请注意所有修饰符如何链接在一起。另请注意,需要第二步(需要自定义编程)来获取此图并标识适合导出到图形或关系数据库的对象/操作关系。


2. Bottoms Up - 创建大量模式,将模式与文本匹配并提取必要的事实。可以手动输入模式,或者可以使用文本挖掘来计算模式。

  • 优点 - 易于创建模式,可由业务用户完成,无需编程,易于调试和修复,运行速度快,直接匹配所需输出
  • 缺点 - 需要持续的模式维护,不能与新发明的构造匹配


3.统计 - 类似于自下而上,但将模式与由标记的训练数据生成的统计加权模式数据库进行匹配。

  • 优点 - 自动创建模式,内置统计权衡
  • 缺点 - 需要生成大量的训练数据(1000个例子),需要定期重新训练以获得最佳精度,不能匹配新发明的结构,更难调试


以下是自下而上或统计方法使用的样本模式

å¾®ç解样å-patterns_0.jpg

注意,可以手动输入这些模式,或者可以使用训练数据统计地(并且统计地加权)导出这些模式,或者使用文本挖掘和机器学习来推断它们。


NLP的开发框架:

  • 开放NLP - 有许多组件; 工作很复杂; 使用“自上而下”方法完成解析
  • UIMA - 有许多组件和统计注释; 往往需要大量的编程; 适用于自下而上/统计方法,但不容易实施
  • GATE - 可配置的自下而上方法; 更容易使用,但配置仍然必须由程序员(而不是业务用户)创建
  • 搜索技术的自然语言处理框架 - 自下而上的方法扩展到非常大的模式集。模式可以由业务用户创建。我们的框架预计将包括训练集的统计模式。这是在发展中。


NLP的服务框架:

  • IBM Cognitive - 基于训练数据的统计方法
  • Google Cloud Natural Language API  - 自上而下的全句图表系统
  • 亚马逊Lex - 更倾向于人类互动(人类在循环中)对话


一些棘手的事情需要注意:

  • 共同参考分辨率 - 句子通常指的是先前的对象。这可以包括以下参考。在所有这些情况下,期望的数据指的是先前的,更明确定义的实体。为了获得尽可能高的覆盖率,您的软件需要识别这些反向引用并解决它们。

- 代词参考:“她今年49岁。”

- 部分参考:“Linda Nelson是在夏威夷工作的高级会计师。琳达今年49岁。“

- 隐含的容器参考:“马里兰州是一个历史的地方。首都安纳波利斯成立于1649年。“

  • 处理列表和重复的项目

- 例如: “马里兰州最大的城市是巴尔的摩,哥伦比亚,日耳曼敦,银泉和华尔道夫。”

- 此类列表通常会破坏NLP算法,并且可能需要在标准结构之外存在的特殊处理。

  • 处理嵌入式结构,如表格,标记,项目符号列表,标题等。

- 请注意,结构元素也会对NLP技术造成严重破坏。

- 确保NLP不跨越结构边界的句子和模式。例如,从一个子弹点到下一个子弹点。

- 确保标记不会破坏NLP分析。例如,嵌入式强调不应该引起不适当的问题。

第6步:保持原产地/可追溯性

在某些时候,有人会指出你的系统产生的一段数据并说:“这看起来不错。它从哪里来的?”

从因特网获取内容然后从该内容中提取信息可能涉及许多步骤和大量计算阶段。为所有输出提供可追溯性(来源)非常重要,这样您就可以仔细追溯系统,以确切地确定信息的来源。

这通常涉及:

  • 保存提供内容的原始网页
  • 保存从网页中提取的所有文本块的开始和结束字符位置
  • 保存所有实体的开始和结束字符位置,以及匹配的实体ID和实体类型ID
  • 保存匹配的所有模式的开始和结束字符位置,以及模式ID和子模式ID(对于嵌套或递归模式)
  • 确定所有内容应用/使用的其他清理或规范化功能

通过在整个过程中保存此信息,您可以从输出追溯到原始网页或提供已处理内容的文件。这样您就可以完美准确地回答“这是从哪里来的?”的问题  ,并且还可以在每一步进行质量分析。

第7步:人工辅助过程

请注意,如果没有某些人为干预,就无法完成内容理解:

  • 用于创建或清理或选择已知实体的列表
  • 用于评估输出精度
  • 发现新模式
  • 评估和纠正输出
  • 创建培训数据

这些过程中的许多过程都可能令人难以置信地重复。在大型系统中,您需要考虑人为因素并将其构建到您的NLP系统架构中。

一些选项包括:

  • 创建用户界面以简化和指导人工评估过程,例如,允许用户使用WYSIWYG工具轻松标记内容中的实体,并提供易于编辑的列表进行查看(具有可排序的统计信息和简单的字符搜索)
  • 利用众包来扩展人工辅助流程,例如,使用CrowdFlower
  • 寻找将人工审核/人在环中作为标准业务流程的一部分进行整合的方法,例如,使用提取的理解预填表单,并让员工在点击“保存”并上传新内容之前对其进行审核

使用NLP技术提取信息后,如何将结果用于业务需求?我将在下一篇文章中讨论这一步。

 

猜你喜欢

转载自blog.csdn.net/LuoXianXion/article/details/88823009