7

有什么办法可以在附魔中使用多个字典。这就是我所做的,

import enchant
d = enchant.Dict("en_US")
d.check("materialise")
>> False

但如果我使用enchant.Dict("en_UK"),我会得到True。组合多个字典的最佳方法是什么,以便它True无论返回materialise还是materialize作为输入参数返回?

4

3 回答 3

1

我可能来晚了,但这个问题也引起了我的兴趣。

因此,在 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

希望这对我们未来的读者有所帮助:)

于 2021-10-12T12:32:49.937 回答
1

对于 Hunspell 词典,如果两个词典共享同一个.aff文件并且我想en_USen_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-24T12:20:32.827 回答
1

@ Mass17 这实际上是不正确的。该表达式"en_US" and "en_UK"是对 2 个结果为 的字符串的逻辑与运算"en_UK"。以下是 AND 运算符在上述表达式中的工作方式:(1) 首先,考虑任何非空字符串True,(2) 如果左侧字符串为 True,则检查并返回右侧字符串。阅读 Python 的短路评估,了解它为何以这种方式工作。

所以:

>>> "en_US" and "en_UK"
'en_UK'

请注意,如果您切换字符串的顺序:

>>> "en_UK" and "en_US"
'en_US'

“materialise”和“materialize”这两个词都出现在你的"en_UK"字典中,因此你得到了结果。您实际上还没有“组合”这两个字典。

于 2019-10-28T13:32:22.080 回答