普强内部NLP数据存储分享工具
安装
pypi安装
pip install nlp-data
pip install nlp-data[all]
普强源安装
pip install nlp-data --upgrade -i http://192.168.130.5:5002/simple/ --trusted-host 192.168.130.5 --extra-index-url https://mirrors.aliyun.com/pypi/simple
使用
Store的使用
from nlp_data import NLUDocStore
NLUDocStore.list()
docs = NLUDocStore.pull('xxx')
NLUDocStore.push(docs=docs, name='xxx')
Doc的使用
from nlp_data import NLUDoc, NLUDocList
doc = NLUDoc(text='添加明天上午跟张三开会的提醒')
doc.set_domain('schedule_cmn')
doc.set_intention('add_schedule')
doc.set_slot(text='明天上午', label='date')
doc.set_slot(text='跟张三开会', label='title')
doc.set_prior_entity(text='张三', label='name')
docs = NLUDocList()
docs.append(doc)
docs = NLUDocList.from_abnf_output(output_dir='your/dir', domain='schedule_cmn')
from nlp_data import NLUDocStore
NLUDocStore.push(docs=docs, name='xxx')
Augmentor的使用
from nlp_data import GPTAugmentor, NLUDocStore, DialogueDocList, DialogueDoc
augmentor = GPTAugmentor(api_key='xxx')
docs = NLUDocStore.pull('xxx')
aug_docs = augmentor.augment_nlu_by_localism(docs, '广东话')
dialogue_docs = augmentor.generate_dialogue_docs(theme='添加日程', situation='用户正在驾驶车辆与车机系统丰田进行语音交互')
dialogue_docs = DialogueDocList()
dialogue_docs.quick_add(theme='添加日程', situation='用户正在驾驶车辆与车机系统丰田进行交互', conversation=['你好,丰田', '在呢,有什么可以帮助你的', '我要添加一个明天上午跟张三开会的日程', '好的已为您添加成功'])
aug_dialogue_docs = augmentor.augment_dialogue(dialogue_docs)
S3的使用
s3是基础的S3对象存储的封装,可以用来创建bucket,上传下载文件等
s3 = S3Storage()
s3.list_buckets()
s3.create_bucket('test')
s3.list_files('test')
s3.upload_file(file_path='./test.txt', bucket_name='test')
s3.download_file(object_name='./test.txt', bucket_name='test')
s3.delete_file(bucket_name='test', file_name='test.txt')
s3.upload_dir(bucket_name='test', dir='./tests')
s3.download_dir(bucket_name='test', object_name='./tests', save_dir='./')
s3.delete_dir(bucket_name='test', dir_name='tests')
s3.delete_bucket('test')
命令行
nlp-data --help
nlp-data download xxx.xxx --bucket xxx --save_path xxx
nlp-data upload xxx --bucket xxx
nlp-data delete xxx --bucket xxx
存储LLM会话数据
Dialog类说明和示例代码
示例
examples文件夹下有一些示例代码,可以参考,下面是翻译中文nlu文档然后保存英文nlu的示例
python examples/translate_nlu.py --api_key xxx --doc_name schedule/train --save_name schedule/train --num_samples 5000
上述代码将nlu bucket里面的schedule/train文档翻译成英文,nlu-en bucket中
开发说明
- 本项目使用poetry进行包管理,请确保已经安装poetry
- 本项目使用d-project进行流程管理,请确保已经安装d-project
添加新数据结构
- 先在document模块下创建自己的数据结构,需要继承docarray的BaseDoc,和DocList 分别实现自己的XXDoc和XXDocList 以及相关数据支持的功能函数
- storage模块下创建自己的DocStore 需要继承 base里面的BaseDocStore 实现pull 和 push 类方法, 并写明bucket_name
- 使用S3Storage 根据2中的bucket_name 创建bucket
发布
- 修改pyproject.toml中的版本号
- 修改project.yml版本号
- 执行
project run publish