有没有办法在enchant中使用多个字典。这就是我要做的
import enchant
d = enchant.Dict("en_US")
d.check("materialise")
>> False
但是如果我使用enchant.Dict("en_UK")
,我会得到True
。组合多个字典的最好方法是什么,这样无论输入参数是materialise
还是materialize
,它都将返回True
?
发布于 2019-10-24 20:20:33
对于en_US
字典,如果两个字典共享相同的.aff
文件,并且我认为Hunspell和en_GB
都通过了这个条件,那么就可以解决这个问题。
作者是Sergey Kurakin,Bash脚本是(dic_combine.sh
),如下所示:
#!/bin/bash
# Combines two or more hunspell dictionaries.
# (C) 2010 Sergey Kurakin <kurakin_at_altlinux_dot_org>
# Attention! All source dictionaries MUST share the same affix file.
# Usage: dic_combine source1.dic source2.dic [source3.dic...] > combined.dic
TEMPFILE=`mktemp`
cat $@ | sort --unique | sed -r 's|^[0123456789]*$||;/^$/d' > $TEMPFILE
cat $TEMPFILE | wc -l
cat $TEMPFILE
rm -f $TEMPFILE
rm -f $TEMPFILE
因此,您必须将这些字典文件放在一个目录中并运行:
$ dic_combine en_US.dic en_GB.dic > en.dic
发布于 2019-10-28 21:32:22
@Mass17这实际上是不正确的。表达式"en_US" and "en_UK"
是对结果为"en_UK"
的2个字符串进行逻辑AND运算。下面是上面表达式中AND运算符的工作方式:(1)首先,任何非空字符串都被认为是真的,(2)如果左边的字符串为True
,那么检查并返回右边的字符串。阅读有关Python的短路评估的文章,了解它为什么会以这种方式工作。
所以:
>>> "en_US" and "en_UK"
'en_UK'
请注意,如果您切换字符串的顺序:
>>> "en_UK" and "en_US"
'en_US'
单词"materialise“和"materialize”都会出现在您的"en_UK"
字典中,因此您会得到这样的结果。你还没有真正“组合”这两个字典。
发布于 2021-10-12 12:32:50
我可能来晚了,但这个问题也引起了我的兴趣。
因此,在Python的enchant中使用多种英语方言的解决方案如下:
import enchant
'''
Use "en" simply to cover all available dialects and word usages of the English language
'''
d = enchant.Dict("en")
d.check("materialise") # UK (en_GB)
>>> True
d.check("materialize") # USA (en_US)
>>> True
希望这对我们未来的读者有帮助:)
https://stackoverflow.com/questions/58540651
复制相似问题