跳转到主要内容

快速准确的语言识别器

项目描述

直升机机场

License PyPi-version

一个旨在速度和准确性都高的语言识别工具。主要是一个高效的HeLI-OTS到Rust的端口,在保持相同精度级别的同时实现了25倍的加速。

安装

从PyPi

在您的环境中安装它

pip install heliport

然后下载二进制模型

heliport download

从源代码

安装需求

克隆仓库,构建包并二进制化模型

git clone https://github.com/ZJaume/heliport
cd heliport
pip install .
heliport binarize

使用

CLI

只需运行heliport identify命令,该命令从stdin读取行

cat sentences.txt | heliport identify
eng_latn
cat_latn
rus_cyrl
...
Identify languages of input text

Usage: heliport identify [OPTIONS] [INPUT_FILE] [OUTPUT_FILE]

Arguments:
  [INPUT_FILE]   Input file, default: stdin
  [OUTPUT_FILE]  Output file, default: stdout

Options:
  -j, --threads <THREADS>                Number of parallel threads to use.
                                         0 means no multi-threading
                                         1 means running the identification in a separated thread
                                         >1 run multithreading [default: 0]
  -b, --batch-size <BATCH_SIZE>          Number of text segments to pre-load for parallel processing [default: 100000]
  -c, --ignore-confidence                Ignore confidence thresholds. Predictions under the thresholds will not be labeled as 'und'
  -s, --print-scores                     Print confidence score (higher is better) or raw score (higher is better) in case '-c' is provided
  -m, --model-dir <MODEL_DIR>            Model directory containing binarized model or plain text model. Default is Python module path or './LanguageModels' if relevant languages are requested
  -l, --relevant-langs <RELEVANT_LANGS>  Load only relevant languages. Specify a comma-separated list of language codes. Needs plain text model directory
  -h, --help                             Print help

Python包

>>> from heliport import Identifier
>>> i = Identifier()
>>> i.identify("L'aigua clara")
'cat_latn'

请记住先下载或二进制化模型!

Rust包

use std::path::PathBuf;
use heliport::identifier::Identifier;
use heliport::lang::Lang;

let identifier = Identifier::load(
    PathBuf::from("/path/to/model_dir",
    None,
    );
let lang, score = identifier.identify("L'aigua clara");
assert_eq!(lang, Lang::cat);

与HeLI-OTS的差异

尽管目前使用与HeLI-OTS 2.0相同的模型,识别算法几乎相同,但有一些差异(主要在预处理期间)可能导致不同的结果。然而,在大多数情况下,这些差异不应降低精度,也不太可能频繁发生。

注意:这两个工具都对每个识别的文本进行预处理,以删除所有非字母字符。

可能导致结果变化的具体实现差异是

  • HeLI在预处理期间会删除URL和以@开头的单词,而则不会。
  • 从1.5版本开始,在预处理过程中,HeLI会重复每个不以大写字母开头的单词,这可能是为了惩罚专有名词。然而,在我们的测试中,我们没有发现这种方法有显著的改进。因此,为了避免将预测成本乘以几乎2倍,这种方法尚未实现。将来,如果需要并且可以有效地实现,它可能会被实现。
  • Rust和Java在浮点数的最小小数位上有时会有细微的差异,因此存储的n-gram概率并不完全相同。但这极不可能影响预测标签。

基准测试

使用来自OpenLID的100k随机句子进行速度基准测试,所有工具都运行在单线程模式下

工具 时间(秒)
CLD2 1.12
HeLI-OTS 60.37
lingua全部预加载 56.29
lingua全部未预加载 23.34
fasttext openlid193 8.44
直升机机场 2.33

项目详情


下载文件

下载您平台上的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。

源代码发行版

heliport-0.7.0.tar.gz (53.3 MB 查看哈希值

上传时间: 源代码

构建发行版

heliport-0.7.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (5.0 MB 查看哈希值

上传时间: PyPy manylinux: glibc 2.17+ x86-64

heliport-0.7.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (5.0 MB 查看哈希值

上传时间: PyPy manylinux: glibc 2.17+ x86-64

heliport-0.7.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (5.0 MB 查看哈希值

上传时间: CPython 3.12 manylinux: glibc 2.17+ x86-64

heliport-0.7.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (5.0 MB 查看哈希值

上传时间: CPython 3.11 manylinux: glibc 2.17+ x86-64

heliport-0.7.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (5.0 MB 查看哈希值

上传时间: CPython 3.10 manylinux: glibc 2.17+ x86-64

heliport-0.7.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (5.0 MB 查看哈希值)

上传于 CPython 3.9 manylinux: glibc 2.17+ x86-64

heliport-0.7.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (5.0 MB 查看哈希值)

上传于 CPython 3.8 manylinux: glibc 2.17+ x86-64

支持者:

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误记录 StatusPage StatusPage 状态页面