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中有示例数据。
参考并致谢
- snownlp
- jieba
- textblob
- https://www.letiantian.me/2014-06-10-pagerank/
评估结果
离线评估
Clue榜单评估结果
开发方案
因为这不是一个有强时间节点的工作,所以我并不适合将具体的时间节点写在这里,但是其他的方案我还是应该简单设计一下。
首先,明确一下这个工程的目标,是一个即自私又无私的项目:
- 这个项目要能可以集成现在已经有的一些能力,并很方便的调用他们,所以在api的设计上,工程的设计上一定要友好一些,且需要从用户使用的角度来考虑。
- 另一方面,我可以借此机会把基础的算法数据结构自己都实现一次,这是一个挺长久的工作。
发布分支:release 最新/个人开发分支:main 其他开发分支:根据情况而定
第一阶段:完成基础的工程架构,通过开源能力将基础的能力具备,且可以pip安装使用 0.1.x
这个版本的核心工作在于工程架构和链路打通,在各个模块可以调用现有的开源能力进行相应的处理和输出,并且符合期望编程规范。
第一个阶段,就不对自己实现具体的算法做要求,主要是调用开源的能力实现,这里考究的是工程架构,以及一些基础的工作。同时我也要把各个模块的评估在这里写好,这样才能评估各个模块的具体的性能如何。
- test模块
- 各个能力的调用入口类knlp
- 序列标注
- 分词:jieba
- NER:jieba
- 分词的评估
- 分词评估相关的blog:
- 分词:jieba
- 信息提取:使用网络开源实现进行,进行统一的调用接口封装
- 输入归一化:适合放在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.