4种Python库用于检测英语和非英语语言

2025年1月5日 | 阅读 7 分钟

Python 有许多出色的自然语言处理(NLP)库和工具,它们为我们提供了检测语言的各种酷炫方法。在本指南中,我们将介绍四种可以区分英语和非英语的 Python 库。

  1. langdetect
  2. langid
  3. pycld2
  4. fastText

让我们仔细看看这些库。

langdetect 库

langdetect 库是一个广为人知的用于检测语言的 Python 库。它是 Google 的语言检测库的 Python 版本,该库最初是用 Java 编写的。此库可以识别 55 种语言,并且在处理较长的文本时效果很好。

安装

要安装,您可以使用 pip 安装程序,如下所示:

语法

基本用法

以下是使用 langdetect 的简单方法:

输出

 
Language: de Probability: 0.5714285714285714
Language: en Probability: 0.42857142857142855   

处理包含多种语言的文本:

输出

 
Language: en, Probability: 0.5714285714285714
Language: es, Probability: 0.2857142857142857
Language: de, Probability: 0.1428571428571428   

langdetect 的优点:

  1. 它可以识别多种语言(55 种)。
  2. 它在处理短文本时表现相当不错。
  3. 它会告诉你它对识别出的每种语言的置信度。

langdetect 的缺点:

  1. 对于短文本,它可能会有些不稳定。
  2. 一些其他工具速度更快。

langid 库

langid 库是人们喜欢用来识别语言的另一个工具。它的设计目的是快速准确,并且可以处理 97 种不同的语言。

安装

要安装此库,您可以使用 pip 安装程序,如下所示:

语法

基本用法

输出

 
Language found: fr How sure: -54.41310358047485   

请记住,langid 会提供置信度分数,但这并不是概率。分数越低(越负),置信度越高。

处理多种语言

langid 没有内置的方法来识别文本中的多种语言。但是,您可以分割文本并单独检查每个部分。

输出

 
Sentence: This is English
Detected language: en, Confidence: -54.41310358047485
Sentence: Das ist Deutsch
The language detected is German, with a confidence of -40.72214221954346.
The sentence "Esto es español" is in Spanish. The system identified it with a confidence of -44.98177528381348.   

要设置 langid 检查的语言,您可以使用以下代码:

如果您事先知道可能出现的语言,这可以提高准确性。

langid 的优点:

  1. 速度非常快。
  2. 支持的语言数量多(97 种)。
  3. 在处理短文本时可能优于 langdetect。

langid 的缺点:

  1. 不提供不同语言选项的概率。
  2. 置信度分数有些奇怪(越负越确定)。

pycld2 库

pycld2 是 Google 的 Compact Language Detector 2 (CLD2) 的 Python 封装。它速度快,在处理较长文本时准确率很高。

安装

让 pycld2 工作可能有些麻烦,因为您需要编译它。要安装此库,您可以使用 pip 安装程序,如下所示:

语法

如果此方法无效,您可能需要从源代码安装或使用预编译的 wheel。

基本用法

以下是使用 pycld2 的简单示例:

输出

 
Is reliable: True
Text bytes found: 30
Details: (('ja', 'JAPANESE' 100 1024.0), ('un', 'Unknown', 0 0.0), ('un', 'Unknown', 0, 0.0))   

这个元组包含有关识别出的前三种语言的信息。它显示语言代码、名称、置信度以及 CLD2 分数。

处理多种语言

pycld2 库可以识别一段文本中的不同语言。

输出

 
Can trust: True
Bytes of text found: 54
Language: en, Name: ENGLISH How sure: 33
Language: de Name: GERMAN How sure: 33
Language: es, Name: SPANISH How sure: 33   

使用不同模式

pycld2 允许您以不同的方式识别语言。

这将显示文本中每个部分的语言。

pycld2 的优点:

  1. 速度非常快。
  2. 它可以识别一段文本中的多种语言。
  3. 它提供了有关识别出的语言的详细信息。

pycld2 的缺点:

  1. 在某些计算机上安装可能有些麻烦。
  2. 它支持 CLD2 支持的语言(约 160 种)。

fastText 库

fastText 库是用于学习词语含义和分组句子的工具。虽然人们用它来分类文本和理解单词,但它也具有识别文本语言的功能。

安装

要安装此库,您可以使用 pip 安装程序,如下所示:

语法

基本用法

首先,您需要获取预训练的模型才能使用 fastText 进行语言识别。

输出

 
We figured out the language: en
Confidence: 0.9999998807907104   

处理多种语言

fastText 不能立即识别一段文本中的多种语言,但您可以将其拆分并查看每个部分。

输出

 
Sentence: This is English
Language found: en How sure: 0.9999998807907104
Sentence: Das ist Deutsch
Language found: de How sure: 0.9999822378158569
Sentence: Esto es español
Language found: es How sure: 0.9999998807907104   

要获取多种可能语言的猜测:

输出

 
…
Language: en, Confidence: 0.9999998807907104
Language: de Confidence: 1.0426505367578566e-07
Language: nl Confidence: 4.515463705506921e-08
…   

fastText 的优点:

  1. 在处理较长的文本时非常精确。
  2. 加载模型后即可使用。
  3. 它可以为您提供不同语言选项的置信度分数。

fastText 的缺点:

  1. 需要下载一个大型模型文件。
  2. 加载模型需要一些时间。
  3. 它并非专门用于语言识别(它更像是一个通用的文本分类工具)。

比较与结论

这些库都有各自的优缺点。

  • langdetect 灵活且易于使用,但在处理短文本时并不总是准确。
  • langid 速度快,擅长处理短文本,但其置信度分数不易理解。
  • pycld2 速度极快,在处理长文本时准确率很高,但安装可能有些麻烦。
  • fastText 非常准确,但需要下载大型模型,并且启动时间较长。

选择哪个库取决于您的需求。

  • 如果您想识别短文本中的语言,langid 可能是最佳选择。
  • 对于需要速度的长文本,pycld2 可能非常适合。
  • 如果您想要一个易于使用且相当准确的工具,langdetect 是一个不错的全能选择。
  • 如果您需要最准确的结果,并且不介意设置时间,fastText 可能是最佳选择。