Skip to main content

KUAI SU(Quickly use) Python toolkit for Chinese Language Processing.

Project description

knlp

这是一个工具包,主要实现对中文的NLP基础操作,在实现过程中,调研了网络上很多已经开源的工具包,对他们致以深深的感谢。

在coding过程中,参考学习了很多参考pkg中的编码方式,也有直接调用。如果作者感觉到被冒犯,请随时私信联系。

本pkg的主体架构参考了snownlp和textblob,因为个人认为这种实现方式对于调用方来说最方便。

pkg中提供了inference这个方法,主要是调用各种能力进行inference,seg这样的类是实现对应的功能。最后seq_upgrade,这样的pkg中有训练使用的代码,可以用来自己进行训练

最后,这个pkg还提供了很多现成的对各种nlp任务的评估方法以及相应的评估数据集(或者地址),可以供各位NLPer进行学习使用。

和现有的NLP工具包的不同点在于,本pkg提供深度学习相关的功能,并且面向中文开发,且功能很基础,适合于based on这个进行二次改造。

安装方式

pip install knlp

# FROM GITHUB SOURCE CODE
pip install git+https://github.com/DukeEnglish/knlp.git

示例方法

from knlp import Knlp

def test_all():
    with open("knlp/data/pytest_data.txt") as f:
        text = f.read()
    res = Knlp(text)
    print("seg_result is", res.seg_result)
    print("ner_result is", res.ner_result)
    print("sentiment score is", res.sentiment)
    print("key_words are", res.key_words)
    print("key sentences are", res.key_sentences)
    gt_string = '就读 于 中国人民大学 电视 上 的 电影 节目 项目 的 研究 角色 本人 将 会 参与 配音'
    pred_string = '就读 于 中国 人民 大学 电视 上 的 电影 节目 项 目的 研究 角色 本人 将 会 参与 配音'
    print("evaluation res are", res.evaluation_segment(gt_string, pred_string))
    abs_path_to_gold_file = ''
    abs_path_to_pred_file = ''
    gt_file_name = f'{abs_path_to_gold_file}'
    pred_file_name = f'{abs_path_to_pred_file}'
    print("evaluation file res are", res.evaluation_segment_file(gt_file_name, pred_file_name))

其他示例使用方法在samples中。所有的训练数据都在data中有示例数据。

参考并致谢

评估结果

离线评估

Clue榜单评估结果

开发方案

因为这不是一个有强时间节点的工作,所以我并不适合将具体的时间节点写在这里,但是其他的方案我还是应该简单设计一下。

首先,明确一下这个工程的目标,是一个即自私又无私的项目:

  1. 这个项目要能可以集成现在已经有的一些能力,并很方便的调用他们,所以在api的设计上,工程的设计上一定要友好一些,且需要从用户使用的角度来考虑。
  2. 另一方面,我可以借此机会把基础的算法数据结构自己都实现一次,这是一个挺长久的工作。

发布分支:release 最新/个人开发分支:main 其他开发分支:根据情况而定

第一阶段:完成基础的工程架构,通过开源能力将基础的能力具备,且可以pip安装使用 0.1.x

这个版本的核心工作在于工程架构和链路打通,在各个模块可以调用现有的开源能力进行相应的处理和输出,并且符合期望编程规范。

第一个阶段,就不对自己实现具体的算法做要求,主要是调用开源的能力实现,这里考究的是工程架构,以及一些基础的工作。同时我也要把各个模块的评估在这里写好,这样才能评估各个模块的具体的性能如何。

  • test模块
  • 各个能力的调用入口类knlp
  • 序列标注
    • 分词:jieba
      • NER:jieba
      • 分词的评估
      • 分词评估相关的blog:
  • 信息提取:使用网络开源实现进行,进行统一的调用接口封装
  • 输入归一化:适合放在utils里面对输入做统一处理
  • 情感分析:snownlp
  • 相似度计算:snownlp
  • check并小结,需要列出下个大版本的开发节奏和时间节点,要求在3/4双月抽空完成

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

knlp-0.2.0.1.tar.gz (21.3 kB view hashes)

Uploaded Source

Built Distribution

knlp-0.2.0.1-py3-none-any.whl (70.7 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page