首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >生成拼写错误的单词(排字)

生成拼写错误的单词(排字)
EN

Stack Overflow用户
提问于 2018-06-28 09:59:32
回答 2查看 5.5K关注 0票数 7

我已经实现了一个模糊匹配算法,我想使用一些样本查询和测试数据来评估它的召回率。

假设我有一个包含文本的文档:

代码语言:javascript
复制
{"text": "The quick brown fox jumps over the lazy dog"}

我想看看我是否可以通过测试诸如"sox“或"hazy drog”之类的查询来检索它,而不是“狐狸”和“懒狗”。

换句话说,我想要在字符串中添加噪声,以生成拼写错误的单词(排字)。

,有什么方法可以自动生成带有排字的单词,,用于评价模糊搜索?

EN

回答 2

Stack Overflow用户

发布于 2018-06-28 10:27:40

我会创建一个程序随机改变字母在你的话。我想你可以详细说明你的案件的具体要求,但总的想法是这样的。

说你有个短语

代码语言:javascript
复制
phrase = "The quick brown fox jumps over the lazy dog"

然后定义一个单词变化的概率(比如10%)。

代码语言:javascript
复制
p = 0.1

然后循环你的短语中的单词,并从每个词的均匀分布中抽取样本。如果随机变量低于阈值,则从单词中随机更改一个字母。

代码语言:javascript
复制
import string
import random

new_phrase = []
words = phrase.split(' ')
for word in words:
    outcome = random.random()
    if outcome <= p:
        ix = random.choice(range(len(word)))
        new_word = ''.join([word[w] if w != ix else random.choice(string.ascii_letters) for w in range(len(word))])
        new_phrase.append(new_word)
    else:
        new_phrase.append(word)

new_phrase = ' '.join([w for w in new_phrase]) 

在我的例子中,我得到了以下有趣的短语结果

代码语言:javascript
复制
print(new_phrase)
'The quick brown fWx jumps ovey the lazy dog'
票数 5
EN

Stack Overflow用户

发布于 2018-06-28 10:22:40

我本人也没有用过这个词,但是谷歌快速搜索发现了https://www.dcs.bbk.ac.uk/~ROGER/corpora.html,我想你可以用它来频繁地拼写你的文本中的单词。您也可以使用键盘距离来产生拼写错误,正如这里所解释的:Edit distance such as Levenshtein taking into account proximity on keyboard可能除了上面提到的错误外,还有其他一些常见拼写错误的数据库/语料库,因为我想,仅仅是随机插入/删除/更改字符(例如,最大值3)并不是对系统的有用评估,因为人们不会随机出错,而是在所犯的(拼写)错误类型中表现出简单的逻辑模式。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51079986

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档