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. 모들 | 실제 NLP 작업에 따라 일반적으로 사용되는 모델을 캡슐화하여 호출하기 쉽습니다. |
| 모델 | 참조 |
|---|---|
| 버트 | BERT : 언어 이해를위한 깊은 양방향 변압기의 사전 훈련 |
| Ernie1.0 | Ernie : 지식 통합을 통한 향상된 표현 |
| 네자 | Nezha : 중국어 이해를위한 신경 맥락화 된 표현 |
| Roformer | ROFORMER : 로터리 위치 임베딩이있는 향상된 변압기 |
| Ernie-CTM | Ernie-CTM (Ernie for Chinese Text Mining) |
| 모델 | 소개 |
|---|---|
| RNN/CNN/GRU/LSTM | RNN, CNN, GRU, LSTM 등과 같은 고전적인 텍스트 분류 구조. |
| 버트/어니 | 일반적으로 사용되는 미리 훈련 된 모델 분류 |
| 모델 | 소개 |
|---|---|
| 버트/어니 | 일반적으로 사용되는 사전에 사기꾼 일치 분류 |
| 감독되지 않은 SIMCSE | 감독되지 않은 SIMCSE 매칭 알고리즘 |
| COSENT | COSENT : Sentence-Bert보다보다 효율적인 문장 벡터 체계 |
| 모델 | 참조 | 종이 소스 코드 |
|---|---|---|
| CRF BERT | ||
| Biaffine Bert | ||
| 스팬 버트 | ||
| 글로벌 포인터 버트 | GlobalPointer : 중첩되지 않은 NER 및 통일 된 방식으로 처리 | |
| 효율적인 글로벌 포인터 버트 | 효율적인 GlobalPointer : 매개 변수, 더 많은 효과 | |
| W2ner Bert | 통일 된 명명 된 엔티티 인식으로 단어 단어 관계 분류 | github |
| 모델 | 참조 | 종이 소스 코드 |
|---|---|---|
| 캐스릭 | 관계형 트리플 추출을위한 새로운 캐스케이드 이진 태깅 프레임 워크 | github |
| PRGC | PRGC : 잠재적 인 관계 및 글로벌 서신 기반 공동 관계 적 3 배 추출 | github |
| 모델 | 참조 | 종이 소스 코드 |
|---|---|---|
| Prompuie | 보편적 인 정보 추출 UIE (Universal Information Extraction) | github |
| 모델 | 참조 | 종이 소스 코드 |
|---|---|---|
| 프롬프트 | 사전 훈련, 프롬프트 및 예측 : 자연어 처리에서 방법에 대한 체계적인 조사) |
전체 코드는 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 | Jimme | ZREALSHADOW |
이 프로젝트는 일반적으로 사용되는 NLP 모델을 학업 및 작업에서 수집 및 재생산하여 편리한 형태의 통화로 통합하는 데 사용되므로 인터넷의 많은 오픈 소스 구현에 의해 참조됩니다. 부적절한 측면이 있으면 비판과 조언을 위해 저희에게 연락하십시오. 여기, 오픈 소스 구현에 감사드립니다.