项目介绍:language-detection
language-detection 是一个用来检测给定文本字符串语言的 PHP 库。它通过将不同语言的训练文本解析为 N-gram 序列,构建一个在检测阶段使用的数据库文件,然后使用这个数据库来识别输入文本的语言。这一库内置了对 110 种语言的训练和检测支持。
安装和使用
使用 Composer 安装
要使用 language-detection,首先需要确保 PHP 环境中安装了 Multibyte String 扩展。通过 Composer 安装该库非常简单:
$ composer require patrickschur/language-detection
基本用法
为了准确检测语言,输入文本的长度建议至少为几句话。以下是一个基本用法示例:
use LanguageDetection\Language;
$ld = new Language;
// 检测语言
$ld->detect('Mag het een onsje meer zijn?')->close();
返回的结果是一个语言代码和其对应概率的数组。
功能简介
- API 设计:该库提供了一系列 API 方法如
whitelist
、blacklist
、bestResults
和limit
等,以实现语言过滤和结果限制。 - 支持的语言:目前支持 110 种语言,用户可以通过在
resources
目录添加自定义语言文件来扩展支持的语言。 - 方法链:可以通过链式调用多种方法,如结合
blacklist
和limit
方法以获取特定的检测结果。
API 方法示例
-
whitelist(string ...$whitelist)
:传入一个白名单,仅返回指定的几种语言。 -
blacklist(string ...$blacklist)
:传入一个黑名单,从结果中排除指定的语言。 -
setTokenizer(TokenizerInterface $tokenizer)
:用户可以自定义解析器以处理特定格式的文本。
自定义语言支持
用户可以通过在 resources
目录中创建文件来添加新的语言。具体步骤为:
- 在
resources
创建新目录并添加训练文本文件。 - 使用类
Trainer
生成语言的模型。 - 删除辅助代码以保留干净的项目结构。
FAQ 常见问题
- 在检测阶段提高准确率的方法是使用更多的 N-gram,但这会降低性能。建议使用约 9,000 个 N-gram 来提升准确率。
- 即使语言文件很大,检测过程也不会变慢,因为过程只使用最佳的几个 N-gram。
贡献和许可证
language-detection 欢迎任何形式的贡献,并且根据 MIT 许可证条款发布。用户和开发者可以自由地使用和修改该库,支持不断的改进和功能扩展。