1

我正在尝试所有功能,pyenchant当我尝试时store_replacement,它对我不起作用,我不知道为什么。这是我的代码:

d = enchant.Dict('en_us')
d.check('alllow')

出[1]:假

d.suggest('alllow')`

Out[2]: ['allow',
'all low',
'all-low',
'wallop',
'allot',
'alloy',
'Willow',
'allele',
'allover']

d.store_replacement('alllow', 'alloy')`

d.suggest('alllow')`

Out[3]: ['allow',
'all low',
'all-low',
'wallop',
'allot',
'alloy',
'Willow',
'allele',
'allover']

根据 pyenchant 的文档:

store_replacement(mis, cor)
存储拼写错误的替换拼写。此方法向拼写检查引擎建议拼写错误的单词实际上正确拼写为 cor。这样的建议通常意味着 cor 出现在为以后的 mis 实例提供的建议拼写列表中的早期。

如您所见,它并没有提出我的建议。建议列表完全相同。如果我尝试做同样的事情,但使用建议列表中不存在的单词,我会得到相同的结果。

我不明白我做错了什么。我很感激任何帮助。谢谢!

4

1 回答 1

0

我的理解是 store_replacement 需要底层提供者实现。我的猜测是您正在使用 Myspell 或其他未实现它的提供程序。如果您将提供程序更改为实现它的 Aspell,您可以看到它的工作方式如下:(请注意,您需要安装 Aspell 和它的字典才能看到它的工作)

import enchant
b = enchant.Broker()
b.set_ordering("en_US","aspell,myspell")
print b.describe()
d=b.request_dict("en_US")
print d.provider

s = 'alllow'
d.check(s)
print d.suggest(s)
d.store_replacement(s, 'alloy')
print d.suggest(s)

在我用不同的替换(以前用“alloy”、“hallow”、“sallow”)运行它几次之后,最后在这个运行“aloe”中它输出:

[<Enchant: Aspell Provider>, <Enchant: Myspell Provider>, <Enchant: Hspell Provider>, <Enchant: Ispell Provider>]
<Enchant: Aspell Provider>
['alloy', 'hallow', 'sallow', 'all low', 'all-low', 'allow', 'Allie', 'aloe', 'allows', 'all', 'callow', 'fallow', 'mallow', 'tallow', 'wallow', 'ally', 'aglow', 'allot', 'Allah', 'allay', 'alley']
['alloy', 'hallow', 'sallow', 'aloe', 'all low', 'all-low', 'allow', 'Allie', 'allows', 'all', 'callow', 'fallow', 'mallow', 'tallow', 'wallow', 'ally', 'aglow', 'allot', 'Allah', 'allay', 'alley']
于 2016-04-19T21:36:41.790 回答