Skip to main content

普强内部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的使用
    # Store相当于是S3对象存储的一个Bucket的封装,每个数据类型对应一个Bucket
    from nlp_data import NLUDocStore
    # 查看文档
    NLUDocStore.list()
    # 获取文档
    docs = NLUDocStore.pull('xxx')
    # 推送文档
    NLUDocStore.push(docs=docs, name='xxx')
Doc的使用
    # Doc是nlp-data的一个存储结构,可以用来存储该格式的数据,以及对数据进行一些操作
    # DocList是Doc的集合,可以用来存储多个Doc,相当于一个python List,有几本的append,extend等类方法, 但不同的DocList有特定的方法用来处理# 该数据类型
    # 以NLUDoc为例,该文档里面有domain,slots,intention等字段,可以用来存储NLU的结果
    from nlp_data import NLUDoc, NLUDocList
    # 创建一个NLUDoc
    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')
    # 创建一个NLUDocList,并添加doc
    docs = NLUDocList()
    # 添加自定义tag,用于细分数据
    doc.add_tag("方言", "粤语")
    doc.add_tags({"方言": "粤语", "来源": "abnf"})
    # 删除tag
    doc.pop_tag("方言")
    
    docs.append(doc)
    # 从abnf句式输出文件中批量初始化
    docs = NLUDocList.from_abnf_output(output_dir='your/dir', domain='schedule_cmn')
    # 上传到bucket
    from nlp_data import NLUDocStore
    NLUDocStore.push(docs=docs, name='xxx')
Augmentor的使用
  # Augmentor是nlp-data的一个数据增强工具,可以用来对数据进行增强
  from nlp_data import GPTAugmentor, NLUDocStore, DialogueDocList, DialogueDoc
  # 创建一个Augmentor
  augmentor = GPTAugmentor(api_key='xxx')
  # 广东话或者四川话增强NLUDoc
  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()
  # 列出所有bucket
  s3.list_buckets()
  # 创建bucket
  s3.create_bucket('test')
  # 列出bucket下所有文件
  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')
  # 删除bucket
  s3.delete_bucket('test')
命令行
# 查看帮助
nlp-data --help
# 下载文件,当xxx为一个s3中的文件夹时,会下载该文件夹下所有文件
nlp-data download xxx.xxx --bucket xxx --save_path xxx
# 上传文件, 当xxx为一个文件夹时,会上传该文件夹下所有文件
nlp-data upload xxx --bucket xxx
# 删除文件, 当xxx为一个文件夹时,会删除该文件夹下所有文件
nlp-data delete xxx --bucket xxx
存储LLM会话数据

Dialog类说明和示例代码

多意图测试数据构建
from nlp_data import MultiIntentionDoc,MultiIntentionDocList
# 传入垂类bucket列表,方法内部自动从垂类bucket拉取必过/回归集,以及多意图自有数据.返回列表1[输入1,输入2],列表2[输入1的期望输出列表,输入2的期望输出列表]
multiDataSet = MultiIntentionDocList.genMultiDataset(['tmp-bucket'])
# 输入文本
multiDataSet[0][:3]  # ['帮忙APP分类中搜索爱趣听', '我要喺设置分类中搜索音量', '全部搜索一下bilibili']
# 期望输出
multiDataSet[1][:3]  # [['帮忙APP分类中搜索爱趣听'], ['我要喺设置分类中搜索音量'], ['全部搜索一下bilibili']]

示例

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中

开发说明

  1. 本项目使用poetry进行包管理,请确保已经安装poetry
  2. 本项目使用d-project进行流程管理,请确保已经安装d-project

添加新数据结构

  1. 先在document模块下创建自己的数据结构,需要继承docarray的BaseDoc,和DocList 分别实现自己的XXDoc和XXDocList 以及相关数据支持的功能函数
  2. storage模块下创建自己的DocStore 需要继承 base里面的BaseDocStore 实现pull 和 push 类方法, 并写明bucket_name
  3. 使用S3Storage 根据2中的bucket_name 创建bucket

发布

  1. 修改pyproject.toml中的版本号
  2. 修改project.yml版本号
  3. 执行project run publish

minio

nlp-data使用minio作为存储后端,目前部署在192.168.130.5服务器/home/wangmengdi/work/minio目录下,可以通过以下命令启动

bash run.sh

依赖安装

方言分析工具:

pip install canto-filter==1.0.4

大模型数据增广:

pip install openai==1.58.1

Download files

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

Source Distribution

nlp_data-0.4.9.tar.gz (32.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

nlp_data-0.4.9-py3-none-any.whl (35.6 kB view details)

Uploaded Python 3

File details

Details for the file nlp_data-0.4.9.tar.gz.

File metadata

  • Download URL: nlp_data-0.4.9.tar.gz
  • Upload date:
  • Size: 32.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.8.5 CPython/3.9.21 Darwin/23.1.0

File hashes

Hashes for nlp_data-0.4.9.tar.gz
Algorithm Hash digest
SHA256 b1ff478bb250307509551679665fd1a25dcb19f5a0a704b85527a99052760f44
MD5 a6dcd4b3bbe9cb5359f4961387870a7b
BLAKE2b-256 e31f965cb9022a80ec097072a5b5e09509189c90b49855e929bd9f40c8c23a49

See more details on using hashes here.

File details

Details for the file nlp_data-0.4.9-py3-none-any.whl.

File metadata

  • Download URL: nlp_data-0.4.9-py3-none-any.whl
  • Upload date:
  • Size: 35.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.8.5 CPython/3.9.21 Darwin/23.1.0

File hashes

Hashes for nlp_data-0.4.9-py3-none-any.whl
Algorithm Hash digest
SHA256 b5a2f8001606155b36dad9c28bade356db706449a21005b756f0a5efd052921e
MD5 5905a0f208db95f30fcf315a14d70ec9
BLAKE2b-256 f427ebefa5c5a0dc05dd9067f42a45708fbca1d29da3ee30262bd821a36b8021

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

0.4.9 This release

2 files

0.4.3

2 files

0.4.0

2 files

0.3.91

2 files

0.3.8

2 files

0.3.7

2 files

0.3.6

2 files

0.3.5

2 files

0.3.4

2 files

0.3.3

2 files

0.3.2

2 files

0.3.1

2 files

0.3.0

2 files

0.2.9

2 files

0.2.8

2 files

0.2.7

2 files

0.2.6

2 files

0.2.5

2 files

0.2.4

2 files

0.2.3

2 files

0.2.2

2 files

0.2.1

2 files

0.2.0

2 files

0.1.32

2 files

0.1.31

2 files

0.1.30

2 files

0.1.29

2 files

0.1.28

2 files

0.1.27

2 files

0.1.26

2 files

0.1.25

2 files

0.1.24

2 files

0.1.23

2 files

0.1.22

2 files

0.1.21

2 files

0.1.20

2 files

0.1.19

2 files

0.1.18

2 files

0.1.17

2 files

0.1.16

2 files

0.1.15

2 files

0.1.14

2 files

0.1.13

2 files

0.1.12

2 files

0.1.11

2 files

0.1.10

2 files

0.1.9

2 files

0.1.8

2 files

0.1.7

2 files

0.1.6

2 files

0.1.5

2 files

0.1.4

2 files

0.1.3

2 files

0.1.2

2 files

0.1.1

2 files

0.1.0

2 files

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page