NER的无监督特征学习

数据挖掘 nlp 文本挖掘 特征提取
2021-09-18 03:21:00

我已经使用 CRF 算法和我的手工特征实现了 NER 系统,结果非常好。问题是我使用了很多不同的功能,包括 POS 标签和引理。

现在我想为不同的语言制作相同的 NER。这里的问题是我不能使用 POS 标签和引理。我开始阅读有关深度学习和无监督特征学习的文章。

我的问题是:

是否可以使用 CRF 算法进行无监督特征学习的方法?有没有人试过这个并得到任何好的结果?有没有关于这个问题的文章或教程?

我仍然不完全理解这种功能创建方式,所以我不想花太多时间做一些不起作用的事情。所以任何信息都会非常有帮助。目前,基于深度学习创建整个 NER 系统有点过分。

3个回答

是的,完全可以将无监督学习与 CRF 模型结合起来。特别是,我建议您探索使用word2vec功能作为 CRF 输入的可能性。

Word2vec 训练 a 以区分适合给定上下文的单词和随机选择的单词。然后可以将模型的选择权重解释为给定单词的密集向量表示。

这些密集向量具有吸引人的特性,即语义或句法相似的词具有相似的向量表示。基本的向量算术甚至揭示了单词之间一些有趣的学习关系。
例如,vector("Paris") - vector("France") + vector("Italy") 产生一个与vector("Rome") 非常相似的向量。

在高层次上,您可以将 word2vec 表示视为类似于 LDA 或 LSA 表示,因为您可以将稀疏输入向量转换为包含单词相似性信息的密集输出向量。

就此而言,LDA 和 LSA 也是无监督特征学习的有效选择——两者都试图将单词表示为“主题”的组合并输出密集的单词表示。

对于英文文本,Google 分发了在一个巨大的 1000 亿字 Google 新闻数据集上预训练的 word2vec 模型,但对于其他语言,您必须训练自己的模型。

在这篇 2014 年的论文( GitHub ) 中,作者比较了在基于 CRF 的 NER 系统中结合词嵌入的多种策略,包括密集嵌入、二进制嵌入、集群嵌入和一种新颖的原型方法。按照 vlad 的建议直接使用密集向量是最直接的方法,但在多重评估中也是最不有效的。

我在我的特定领域 NER 项目中实现了原型想法,它对我来说效果很好。

我只是晚了 5 个月,但是使用 CRFSuite,您实际上可以将这些浮动功能用作数字,而不是字符串。为此,您只需为每个维度创建一个唯一标签,然后添加一个“:”,后跟该值。

例如,单词“jungle”用 5 个维度表示:0.1 0.4 0.8 0.2 0.9

然后 CRFSuite 会将该词 + 特征视为:

标签 f1:0.1 f2:0.4 f3:0.8 f4:0.2 f5:0.9

当然,你用一个实际的字符串替换 ``LABEL'' 并用制表符分隔所有空格(这是 CRFSuite 的格式)。

不确定其他软件包。