ark nlp
V0.0.9
ARK-NLP recueille et reproduit principalement les modèles de PNL couramment utilisés dans les académiques et le travail.
pip install --upgrade ark-nlp
| ark_nlp | Bibliothèque de traitement du langage naturel open source |
| ark_nlp.dataset | Encapsuler des fonctions telles que le chargement, le traitement et la conversion des données |
| ark_nlp.nn | Encapsuler certains modèles de réseau neuronal complet |
| ark_nlp.processor | Segmentation des mots encapsulés, dictionnaire et composition, etc. |
| ark_nlp.factory | Encapsulation des fonctions de perte, des optimisateurs, des fonctions de formation et de prédiction |
| ark_nlp.model | Encapsulez les modèles couramment utilisés en fonction des tâches NLP réelles, ce qui facilite l'appel |
| Modèle | Références |
|---|---|
| Bert | Bert: pré-formation des transformateurs bidirectionnels profonds pour la compréhension du langage |
| Ernie1.0 | Ernie: Représentation améliorée par l'intégration des connaissances |
| Nezha | Nezha: représentation contextualisée neurale de la compréhension de la langue chinoise |
| Roformer | Roformer: transformateur amélioré avec une position rotative incorporation |
| Ernie-CTM | Ernie-CTM (Ernie pour l'exploitation de texte chinois) |
| Modèle | Introduction |
|---|---|
| RNN / CNN / GRU / LSTM | Structures classiques de classification du texte telles que RNN, CNN, GRU, LSTM, etc. |
| Bert / Ernie | Classification du modèle pré-formé couramment |
| Modèle | Introduction |
|---|---|
| Bert / Ernie | Classification de correspondance de modèle pré-entraînée couramment utilisée |
| Non supervisésimcse | Algorithme de correspondance SIMCSE non supervisé |
| Cosenti | COSENT: Un système de vecteur de phrase plus efficace que la phrase-BERT |
| Modèle | Références | Code source de papier |
|---|---|---|
| CRF Bert | ||
| Biaffine Bert | ||
| Span Bert | ||
| Pointeur global bert | GlobalPointer: gérer le NER imbriqué et non passé de manière unifiée | |
| Pointeur global efficace Bert | GlobalPointer efficace: moins de paramètres, plus d'effets | |
| W2ner Bert | La reconnaissance unifiée des entités nommées comme classification des relations de mot-mot | github |
| Modèle | Références | Code source de papier |
|---|---|---|
| Casrel | Un nouveau cadre de marquage binaire en cascade pour une triple extraction relationnelle | github |
| PRGC | PRGC: Relation potentielle et triple relationnel de la correspondance globale basée sur la correspondance | github |
| Modèle | Références | Code source de papier |
|---|---|---|
| Invite | Extraction universelle de l'information Uie (extraction universelle de l'information) | github |
| Modèle | Références | Code source de papier |
|---|---|---|
| Insistage | Pré-Train, invite et prédire: une étude systématique des méthodes d'incitation dans le traitement du langage naturel) |
Pour le code complet, veuillez consulter le dossier test .
Classification de texte
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 (待预测文本)Correspondance de texte
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 ])Entité nommée
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 (待抽取文本)Extraction de la relation 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 (待抽取文本)Extraction de la relation 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 (待抽取文本)
xianging | Jimme | Zrealshadow |
Ce projet est utilisé pour collecter et reproduire les modèles de PNL couramment utilisés dans les académiques et les travaux, et les intégrer dans une forme de appel pratique, il est donc référencé par de nombreuses implémentations open source sur Internet. S'il y a des aspects inappropriés, veuillez nous contacter pour les critiques et les conseils. Ici, merci pour votre implémentation open source.