ark nlp
V0.0.9
ARK-NLP ส่วนใหญ่รวบรวมและทำซ้ำโมเดล NLP ที่ใช้กันทั่วไปในเชิงวิชาการและการทำงาน
pip install --upgrade ark-nlp
| ark_nlp | ห้องสมุดการประมวลผลภาษาธรรมชาติโอเพ่นซอร์ส |
| ark_nlp.dataset | ฟังก์ชั่นการห่อหุ้มเช่นการโหลดการประมวลผลและการแปลงข้อมูล |
| ark_nlp.nn | ห่อหุ้มโมเดลเครือข่ายประสาทที่สมบูรณ์บางรุ่น |
| ark_nlp.processor | การแบ่งส่วนคำที่ห่อหุ้มพจนานุกรมและองค์ประกอบ ฯลฯ |
| ark_nlp.factory | การห่อหุ้มของฟังก์ชั่นการสูญเสียตัวเพิ่มประสิทธิภาพฟังก์ชั่นการฝึกอบรมและการทำนาย |
| ark_nlp.model | ห่อหุ้มโมเดลที่ใช้กันทั่วไปตามงาน NLP จริงทำให้ง่ายต่อการโทร |
| แบบอย่าง | การอ้างอิง |
|---|---|
| เบิร์ต | เบิร์ต: การฝึกอบรมหม้อแปลงสองทิศทางลึกเพื่อความเข้าใจภาษา |
| ernie1.0 | เออร์นี่: การเป็นตัวแทนที่ได้รับการปรับปรุงผ่านการบูรณาการความรู้ |
| เนยแข็ง | Nezha: การเป็นตัวแทนบริบทของระบบประสาทสำหรับการทำความเข้าใจภาษาจีน |
| คนเดินเล่น | Roformer: หม้อแปลงที่ปรับปรุงด้วยการฝังตำแหน่งแบบหมุน |
| Ernie-CTM | Ernie-CTM (Ernie สำหรับการขุดข้อความภาษาจีน) |
| แบบอย่าง | การแนะนำ |
|---|---|
| rnn/cnn/gru/lstm | โครงสร้างการจำแนกประเภทข้อความคลาสสิกเช่น RNN, CNN, GRU, LSTM ฯลฯ |
| เบิร์ต/เออร์นี่ | การจำแนกประเภทแบบจำลองที่ผ่านการฝึกอบรมมาก่อน |
| แบบอย่าง | การแนะนำ |
|---|---|
| เบิร์ต/เออร์นี่ | การจำแนกการจับคู่แบบจำลองก่อนหน้านี้ใช้กันทั่วไป |
| unsupervisedsimcse | อัลกอริทึมการจับคู่ Simcse ที่ไม่ได้รับการดูแล |
| เกี่ยวกับความเป็นไปได้ | Cosent: โครงการเวกเตอร์ประโยคที่มีประสิทธิภาพมากกว่าประโยค-เบิร์ต |
| แบบอย่าง | การอ้างอิง | ซอร์สโค้ดกระดาษ |
|---|---|---|
| CRF Bert | ||
| Biaffine Bert | ||
| Span Bert | ||
| Global Pointer Bert | GlobalPointer: จัดการ NER ที่ซ้อนกันและไม่ได้รับการตรวจสอบด้วยวิธีที่เป็นเอกภาพ | |
| เบิร์ตตัวชี้ระดับโลกที่มีประสิทธิภาพ | GlobalPointer ที่มีประสิทธิภาพ: พารามิเตอร์น้อยลงเอฟเฟกต์มากขึ้น | |
| w2ner bert | การจดจำเอนทิตีที่มีชื่อเป็นเอกภาพเป็นการจำแนกความสัมพันธ์คำด้วยคำ | คนอื่น ๆ |
| แบบอย่าง | การอ้างอิง | ซอร์สโค้ดกระดาษ |
|---|---|---|
| คฤหาสน์ | กรอบการติดแท็กแบบคาสเคดแบบใหม่สำหรับการสกัดสามเท่าเชิงสัมพันธ์ | คนอื่น ๆ |
| PRGC | PRGC: ความสัมพันธ์ที่มีศักยภาพและการสกัดเชิงสัมพันธ์ร่วมกันทั่วโลก | คนอื่น ๆ |
| แบบอย่าง | การอ้างอิง | ซอร์สโค้ดกระดาษ |
|---|---|---|
| พรั่งพรู | การสกัดข้อมูลสากล UIE (การสกัดข้อมูลสากล) | คนอื่น ๆ |
| แบบอย่าง | การอ้างอิง | ซอร์สโค้ดกระดาษ |
|---|---|---|
| พรอมต์เบิร์ต | pre-train, promp และทำนาย: การสำรวจอย่างเป็นระบบของวิธีการแจ้งเตือนในการประมวลผลภาษาธรรมชาติ) |
สำหรับรหัสที่สมบูรณ์โปรดดูที่โฟลเดอร์ test
การจำแนกข้อความ
import torch
import pandas as pd
from ark_nlp . model . tc . bert import Bert
from ark_nlp . model . tc . bert import BertConfig
from ark_nlp . model . tc . bert import Dataset
from ark_nlp . model . tc . bert import Task
from ark_nlp . model . tc . bert import get_default_model_optimizer
from ark_nlp . model . tc . bert import Tokenizer
# 加载数据集
# train_data_df的columns必选包含"text"和"label"
# text列为文本,label列为分类标签
tc_train_dataset = Dataset ( train_data_df )
tc_dev_dataset = Dataset ( dev_data_df )
# 加载分词器
tokenizer = Tokenizer ( vocab = 'nghuyong/ernie-1.0' , max_seq_len = 30 )
# 文本切分、ID化
tc_train_dataset . convert_to_ids ( tokenizer )
tc_dev_dataset . convert_to_ids ( tokenizer )
# 加载预训练模型
config = BertConfig . from_pretrained ( 'nghuyong/ernie-1.0' ,
num_labels = len ( tc_train_dataset . cat2id ))
dl_module = Bert . from_pretrained ( 'nghuyong/ernie-1.0' ,
config = config )
# 任务构建
num_epoches = 10
batch_size = 32
optimizer = get_default_model_optimizer ( dl_module )
model = Task ( dl_module , optimizer , 'ce' , cuda_device = 0 )
# 训练
model . fit ( tc_train_dataset ,
tc_dev_dataset ,
lr = 2e-5 ,
epochs = 5 ,
batch_size = batch_size
)
# 推断
from ark_nlp . model . tc . bert import Predictor
tc_predictor_instance = Predictor ( model . module , tokenizer , tc_train_dataset . cat2id )
tc_predictor_instance . predict_one_sample (待预测文本)การจับคู่ข้อความ
import torch
import pandas as pd
from ark_nlp . model . tm . bert import Bert
from ark_nlp . model . tm . bert import BertConfig
from ark_nlp . model . tm . bert import Dataset
from ark_nlp . model . tm . bert import Task
from ark_nlp . model . tm . bert import get_default_model_optimizer
from ark_nlp . model . tm . bert import Tokenizer
# 加载数据集
# train_data_df的columns必选包含"text_a"、"text_b"和"label"
# text_a和text_b列为文本,label列为匹配标签
tm_train_dataset = Dataset ( train_data_df )
tm_dev_dataset = Dataset ( dev_data_df )
# 加载分词器
tokenizer = Tokenizer ( vocab = 'nghuyong/ernie-1.0' , max_seq_len = 30 )
# 文本切分、ID化
tm_train_dataset . convert_to_ids ( tokenizer )
tm_dev_dataset . convert_to_ids ( tokenizer )
# 加载预训练模型
config = BertConfig . from_pretrained ( 'nghuyong/ernie-1.0' ,
num_labels = len ( tm_train_dataset . cat2id ))
dl_module = Bert . from_pretrained ( 'nghuyong/ernie-1.0' ,
config = config )
# 任务构建
num_epoches = 10
batch_size = 32
optimizer = get_default_model_optimizer ( dl_module )
model = Task ( dl_module , optimizer , 'ce' , cuda_device = 0 )
# 训练
model . fit ( tm_train_dataset ,
tm_dev_dataset ,
lr = 2e-5 ,
epochs = 5 ,
batch_size = batch_size
)
# 推断
from ark_nlp . model . tm . bert import Predictor
tm_predictor_instance = Predictor ( model . module , tokenizer , tm_train_dataset . cat2id )
tm_predictor_instance . predict_one_sample ([待预测文本A , 待预测文本B ])เอนทิตีชื่อ
import torch
import pandas as pd
from ark_nlp . model . ner . crf_bert import CRFBert
from ark_nlp . model . ner . crf_bert import CRFBertConfig
from ark_nlp . model . ner . crf_bert import Dataset
from ark_nlp . model . ner . crf_bert import Task
from ark_nlp . model . ner . crf_bert import get_default_model_optimizer
from ark_nlp . model . ner . crf_bert import Tokenizer
# 加载数据集
# train_data_df的columns必选包含"text"和"label"
# text列为文本
# label列为列表形式,列表中每个元素是如下组织的字典
# {'start_idx': 实体首字符在文本的位置, 'end_idx': 实体尾字符在文本的位置, 'type': 实体类型标签, 'entity': 实体}
ner_train_dataset = Dataset ( train_data_df )
ner_dev_dataset = Dataset ( dev_data_df )
# 加载分词器
tokenizer = Tokenizer ( vocab = 'nghuyong/ernie-1.0' , max_seq_len = 30 )
# 文本切分、ID化
ner_train_dataset . convert_to_ids ( tokenizer )
ner_dev_dataset . convert_to_ids ( tokenizer )
# 加载预训练模型
config = CRFBertConfig . from_pretrained ( 'nghuyong/ernie-1.0' ,
num_labels = len ( ner_train_dataset . cat2id ))
dl_module = CRFBert . from_pretrained ( 'nghuyong/ernie-1.0' ,
config = config )
# 任务构建
num_epoches = 10
batch_size = 32
optimizer = get_default_model_optimizer ( dl_module )
model = Task ( dl_module , optimizer , 'ce' , cuda_device = 0 )
# 训练
model . fit ( ner_train_dataset ,
ner_dev_dataset ,
lr = 2e-5 ,
epochs = 5 ,
batch_size = batch_size
)
# 推断
from ark_nlp . model . ner . crf_bert import Predictor
ner_predictor_instance = Predictor ( model . module , tokenizer , ner_train_dataset . cat2id )
ner_predictor_instance . predict_one_sample (待抽取文本)การสกัดความสัมพันธ์ของ Casrel
import torch
import pandas as pd
from ark_nlp . model . re . casrel_bert import CasRelBert
from ark_nlp . model . re . casrel_bert import CasRelBertConfig
from ark_nlp . model . re . casrel_bert import Dataset
from ark_nlp . model . re . casrel_bert import Task
from ark_nlp . model . re . casrel_bert import get_default_model_optimizer
from ark_nlp . model . re . casrel_bert import Tokenizer
from ark_nlp . factory . loss_function import CasrelLoss
# 加载数据集
# train_data_df的columns必选包含"text"和"label"
# text列为文本
# label列为列表形式,列表中每个元素是如下组织的字典
# [头实体, 头实体首字符在文本的位置, 头实体尾字符在文本的位置, 关系类型, 尾实体, 尾实体首字符在文本的位置, 尾实体尾字符在文本的位置]
re_train_dataset = Dataset ( train_data_df )
re_dev_dataset = Dataset ( dev_data_df ,
categories = re_train_dataset . categories ,
is_train = False )
# 加载分词器
tokenizer = Tokenizer ( vocab = 'nghuyong/ernie-1.0' , max_seq_len = 100 )
# 文本切分、ID化
# 注意:casrel的代码这部分其实并没有进行切分、ID化,仅是将分词器赋予dataset对象
re_train_dataset . convert_to_ids ( tokenizer )
re_dev_dataset . convert_to_ids ( tokenizer )
# 加载预训练模型
config = CasRelBertConfig . from_pretrained ( 'nghuyong/ernie-1.0' ,
num_labels = len ( re_train_dataset . cat2id ))
dl_module = CasRelBert . from_pretrained ( 'nghuyong/ernie-1.0' ,
config = config )
# 任务构建
num_epoches = 40
batch_size = 16
optimizer = get_default_model_optimizer ( dl_module )
model = Task ( dl_module , optimizer , CasrelLoss (), cuda_device = 0 )
# 训练
model . fit ( re_train_dataset ,
re_dev_dataset ,
lr = 2e-5 ,
epochs = 5 ,
batch_size = batch_size
)
# 推断
from ark_nlp . model . re . casrel_bert import Predictor
casrel_re_predictor_instance = Predictor ( model . module , tokenizer , re_train_dataset . cat2id )
casrel_re_predictor_instance . predict_one_sample (待抽取文本)การสกัดความสัมพันธ์ PRGC
import torch
import pandas as pd
from ark_nlp . model . re . prgc_bert import PRGCBert
from ark_nlp . model . re . prgc_bert import PRGCBertConfig
from ark_nlp . model . re . prgc_bert import Dataset
from ark_nlp . model . re . prgc_bert import Task
from ark_nlp . model . re . prgc_bert import get_default_model_optimizer
from ark_nlp . model . re . prgc_bert import Tokenizer
# 加载数据集
# train_data_df的columns必选包含"text"和"label"
# text列为文本
# label列为列表形式,列表中每个元素是如下组织的字典
# [头实体, 头实体首字符在文本的位置, 头实体尾字符在文本的位置, 关系类型, 尾实体, 尾实体首字符在文本的位置, 尾实体尾字符在文本的位置]
re_train_dataset = Dataset ( train_df , is_retain_dataset = True )
re_dev_dataset = Dataset ( dev_df ,
categories = re_train_dataset . categories ,
is_train = False )
# 加载分词器
tokenizer = Tokenizer ( vocab = 'nghuyong/ernie-1.0' , max_seq_len = 100 )
# 文本切分、ID化
re_train_dataset . convert_to_ids ( tokenizer )
re_dev_dataset . convert_to_ids ( tokenizer )
# 加载预训练模型
config = PRGCBertConfig . from_pretrained ( 'nghuyong/ernie-1.0' ,
num_labels = len ( re_train_dataset . cat2id ))
dl_module = PRGCBert . from_pretrained ( 'nghuyong/ernie-1.0' ,
config = config )
# 任务构建
num_epoches = 40
batch_size = 16
optimizer = get_default_model_optimizer ( dl_module )
model = Task ( dl_module , optimizer , None , cuda_device = 0 )
# 训练
model . fit ( re_train_dataset ,
re_dev_dataset ,
lr = 2e-5 ,
epochs = 5 ,
batch_size = batch_size
)
# 推断
from ark_nlp . model . re . prgc_bert import Predictor
prgc_re_predictor_instance = Predictor ( model . module , tokenizer , re_train_dataset . cat2id )
prgc_re_predictor_instance . predict_one_sample (待抽取文本)
Xiangking | จิมม์ | zrealshadow |
โครงการนี้ใช้ในการรวบรวมและทำซ้ำโมเดล NLP ที่ใช้กันทั่วไปในด้านวิชาการและการทำงานและรวมเข้ากับรูปแบบการโทรที่สะดวกดังนั้นจึงมีการอ้างอิงโดยการใช้งานโอเพนซอร์สจำนวนมากบนอินเทอร์เน็ต หากมีแง่มุมที่ไม่เหมาะสมโปรดติดต่อเราสำหรับการวิจารณ์และคำแนะนำ ที่นี่ขอขอบคุณพวกคุณสำหรับการใช้งานโอเพนซอร์สของคุณ