日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
通過(guò)PyTorch來(lái)創(chuàng)建一個(gè)文本分類的Bert模型

2018 年,谷歌發(fā)表了一篇題為《Pre-training of deep bidirectional Transformers for Language Understanding》的論文。

積石山保安族東鄉(xiāng)族網(wǎng)站建設(shè)公司創(chuàng)新互聯(lián),積石山保安族東鄉(xiāng)族網(wǎng)站設(shè)計(jì)制作,有大型網(wǎng)站制作公司豐富經(jīng)驗(yàn)。已為積石山保安族東鄉(xiāng)族上1000家提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\成都外貿(mào)網(wǎng)站制作要多少錢,請(qǐng)找那個(gè)售后服務(wù)好的積石山保安族東鄉(xiāng)族做網(wǎng)站的公司定做!

在本文中,介紹了一種稱為BERT(帶轉(zhuǎn)換器Transformers的雙向編碼Encoder 器表示)的語(yǔ)言模型,該模型在問(wèn)答、自然語(yǔ)言推理、分類和通用語(yǔ)言理解評(píng)估或 (GLUE)等任務(wù)中取得了最性能.

BERT全稱為Bidirectional Encoder Representation from Transformers[1],是一種用于語(yǔ)言表征的預(yù)訓(xùn)練模型。

它基于谷歌2017年發(fā)布的Transformer架構(gòu),通常的Transformer使用一組編碼器和解碼器網(wǎng)絡(luò),而B(niǎo)ERT只需要一個(gè)額外的輸出層,對(duì)預(yù)訓(xùn)練進(jìn)行fine-tune,就可以滿足各種任務(wù),根本沒(méi)有必要針對(duì)特定任務(wù)對(duì)模型進(jìn)行修改。

BERT將多個(gè)Transformer編碼器堆疊在一起。Transformer基于著名的多頭注意力(Multi-head Attention)模塊,該模塊在視覺(jué)和語(yǔ)言任務(wù)方面都取得了巨大成功。

在本文中,我們將使用 PyTorch來(lái)創(chuàng)建一個(gè)文本分類的Bert模型。

筆者介今天紹一個(gè)python庫(kù) --- simpletransformers,可以很好的解決高級(jí)預(yù)訓(xùn)練語(yǔ)言模型使用困難的問(wèn)題。

simpletransformers使得高級(jí)預(yù)訓(xùn)練模型(BERT、RoBERTa、XLNet、XLM、DistilBERT、ALBERT、CamemBERT、XLM-RoBERTa、FlauBERT)的訓(xùn)練、評(píng)估和預(yù)測(cè)變得簡(jiǎn)單,每條只需3行即可初始化模型。

數(shù)據(jù)集來(lái)源:https://www.kaggle.com/jrobischon/wikipedia-movie-plots

該數(shù)據(jù)集包含對(duì)來(lái)自世界各地的 34,886 部電影的描述。列描述如下:

  • 發(fā)行年份:電影發(fā)行的年份
  • 標(biāo)題:電影標(biāo)題
  • 起源:電影的起源(即美國(guó)、寶萊塢、泰米爾等)
  • 劇情:主要演員
  • 類型:電影類型
  • 維基頁(yè)面- 從中抓取情節(jié)描述的維基百科頁(yè)面的 URL
  • 情節(jié):電影情節(jié)的長(zhǎng)篇描述
 
 
 
 
  1. import numpy as np
  2. import pandas as pd
  3. import os, json, gc, re, random
  4. from tqdm.notebook import tqdm
  5. import torch, transformers, tokenizers
  6. movies_df = pd.read_csv("wiki_movie_plots_deduped.csv")
  7. from sklearn.preprocessing import LabelEncoder
  8. movies_df = movies_df[(movies_df["Origin/Ethnicity"]=="American") | (movies_df["Origin/Ethnicity"]=="British")]
  9. movies_df = movies_df[["Plot", "Genre"]]
  10. drop_indices = movies_df[movies_df["Genre"] == "unknown" ].index
  11. movies_df.drop(drop_indices, inplace=True)
  12. # Combine genres: 1) "sci-fi" with "science fiction" &  2) "romantic comedy" with "romance"
  13. movies_df["Genre"].replace({"sci-fi": "science fiction", "romantic comedy": "romance"}, inplace=True)
  14. # 根據(jù)頻率選擇電影類型
  15. shortlisted_genres = movies_df["Genre"].value_counts().reset_index(name="count").query("count > 200")["index"].tolist()
  16. movies_df = movies_df[movies_df["Genre"].isin(shortlisted_genres)].reset_index(drop=True)
  17. # Shuffle 
  18. movies_df = movies_df.sample(frac=1).reset_index(drop=True)
  19. #從不同類型中抽取大致相同數(shù)量的電影情節(jié)樣本(以減少階級(jí)不平衡問(wèn)題)
  20. movies_df = movies_df.groupby("Genre").head(400).reset_index(drop=True)
  21. label_encoder = LabelEncoder()
  22. movies_df["genre_encoded"] = label_encoder.fit_transform(movies_df["Genre"].tolist())
  23. movies_df = movies_df[["Plot", "Genre", "genre_encoded"]]
  24. movies_df

使用 torch 加載 BERT 模型,最簡(jiǎn)單的方法是使用 Simple Transformers 庫(kù),以便只需 3 行代碼即可初始化、在給定數(shù)據(jù)集上訓(xùn)練和在給定數(shù)據(jù)集上評(píng)估 Transformer 模型。

 
 
 
 
  1. from simpletransformers.classification import ClassificationModel
  2. # 模型參數(shù)
  3. model_args = {
  4.     "reprocess_input_data": True,
  5.     "overwrite_output_dir": True,
  6.     "save_model_every_epoch": False,
  7.     "save_eval_checkpoints": False,
  8.     "max_seq_length": 512,
  9.     "train_batch_size": 16,
  10.     "num_train_epochs": 4,
  11. }
  12. # Create a ClassificationModel
  13. model = ClassificationModel('bert', 'bert-base-cased', num_labels=len(shortlisted_genres), args=model_args)

訓(xùn)練模型

 
 
 
 
  1. train_df, eval_df = train_test_split(movies_df, test_size=0.2, stratify=movies_df["Genre"], random_state=42)
  2. # Train the model
  3. model.train_model(train_df[["Plot", "genre_encoded"]])
  4. # Evaluate the model
  5. result, model_outputs, wrong_predictions = model.eval_model(eval_df[["Plot", "genre_encoded"]])
  6. print(result)
  7. {'mcc': 0.5299659404649717, 'eval_loss': 1.4970421879083518}
  8. CPU times: user 19min 1s, sys: 4.95 s, total: 19min 6s
  9. Wall time: 20min 14s

關(guān)于simpletransformers的官方文檔:https://simpletransformers.ai/docs

Github鏈接:https://github.com/ThilinaRajapakse/simpletransformers


網(wǎng)站標(biāo)題:通過(guò)PyTorch來(lái)創(chuàng)建一個(gè)文本分類的Bert模型
網(wǎng)頁(yè)網(wǎng)址:http://www.dlmjj.cn/article/cdgiicd.html