基本上,我想要扩展我已经拥有的数据集,该数据集包含一系列句子。为了实现这一目标,我计划在数据集中每个句子中添加语法/拼写错误。我的数据集是完全干净的,即没有任何拼写/语法错误。考虑到不应在任何特定句子中添加过多的错误,从而避免改变其含义/意义,该如何实现呢?
回答:
你有看过编辑距离吗?
编辑距离通过4个基本操作来衡量单词之间的距离:
- 插入(添加一个字符
x
)[1单位] - 删除(删除
x
)[1单位] - 转置(交换两个相邻字符
x
和y
)[1单位] - 替换(用
y
替换x
)[2单位 = 1插入 + 1删除]
例如,“algorithm”和“logarithm”之间的编辑距离为3。
为了引入模拟现实世界数据的有意义的噪声,你可以考虑以下方法:
- 在每个字符串中,随机选择1-2个单词
- 对于每个随机选择的单词,选择4个操作中的一个,并随机应用于单词的任何部分。你也可以在同一个单词上应用2个操作。在现实世界中,你不会发现编辑距离超过3-4的更剧烈的错误。
考虑编辑距离的原因是,你应该确保你的拼写错误与正确拼写之间的偏差不超过2-4。