人工智能培训

搜索

如何使用深度学习执行文本实体提取

[复制链接]
php_z 发表于 2018-4-9 16:28:28 | 显示全部楼层 |阅读模式
php_z 2018-4-9 16:28:28 326 0 显示全部楼层
选自TowardsDataScience
作者:Dhanoop Karunakaran等
机器之心编译
参与:Tianci LIU、路
本文介绍了如何使用深度学习执行文本实体提取。作者尝试了分别使用深度学习和传统方法来提取文章信息,结果深度学习的准确率达到了 85%,远远领先于传统算法的 65%。
项目地址:http://github.com/dkarunakaran/entity_recoginition_deep_learning
XBzjB8oDWBb618d8.jpg


引言
文本实体提取是自然语言处理(NLP)的主要任务之一。随着近期深度学习领域快速发展,我们可以将这些算法应用到 NLP 任务中,并得到准确率远超传统方法的结果。我尝试过分别使用深度学习和传统方法来提取文章信息,结果非常惊人:深度学习的准确率达到了 85%,远远领先于传统算法的 65%。
本项目的目标是把文章中的每个单词标注为以下四种类别之一:组织、个人、杂项以及其他;然后找到文中最突出的组织和名称。深度学习模型对每个单词完成上述标注,随后,我们使用基于规则的方法来过滤掉我们不想要的标注,并确定最突出的名称和组织。
在这里要感谢 Guillaume Genthial 这篇关于序列标注的文章(http://guillaumegenthial.github.io/),本项目建立在这篇文章的基础之上。
模型的高级架构
PTqmcXh5STHTTH30.jpg


架构
上图是对每个单词进行分类标注的模型高级架构。在建模过程中,最耗时间的部分是单词分类。我将解释模型的每个组成部分,帮助读者对模型组件有一个全面的、更高层次的理解。通常,模型组件可分为三部分:
单词表征:在建模第一步,我们需要做的是加载一些预训练词嵌入(GloVe)。同时,我们需要从字符中提取出一些含义。
语境单词表征:我们需要利用 LSTM,对语境中的每一个单词得到一个有意义的表征。
解码:当我们得到表示单词的向量后,我们就可以用它进行预测。
hot encoding(用数值表示单词)
深度学习算法只接受数值型数据作为输入,而无法处理文本数据。如果想要在大量的非数值场景下使用深度神经网络,就需要将输入数据转变数值形式。这个过程就是 hot encoding。
下面是一小段实现 hot encoding 的代码示例:
同样地,我们必须获取输入数据中的所有字符,然后将其转化为向量,作为字符嵌入。
单词嵌入 & 字符嵌入
单词嵌入是处理文本问题时使用的一种通过学习得到的表征方式,其中含义相同的单词表征相近。通常,我们利用神经网络来实现单词嵌入,其中使用的单词或短语来自于词库,并需要转变为实数构成的向量形式。
但是,在数据集上生成词向量计算成本很高,我们可以使用一些预训练的单词嵌入来避免这个问题:比如使用斯坦福大学的 NLP 研究者提供的 GloVe 向量。
r1d9p920ufg1GQdn.jpg


字符嵌入是字符的向量表征,可用于推导词向量。之所以会使用字符嵌入,是因为许多实体并没有对应的预训练词向量,所以我们需要用字符向量来计算词向量。这里有一个详细介绍字符嵌入的在线资源:http://minimaxir.com/2017/04/char-embeddings/。
LSTM
FhX3x5zvvjy3Yjnz.jpg


传统神经网络 VS 循环神经网络(RNN)
循环神经网络(RNN)是人工神经网络的一种,用于序列数据中的模式识别,例如文本、基因组、手写笔迹、口语词汇,或者来自传感器、股市和政府机构的数值型时间序列数据。它可以「理解」文本的语境含义。
dlc2gy0g1btyVXir.jpg


RNN 神经元
LSTM 是一种特殊的循环神经网络,相比于简单的循环神经网络,它可以存储更多的语境信息。简单的 RNN 和 LSTM 之间的主要区别在于它们各自神经元的结构不同。
对于语境中的每一个单词,我们都需要利用 LSTM 得到它在所处语境中的有意义表征。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则 返回列表 发新帖

php_z当前离线
新手上路

查看:326 | 回复:0

快速回复 返回顶部 返回列表