【问题标题】:Is it possible to pass multiple dictionary in enchant?是否可以在附魔中传递多个字典?
【发布时间】:2019-10-24 11:43:30
【问题描述】:

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

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

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

【问题讨论】:

    标签: python python-3.x pyenchant enchant


    【解决方案1】:

    对于 Hunspell 词典,如果两个词典共享相同的 .aff 文件并且我认为 en_US 和 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
    

    【讨论】:

      【解决方案2】:

      @Mass17 这实际上是不正确的。表达式"en_US" and "en_UK" 是对两个字符串的逻辑与运算,结果为"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" 字典中,因此您得到了结果。您实际上还没有“组合”这两个字典。

      【讨论】:

      • 为了您的答案的完整性,您可能希望显示它如何在您的答案中组合。 (审查结束)。
      【解决方案3】:

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

      那么,在Python的附魔中使用多种英语方言的解决方案如下:

          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
      

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-07-29
        • 1970-01-01
        • 2019-12-05
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多