R 中的自定义标记注释

Customised tokens annotation in R

目前我正在做一个 NLP 项目。这对我来说是全新的,这就是为什么我真的在努力在 R 中实现 NLP 技术。 一般来说,我需要从描述中提取机器实体。我有一本机器字典,其中包含 2 列:制造商和型号。

要训练提取模型,我必须有一个带注释的语料库。那就是我被困的地方。如何在文本中标注机器?以下是文本示例:

Skyjack 3219E 电动剪刀式升降机是一种由 4 x 6 V 电池供电的自行式设备。本机充电方便,插上电源即可。该装置可作为任何平坦铺砌表面上的工作装置用于建筑、制造和维护操作。您可以在室内和室外使用它。由于其无痕轮胎,机器不会在地板上留下任何可见的痕迹。该机器可以全高行驶,操作非常方便。 S3219E 具有 250 公斤的平台有效载荷能力。它可以在室内操作时处理两个人,在室外操作时可以处理一个人。通过合力安全学院了解我们的培训。

Skyjack 3219E - 这是一台必须被识别和标记的机器。 我想要类似于 POS 标记的结果,但不是名词和动词 - 制造商和型号。所有其他词都可能被标记为不相关。

手动注释非常昂贵,而且不是一种选择,因为通常描述又长又乱。

有没有办法调整词性标注器并使用自定义词典进行标注?感谢您的帮助!

编辑:(在写这篇文章的最后我意识到你计划使用 R,我所有的算法建议都基于 python 实现,但我希望你仍然可以从中得到一些想法答案 )

一般来说,这被认为是一个 NER(命名实体识别)问题。我在工作中正在处理类似的问题。

文中有一般结构吗?

比如实体名一般出现在第一句吗?这可能是一种简化启发式搜索或基于字典(例如已知产品)的搜索的方法。

注解有那么令人望而却步吗?

考虑到您基本上只需要一个自己关心的标签,那么一周的标记时间可能就足够了。我致力于在非结构化句子中发现品牌名称,我们在一周的注释和培训工作中做得很好 CRF ( Conditional Random Fields ) model. see pycrfsuite 一个很好的 python CRF 快速 c++ 实现的包装器

[编辑]

对于注释,我使用了变体 BIO 标记方案。

这是典型的句子,例如:"We would love a victoria's secret in our neighborhood",标记后的样子。

We O
would O
love O
a O
victoria B-ENT
's I-ENT
secret I-ENT

O 表示 O 我关心的实体(品牌)之外的词。 B代表实体词组的B开头,I代表实体词组的Inside。

在您的情况下,您似乎想要将制造商和型号项目分开。所以你可以使用像 B-MAN、I-MAN、B-MOD、I-MOD 这样的标签。下面是一个注释的例子:

The O 
Skyjack B-MAN
3219E B-MOD
electric O
scissor O
lift O
etc..

当然,一个模型的制造商可以在其名称中包含多个单词,因此请使用 I-MOD、I-MAN 标签来捕获它(参见我上面的工作示例)

请参阅 this link(ipython 笔记本)以获取有关标记序列如何查找我的完整示例。我的工作基于此。

建一个大词典

我们废弃了互联网,使用或拥有的数据从合作伙伴的数据库中获取。并建立一个巨大的字典,我们将其用作 CRF 中的特征和一般搜索。请参阅 ahocorosick 以在 python.

中进行基于 trie 的快速关键字搜索

希望这对您有所帮助!