我是新来的NER
and Spacy
。尝试找出需要进行哪些文本清理(如果有)。看起来像我发现的一些例子修剪了前导和尾随空格,然后用开始/停止索引进行处理。我看到一个例子,那个人做了一堆清理工作,但他的准确性非常差,因为所有索引都搞乱了。
澄清一下,数据集是用 DataTurks 注释的,所以你会得到如下的 json:
"Content": <original text>
"label": [
"Skills"
],
"points": [
{
"start": 1295,
"end": 1621,
"text": "\n• Programming language...
因此,通过“破坏索引”,我的意思是,如果你去掉前导\n
,您需要更新起始索引,以便它仍然正确对齐。
所以这确实是个问题,如果我开始从开头、结尾或中间删除字符,我需要将规则应用于内容属性并调整开始/结束索引以匹配,不是吗?我猜显然是“是”:),所以我想知道需要进行多少清洁工作。
所以你会删除\n
s、项目符号、前导/尾随空格,但保留标准标点符号,如逗号、句号等?
小写、停用词、词形还原等内容又如何呢?
我在看过的一些示例中看到的一个问题是,开始/停止索引确实会因清理而丢失,因为在删除字符以保持同步时,您需要更新每个注释。
I.e.
A 0 -> 100
B 101 -> 150
如果我删除一个char
at position 50
,那么我需要调整B to 100 -> 149
.
首先,spaCy 不对输入进行任何转换 - 它按字面意思接受并保留格式。因此,当您向 spaCy 提供文本时,您不会丢失任何信息。
也就是说,如果输入是自然句子,没有奇怪的标点符号(例如报纸文章),则使用预训练管道输入 spaCy 效果最好,因为这就是 spaCy 的训练数据的样子。
为此,您应该删除无意义的空格(例如换行符、前导空格和尾随空格)或格式化字符(可能是一行----
?),但这就是您必须做的所有清理工作。 spaCy 训练数据不会有项目符号,因此它们可能会得到一些奇怪的结果,但我会先将它们保留下来。 (此外,项目符号显然是可打印字符 - 也许您的意思是非 ASCII?)
我不知道你所说的“索引混乱”是什么意思,但对于一些较旧的 NLP 方法来说,通常会进行更广泛的预处理,例如删除停用词和小写所有内容。这样做会使 spaCy 的情况变得更糟,因为它使用您正在删除的信息作为线索,就像人类读者一样。
请注意,您可以训练自己的模型,在这种情况下,他们将了解您向他们展示的文本类型。在这种情况下,您可以完全摆脱预处理,但对于实际上毫无意义的东西,例如换行符/前导和后续空格,您也可以删除它们。
简要介绍您的新信息...
是的,如果进行预处理,则必须更新 NER 标签的字符索引。如果不更新它们就无法使用。
看起来您正试图从简历中提取“技能”。其中有很多要点列表。 spaCy 训练数据是报纸文章,不包含任何此类列表,因此很难说正确的做法是什么。我认为子弹并不重要,但你可以尝试删除或不删除它们。
小写、停用词、词形还原等内容又如何呢?
我已经解决了这个问题,但是不要这样做。这在历史上是 NLP 模型的常见做法,但对于包括 spaCy 在内的现代神经模型来说,这毫无帮助。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)