【问题标题】:Python langdetect: choose between one language or the other onlyPython langdetect:在一种语言或另一种语言之间进行选择
【发布时间】:2018-08-24 22:43:07
【问题描述】:

我正在使用langdetect 来确定一组我知道是英语还是法语的字符串的语言。

有时,langdetect 告诉我该语言是罗马尼亚语,因为我知道一个字符串是法语。

如何让langdetect 仅在英语或法语之间进行选择,而不是在所有其他语言之间进行选择?

谢谢!

【问题讨论】:

    标签: python nlp language-detection


    【解决方案1】:

    选项 1

    一种选择是改用包langid。然后你可以简单地通过方法调用来限制语言:

    import langid
    langid.set_languages(['fr', 'en'])  # ISO 639-1 codes
    lang, score = langid.classify('This is a french or english text')
    print(lang) # en
    

    选项 2

    如果你真的想使用langdetect包,你可以复制包文件夹(如果你不确定它在哪里,使用python -m site --user-site)并从文件夹@987654325中删除你不需要的配置文件@。

    虽然这不是一个非常动态的解决方案。

    【讨论】:

      【解决方案2】:

      我这样做的方法是使用detect_langs,它返回一个具有概率的Language对象列表,然后遍历这个列表,如果其中一个选项是英语或法语,则返回语言,或者None 如果不是这种情况。此功能适用于此目的:

      from langdetect import detect_langs
      
      def englishOrFrench(string):
          res = detect_langs(string)
          for item in res:
              if item.lang == "fr" or item.lang == "en":
                  return item.lang
          return None
      
      print(englishOrFrench("Bonjour"))              # fr
      print(englishOrFrench("The quick brown fox"))  # en
      print(englishOrFrench("Hallo, mein Freund"))   # None
      

      【讨论】:

      • lang 检测有点.. 糟透了。 "38 HewcnonHe,!Me PlrIM HellaA.ne*aulee kicnon}le,wle npeAy(MOTpeHHbIX AorOBOpOM" 被检测为 en
      • @thang 您希望从完美工具中获得什么输出? langdetect 尝试将每个字符串都适合某种语言,因此如果您使用它来检测无意义的字符串,它当然会中断。
      • 我认为这是从俄罗斯 pdf 文档中复制的。
      • @thang 您的示例几乎与俄语无关,这是一个伪造的副本输出。
      猜你喜欢
      • 2014-11-04
      • 2011-01-04
      • 1970-01-01
      • 2014-03-12
      • 1970-01-01
      • 2018-02-15
      • 2012-06-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多