用于命名实体识别的 Word2Vec

数据挖掘 机器学习 Python 神经网络 nlp
2021-10-11 22:35:13

我正在寻找使用 google 的 word2vec 实现来构建命名实体识别系统。我听说具有通过结构反向传播的递归神经网络非常适合命名实体识别任务,但我一直无法为该类型的模型找到合适的实现或合适的教程。因为我正在使用非典型语料库,NLTK 和类似工具中的标准 NER 工具表现非常糟糕,看起来我必须训练自己的系统。

简而言之,有哪些资源可以解决这类问题?是否有可用的标准递归神经网络实现?

4个回答

最近的两篇论文使用称为 CharWNN 的深度学习架构来解决这个问题。CharWNN 最初用于在英语语料库的词性 (POS) 标记上获得最先进的结果(没有手工制作的特征)。

同一作者的第二篇论文使用相同(或相似)的架构来预测一个词是否属于 10 个命名实体类,具有明显的最新结果。

您可以考虑使用 Frantzi 等人使用的方法,而不是“具有反向传播的递归神经网络”。人。在曼彻斯特大学的国家文本挖掘中心 (NaCTeM) 的Termine(参见:thisthis),它们“结合了语言和统计信息”,而不是深度神经网络。

试试这个这有一个 Word2Vec 的实现,而不是用于 NER 和其他 NLP 任务的词袋。

以下是关于如何将词向量用于 NER 的一些想法,它采用了一种几乎无监督的以 word2vec 为中心的方法。

  1. 给定一组词向量(你训练过的东西,或者像 GoogleNews-vectors-negative300.bin 这样的现成的东西),在向量空间中发现集群。这些集群基本上是您对各种未命名概念的定义。
  2. 通过最少的监督,您可以映射/转换未命名的集群以匹配人类知识,从而创建基于已知词向量和未命名概念的命名概念。例如,一个方法findCluster(['joy', 'surprise', 'disgust', 'trust', 'fear', 'sadness', 'anger', 'anticipation'])可能会返回一个包含数百个主要与情感相关的单词的列表。如果您将此列表命名为“情感”,那么您就有一个基于向量空间定义的命名概念“情感”。
  3. 您还可以进行矢量数学以找到两个给定概念之间的中间概念。例如,向量数学可能会告诉您,当给定两个词“惊喜”和“厌恶”时,会在两者之间找到以下内容:沮丧、惊讶、失望、惊奇、困惑、恼怒、难以置信、震惊等。这允许你建立概念之间的关系。
  4. 您可以重复以上步骤来建立各种类型的命名概念,例如:工作日、所有情绪、快乐情绪、车辆等。
  5. 一旦你建立了命名概念的层,你就可以在一个已经用命名概念增强的文本语料库上训练一个 RNN,所以'brown fox jumps'也是'{color} {animal} {action}'等。这样,RNN 应该能够以无人监督的方式学习一些基本语法。
  6. 如果你已经从上面建立了一个足够强大的语法,那么你应该能够将它应用于你的一些 NER 任务。