国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

自然語言文本分類模型代碼

這篇具有很好參考價值的文章主要介紹了自然語言文本分類模型代碼。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

????????以下是一個基于PyTorch的文本分類模型的示例代碼,用于將給定的文本分為多個預(yù)定義類別:

import torch
import torch.nn as nn
import torch.nn.functional as F

class TextClassifier(nn.Module):
    def __init__(self, vocab_size, embedding_dim, hidden_dim, output_dim, num_layers, bidirectional, dropout):
        super().__init__()
        
        self.embedding = nn.Embedding(vocab_size, embedding_dim)
        self.rnn = nn.LSTM(embedding_dim, hidden_dim, num_layers=num_layers, bidirectional=bidirectional, dropout=dropout)
        self.fc = nn.Linear(hidden_dim * 2 if bidirectional else hidden_dim, output_dim)
        self.dropout = nn.Dropout(dropout)
        
    def forward(self, text, text_lengths):
        embedded = self.dropout(self.embedding(text))
        packed_embedded = nn.utils.rnn.pack_padded_sequence(embedded, text_lengths.to('cpu'), enforce_sorted=False)
        packed_output, (hidden, cell) = self.rnn(packed_embedded)
        output, output_lengths = nn.utils.rnn.pad_packed_sequence(packed_output)
        hidden = self.dropout(torch.cat((hidden[-2,:,:], hidden[-1,:,:]), dim=1) if self.rnn.bidirectional else hidden[-1,:,:])
        return self.fc(hidden.squeeze(0))

????????該模型將輸入的文本作為整數(shù)序列傳遞給嵌入層,然后通過多層LSTM層進行處理,最終輸出每個類別的預(yù)測概率。

????????在訓(xùn)練模型之前,需要將文本序列轉(zhuǎn)換為整數(shù)標(biāo)記,通常使用分詞器/標(biāo)記器完成此任務(wù)。另外還需要定義優(yōu)化器和損失函數(shù)來訓(xùn)練模型。

????????以下是一個完整的訓(xùn)練腳本的示例:

import torch.optim as optim
from torchtext.datasets import AG_NEWS
from torchtext.data.utils import get_tokenizer
from torchtext.vocab import build_vocab_from_iterator
from torch.utils.data import DataLoader
from torchtext.data.utils import ngrams_iterator
from torchtext.data.utils import get_tokenizer
from torch.utils.data.dataset import random_split
from collections import Counter

# 獲取數(shù)據(jù)集和分詞器
train_iter = AG_NEWS(split='train')
tokenizer = get_tokenizer('basic_english')

# 構(gòu)建詞匯表
counter = Counter()
for (label, line) in train_iter:
    counter.update(tokenizer(line))
vocab = build_vocab_from_iterator([counter])
vocab.set_default_index(vocab['<unk>'])

# 定義標(biāo)記化函數(shù)和文本處理函數(shù)
def yield_tokens(data_iter):
    for _, text in data_iter:
        yield tokenizer(text)
        
def text_transform(tokenizer, vocab, data):
    """將文本數(shù)據(jù)轉(zhuǎn)換為張量數(shù)據(jù)"""
    data = [vocab[token] for token in tokenizer(data)]
    return torch.tensor(data)
    
# 定義批次生成器
def collate_batch(batch):
    label_list, text_list, offsets = [], [], [0]
    for (_label, _text) in batch:
        label_list.append(_label-1)
        processed_text = torch.cat([text_transform(tokenizer, vocab, _text), torch.tensor([vocab['<eos>']])])
        text_list.append(processed_text)
        offsets.append(processed_text.size(0))
    label_list = torch.tensor(label_list)
    offsets = torch.tensor(offsets[:-1]).cumsum(dim=0)
    text_list = torch.cat(text_list)
    return label_list, text_list, offsets

# 構(gòu)建數(shù)據(jù)集和數(shù)據(jù)加載器
train_iter, test_iter = AG_NEWS()
train_iter = list(train_iter)
test_iter = list(test_iter)
train_dataset = list(map(lambda x: (x[0], x[1]), train_iter))
test_dataset = list(map(lambda x: (x[0], x[1]), test_iter))
train_loader = DataLoader(train_dataset, batch_size=64, shuffle=True, collate_fn=collate_batch)
test_loader = DataLoader(test_dataset, batch_size=64, shuffle=True, collate_fn=collate_batch)

# 創(chuàng)建模型和優(yōu)化器
model = TextClassifier(len(vocab), 64, 128, 4, 2, True, 0.5)
optimizer = optim.Adam(model.parameters())

# 定義損失函數(shù)和訓(xùn)練函數(shù)
criterion = nn.CrossEntropyLoss()

def train(model, iterator, optimizer, criterion):
    epoch_loss = 0
    model.train()
    for (label, text, offsets) in iterator:
        optimizer.zero_grad()
        predictions = model(text, offsets)
        loss = criterion(predictions, label)
        loss.backward()
        optimizer.step()
        epoch_loss += loss.item()
    return epoch_loss / len(iterator)

# 訓(xùn)練模型
N_EPOCHS = 10
for epoch in range(N_EPOCHS):
    train_loss = train(model, train_loader, optimizer, criterion)
    print(f'Epoch: {epoch+1:02} | Train Loss: {train_loss:.3f}')

????????在訓(xùn)練過程結(jié)束后,可以使用該模型對新的文本進行分類。具體方法是將文本轉(zhuǎn)換為整數(shù)標(biāo)記序列,然后使用模型進行預(yù)測:

# 對新文本進行分類
def predict(model, sentence):
    model.eval()
    tokenized = torch.tensor([vocab[token] for token in tokenizer(sentence)])
    length = torch.tensor([len(tokenized)])
    prediction = model(tokenized, length)
    return F.softmax(prediction, dim=1).detach().numpy()[0]

# 進行預(yù)測
test_sentence = "World markets are reacting to the news that the UK is set to leave the European Union."
pred_probs = predict(model, test_sentence)
print(pred_probs)

????????以上代碼示例中使用了AG_NEWS數(shù)據(jù)集作為示例訓(xùn)練數(shù)據(jù),可通過以下方式加載數(shù)據(jù)集:

from torchtext.datasets import AG_NEWS
train_iter = AG_NEWS(split='train')
test_iter = AG_NEWS(split='test')

????????該數(shù)據(jù)集包含四個類別的新聞數(shù)據(jù),每個類別各有120,000個訓(xùn)練示例和7,600個測試示例。完整的訓(xùn)練腳本和數(shù)據(jù)集可以在PyTorch官方文檔中找到。文章來源地址http://www.zghlxwxcb.cn/news/detail-626492.html

到了這里,關(guān)于自然語言文本分類模型代碼的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 自然語言處理3——玩轉(zhuǎn)文本分類 - Python NLP高級應(yīng)用

    自然語言處理3——玩轉(zhuǎn)文本分類 - Python NLP高級應(yīng)用

    隨著信息時代的不斷發(fā)展,海量的文本數(shù)據(jù)成為我們獲取知識和信息的重要來源。如何高效地從這些文本中提取有用的信息,成為數(shù)據(jù)分析和數(shù)據(jù)挖掘領(lǐng)域的熱門問題之一。本文將介紹文本分類在自然語言處理(NLP)中的高級應(yīng)用,通過Python實現(xiàn),讓你輕松玩轉(zhuǎn)文本分類。

    2024年02月03日
    瀏覽(43)
  • 自然語言處理實戰(zhàn)9-大語言模型的訓(xùn)練與文本生成過程

    大家好,我是微學(xué)AI,今天給大家介紹一下自然語言處理實戰(zhàn)項目9-大語言模型的訓(xùn)練與文本生成過程,詳細(xì)步驟介紹。大語言模型的訓(xùn)練是通過深度學(xué)習(xí)技術(shù)實現(xiàn)的。首先,需要準(zhǔn)備一個龐大的文本數(shù)據(jù)集作為訓(xùn)練樣本,這些文本可以是網(wǎng)頁、書籍、新聞等大量的非結(jié)構(gòu)化文

    2024年02月07日
    瀏覽(29)
  • 【自然語言處理(NLP)】基于ERNIE語言模型的文本語義匹配

    【自然語言處理(NLP)】基于ERNIE語言模型的文本語義匹配

    作者簡介 :在校大學(xué)生一枚,華為云享專家,阿里云專家博主,騰云先鋒(TDP)成員,云曦智劃項目總負(fù)責(zé)人,全國高等學(xué)校計算機教學(xué)與產(chǎn)業(yè)實踐資源建設(shè)專家委員會(TIPCC)志愿者,以及編程愛好者,期待和大家一起學(xué)習(xí),一起進步~ . 博客主頁 : ぃ靈彧が的學(xué)習(xí)日志

    2024年02月10日
    瀏覽(29)
  • 自然語言處理從入門到應(yīng)用——LangChain:模型(Models)-[文本嵌入模型Ⅰ]

    分類目錄:《大模型從入門到應(yīng)用》總目錄 LangChain系列文章: 基礎(chǔ)知識 快速入門 安裝與環(huán)境配置 鏈(Chains)、代理(Agent:)和記憶(Memory) 快速開發(fā)聊天模型 模型(Models) 基礎(chǔ)知識 大型語言模型(LLMs) 基礎(chǔ)知識 LLM的異步API、自定義LLM包裝器、虛假LLM和人類輸入LLM(

    2024年02月15日
    瀏覽(53)
  • 自然語言處理從入門到應(yīng)用——LangChain:模型(Models)-[文本嵌入模型Ⅱ]

    分類目錄:《大模型從入門到應(yīng)用》總目錄 LangChain系列文章: 基礎(chǔ)知識 快速入門 安裝與環(huán)境配置 鏈(Chains)、代理(Agent:)和記憶(Memory) 快速開發(fā)聊天模型 模型(Models) 基礎(chǔ)知識 大型語言模型(LLMs) 基礎(chǔ)知識 LLM的異步API、自定義LLM包裝器、虛假LLM和人類輸入LLM(

    2024年02月15日
    瀏覽(125)
  • 7個頂級開源數(shù)據(jù)集來訓(xùn)練自然語言處理(NLP)和文本模型

    7個頂級開源數(shù)據(jù)集來訓(xùn)練自然語言處理(NLP)和文本模型

    推薦:使用 NSDT場景編輯器快速助你搭建可二次編輯的3D應(yīng)用場景 NLP現(xiàn)在是一個令人興奮的領(lǐng)域,特別是在像AutoNLP這樣的用例中,但很難掌握。開始使用NLP的主要問題是缺乏適當(dāng)?shù)闹笇?dǎo)和該領(lǐng)域的過度廣度。很容易迷失在各種論文和代碼中,試圖吸收所有內(nèi)容。 要意識到的是

    2024年02月13日
    瀏覽(25)
  • 【自然語言處理】【大模型】ChatGLM-6B模型結(jié)構(gòu)代碼解析(單機版)

    【自然語言處理】【大模型】ChatGLM-6B模型結(jié)構(gòu)代碼解析(單機版)

    ChatGLM-6B模型結(jié)構(gòu)代碼解析(單機版) ? 本文介紹ChatGLM-6B的模型結(jié)構(gòu),代碼來自https://huggingface.co/THUDM/chatglm-6b/blob/main/modeling_chatglm.py。 相關(guān)博客 【自然語言處理】【長文本處理】RMT:能處理長度超過一百萬token的Transformer 【自然語言處理】【大模型】MPT模型結(jié)構(gòu)源碼解析(單機

    2024年02月06日
    瀏覽(20)
  • 自然語言處理從入門到應(yīng)用——LangChain:模型(Models)-[文本嵌入模型:Embaas、Fake Embeddings、Google Vertex AI PaLM等]

    分類目錄:《大模型從入門到應(yīng)用》總目錄 LangChain系列文章: 基礎(chǔ)知識 快速入門 安裝與環(huán)境配置 鏈(Chains)、代理(Agent:)和記憶(Memory) 快速開發(fā)聊天模型 模型(Models) 基礎(chǔ)知識 大型語言模型(LLMs) 基礎(chǔ)知識 LLM的異步API、自定義LLM包裝器、虛假LLM和人類輸入LLM(

    2024年02月10日
    瀏覽(52)
  • 【自然語言處理】【大模型】CodeGeeX:用于代碼生成的多語言預(yù)訓(xùn)練模型

    【自然語言處理】【大模型】CodeGeeX:用于代碼生成的多語言預(yù)訓(xùn)練模型

    CodeGeeX:用于代碼生成的多語言預(yù)訓(xùn)練模型 《CodeGeeX: A Pre-Trained Model for Code Generation with Multilingual Evaluations on HumanEval-X》 論文地址:https://arxiv.org/pdf/2303.17568.pdf 相關(guān)博客 【自然語言處理】【大模型】RWKV:基于RNN的LLM 【自然語言處理】【大模型】CodeGen:一個用于多輪程序合成

    2024年02月06日
    瀏覽(26)
  • 自然語言之文本預(yù)處理

    自然語言之文本預(yù)處理

    概念 分詞就是將連續(xù)的字序列按照一定的規(guī)范重新組合成詞序列的過程。在英文的行文中,單詞之間是以空格作為自然分界符的,而中文只是字、句和段能通過明顯的分界符來簡單劃界,唯獨詞沒有一個形式上的分界符。分詞過程就是找到這樣分界符的過程. 作用 詞作為語言

    2024年02月06日
    瀏覽(27)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包