Oven logo

Oven

Published

Rust Extension For Language Technology Platform(Python).

pip install ltp-extension

Package Downloads

Weekly DownloadsMonthly Downloads

Authors

ylfeng

Requires Python

Dependencies

    Languageversion
    PythonLTP LTP-Core LTP-Extension
    RustLTP

    LTP extension For Python

    LTP for Rust 对 Python 的绑定,用于提升 LTP 的速度,以及加入传统机器学习算法实现的中文信息处理工具。

    methodltp 3.0(c++)ap(1)ap(8)papa-i(0.5)pa-ii(0.5)
    cws97.8397.9397.6797.9097.9097.93
    pos98.3598.4198.3098.3998.3998.38
    ner94.1794.2893.4294.0294.0693.95

    自行编译安装

    maturin build --release -m python/extension/Cargo.toml --out dist --no-default-features --features="malloc"
    # or 针对cpu优化
    maturin build --release -m python/extension/Cargo.toml --out dist --no-default-features --features="malloc" -- -C target-cpu=native
    

    features

    • 分句
    • 任务
      • 中文分词(cws)
        • 对数字、英文、网址、邮件的处理
        • 支持自定义词典
      • 词性标注(pos)
        • 支持自定义词典
      • 命名实体识别(ner)
    • 算法
      • 平均感知机(ap)
        • 单线程平均感知机
        • 多线程平均感知机
      • 被动攻击算法(pa)
    • 模型量化
    • 在线学习
    • 增量学习

    性能测试

    评测环境

    • Python 3.10
    • MacBook Pro (16-inch, 2019)
    • 处理器: 2.6 GHz 六核Intel Core i7
    • 内存: 16 GB 2667 MHz DDR4

    注: 速度测试文件大小为 33.85 MB / 305041 行

    分词

    我们选择Jieba、Pkuseg、Thulac等国内代表分词软件与 LTP 做性能比较,根据第二届国际汉语分词测评发布的国际中文分词测评标准,对不同软件进行了速度和准确率测试。

    在第二届国际汉语分词测评中,共有四家单位提供的测试语料(Academia Sinica、 City University 、Peking University(PKU) 、Microsoft Research(MSR)), 在评测提供的资源icwb2-data 中包含了来自这四家单位的训练集(icwb2-data/training)、测试集(icwb2-data/testing), 以及根据各自分词标准而提供的相应测试集的标准答案(icwb2-data/gold).在icwb2-data/scripts目录下含有对分词进行自动评分的perl脚本score。

    我们在统一测试环境下,对若干流行分词软件和 LTP 进行了测试,使用的模型为各分词软件自带模型。在PKU和MSR测试集评测结果如下:

    AlgorithmSpeed(KB/s)PKU(F1)MSR(F1)
    Jieba982.4981.881.3
    Pkuseg109.7293.487.3
    Thulac48.1394.087.9
    Thulac[Fast]1133.21同上同上
    LTP 3(pyltp)451.2095.388.3
    LTP legacy(1)1603.6395.287.7
    LTP legacy(2)2869.42同上同上
    LTP legacy(4)4949.38同上同上
    LTP legacy(8)6803.88同上同上
    LTP legacy(16)7745.16同上同上

    注:括号内为线程数量

    注2:Jieba的词表是在人民日报数据集上统计的

    流水线

    除了分词以外,我们也测试了 LTP 三个任务(分词、词性标注、命名实体识别)流水线的速度:

    AlgorithmSpeed(KB/s)
    LTP 3(pyltp)153.10
    LTP legacy(1)508.74
    LTP legacy(2)899.25
    LTP legacy(4)1598.03
    LTP legacy(8)2267.48
    LTP legacy(16)2452.34

    注:括号内为线程数量

    注2:速度数据在人民日报命名实体测试数据上获得,速度计算方式均为所有任务顺序执行的结果。