Lewati ke konten utama

NLP dengan PyTorch: Panduan Komprehensif

Mulai NLP: Tutorial PyTorch untuk Pemula
Diperbarui 28 Sep 2026  · 12 mnt Baca

Jelajahi bersama AI

ChatGPTClaudePerplexity

Pendahuluan ke NLP dan PyTorch

Natural Language Processing (NLP) adalah komponen penting dari AI modern, yang memungkinkan mesin memahami dan merespons bahasa manusia. Seiring meningkatnya interaksi digital, pentingnya NLP juga tumbuh. PyTorch, sebuah pustaka machine learning open-source yang populer, menyediakan alat yang andal untuk tugas NLP berkat fleksibilitas dan komputasi tensornya yang efisien. Grafik komputasi dinamisnya juga membantu memodifikasi dan membangun model kompleks dengan mudah, menjadikannya ideal untuk tutorial ini.

Jika Anda tertarik mempelajari lebih jauh tentang NLP, lihat Natural Language Processing in Python skill track kami, atau jika Anda lebih suka mempelajari NLP di R, lihat kursus Introduction to Natural Language Processing in R di DataCamp.

Menyiapkan Lingkungan

Menyiapkan lingkungan PyTorch terkadang menantang karena faktor-faktor seperti sistem operasi, preferensi pengelola paket, bahasa pemrograman, dan platform komputasi. Proses instalasi dapat sedikit berbeda bergantung pada faktor-faktor ini, sehingga Anda perlu menjalankan perintah tertentu.

Untuk mendapatkan perintah instalasi yang sesuai, Anda dapat mengunjungi halaman resmi PyTorch get started, di mana Anda dapat memilih preferensi Anda dan menerima instruksi yang diperlukan.

image7.png

Kita akan menggunakan DataLab untuk tutorial ini. Kode lengkap untuk melatih model analisis sentimen menggunakan PyTorch tersedia di buku kerja DataLab ini jika Anda ingin mengikuti.

Pengantar Tensor

image2.png

Tensor adalah struktur data fundamental dalam matematika dan fisika yang menggeneralisasi skalar, vektor, dan matriks. Tensor adalah array multi-dimensi yang mampu menyimpan dan memanipulasi data numerik dalam jumlah besar secara efisien. Tensor memiliki bentuk, ukuran, dan tipe data yang terdefinisi, sehingga serbaguna untuk berbagai operasi komputasional.

Dalam konteks PyTorch, tensor adalah blok bangunan utama dan objek representasi data. Tensor di PyTorch mirip dengan array NumPy tetapi hadir dengan fungsionalitas tambahan dan optimasi yang dirancang khusus untuk komputasi deep learning. Operasi tensor PyTorch memanfaatkan akselerasi perangkat keras, seperti GPU, untuk komputasi jaringan saraf yang kompleks secara efisien.

Tensor memainkan peran krusial dalam tugas pemrosesan bahasa alami (NLP) karena sifat data bahasa yang berurutan dan hierarkis.

NLP melibatkan pemrosesan dan pemahaman informasi tekstual. Tensor memungkinkan representasi dan manipulasi data teks dengan mengenkode kata, kalimat, atau dokumen sebagai vektor numerik.

Representasi numerik ini memungkinkan model deep learning memproses dan belajar dari data teks secara efektif. Tensor memungkinkan penanganan dataset bahasa berskala besar secara efisien, memfasilitasi pelatihan jaringan saraf, dan memungkinkan teknik lanjutan seperti mekanisme attention untuk model NLP yang lebih akurat.

Word Embedding

image5.png

Word embedding adalah representasi vektor padat dari kata-kata dalam ruang vektor kontinu. Tujuannya adalah menangkap hubungan semantik dan sintaktis antar kata, sehingga meningkatkan pemahaman dan kontekstualisasi data tekstual. Dengan merepresentasikan kata sebagai vektor numerik, embedding menangkap kesamaan dan perbedaan semantik, memungkinkan algoritme bekerja dengan kata sebagai masukan numerik yang bermakna.

Secara sederhana, embedding adalah cara cerdas untuk merepresentasikan kata sebagai angka. Angka-angka ini memiliki makna khusus yang menangkap bagaimana kata-kata saling berhubungan. Ini seperti kode rahasia yang membantu komputer memahami dan bekerja dengan kata-kata lebih mudah.

Word2Vec dan GloVe adalah dua metode populer untuk menghasilkan word embedding. Word2Vec adalah model berbasis jaringan saraf yang mempelajari representasi kata dengan memprediksi kata-kata sekitar berdasarkan kata target (continuous bag of words - CBOW) atau memprediksi kata target berdasarkan konteksnya (skip-gram).

GloVe (Global Vectors for Word Representation) adalah metode berbasis hitungan yang membangun vektor kata berdasarkan statistik ko-kemunculan kata dalam korpus besar. Metode ini menangkap hubungan kata secara global dan sering menghasilkan kinerja yang lebih baik dalam tugas analogi kata.

Arsitektur Model NLP

image4.png

Contoh Arsitektur Model untuk Tugas Analisis Sentimen.

Analisis sentimen adalah tugas umum dalam NLP dengan tujuan memahami sentimen yang diekspresikan dalam sebuah teks, sering diklasifikasikan sebagai positif, negatif, atau netral. Untuk menyelesaikan tugas ini, dapat digunakan recurrent neural network (RNN) sederhana atau versi yang lebih maju bernama long short-term memory (LSTM).

RNN

Arsitektur RNN memproses teks secara berurutan, di mana setiap kata dimasukkan satu per satu. Jaringan mempertahankan state tersembunyi yang berubah dengan setiap masukan kata, menangkap informasi dari urutan yang telah diproses sejauh ini.

State tersembunyi ini bertindak sebagai memori jaringan. Namun, RNN standar kesulitan dengan urutan panjang karena masalah vanishing gradient, yaitu kontribusi informasi berkurang secara geometris seiring waktu, membuat jaringan melupakan masukan awal. Anda dapat mempelajari lebih lanjut tentang recurrent neural network di tutorial RNN kami. 

LSTM

Untuk mengatasinya, dikembangkan LSTM, sebuah varian RNN. LSTM mempertahankan konteks atau "memori" yang lebih panjang dengan struktur internal yang lebih kompleks pada state tersembunyinya. LSTM memiliki serangkaian "gerbang" (input, forget, dan output) yang mengontrol aliran informasi masuk dan keluar dari state memori.

Gerbang input menentukan seberapa banyak informasi yang masuk harus disimpan dalam state memori. Gerbang lupa memutuskan informasi apa yang harus dibuang, dan gerbang keluaran menentukan seberapa banyak state internal diekspos ke unit LSTM berikutnya dalam urutan.

Model RNN atau LSTM akan menerima urutan kata dalam sebuah kalimat atau dokumen sebagai masukan. Setiap kata biasanya direpresentasikan sebagai vektor padat, atau embedding, yang menangkap makna semantik kata tersebut.

Jaringan memproses urutan kata demi kata, memperbarui state internalnya berdasarkan kata saat ini dan state sebelumnya.

State akhir jaringan kemudian digunakan untuk memprediksi sentimen. State ini diteruskan melalui lapisan fully connected, diikuti fungsi aktivasi softmax untuk menghasilkan distribusi probabilitas atas kelas sentimen (misalnya, positif, negatif, netral).

Kelas dengan probabilitas tertinggi dipilih sebagai prediksi model.

Ini adalah pengaturan dasar dan dapat ditingkatkan dengan teknik seperti bidirectional LSTM (yang memproses urutan dalam dua arah), serta mekanisme attention (yang memungkinkan model fokus pada bagian penting dari urutan), dan lainnya.

Melatih Model LSTM di PyTorch untuk Analisis Sentimen

Contoh kode Python end-to-end untuk membangun Model Analisis Sentimen menggunakan PyTorch

1. Memuat dataset

Pada contoh ini, kita akan menggunakan IMDB dataset of 50K Movie reviews. Tujuannya adalah melatih model LSTM untuk memprediksi sentimen. Ada dua nilai yang mungkin: 'positive’ dan ‘negative’. Oleh karena itu ini adalah tugas klasifikasi biner.

file_name = 'IMDB Dataset.csv'
df = pd.read_csv(file_name)
df.head()

Contoh dataset

2. Analisis data eksploratif

X,y = df['review'].values,df['sentiment'].values
x_train,x_test,y_train,y_test = train_test_split(X,y,stratify=y)
print(f'train data shape: {x_train.shape}')
print(f'test data shape: {x_test.shape}')


dd = pd.Series(y_train).value_counts()
sns.barplot(x=np.array(['negative','positive']),y=dd.values)
plt.show()

Keluaran:

>>> train data shape: (37500,)

>>> test data shape: (12500,)

image14.png

3. Prapemrosesan teks

Prapemrosesan teks dan tokenisasi adalah langkah awal yang krusial. Pertama, kita membersihkan data teks dengan menghapus tanda baca, spasi berlebih, dan angka.

Kemudian kita mengubah kalimat menjadi kata-kata individual, menghapus kata umum (dikenal sebagai "stop words"), dan melacak 1000 kata yang paling sering digunakan dalam dataset. Kata-kata ini kemudian diberi pengenal unik, membentuk kamus untuk one-hot encoding.

Intinya, kode ini mengonversi kalimat teks asli menjadi urutan pengenal unik tersebut, menerjemahkan bahasa manusia ke format yang dapat dipahami model machine learning.

def preprocess_string(s):
    # Remove all non-word characters (everything except numbers and letters)
    s = re.sub(r"[^\w\s]", '', s)
    # Replace all runs of whitespaces with no space
    s = re.sub(r"\s+", '', s)
    # replace digits with no space
    s = re.sub(r"\d", '', s)
    return s


def tokenize(x_train,y_train,x_val,y_val):
    word_list = []


    stop_words = set(stopwords.words('english'))
    for sent in x_train:
        for word in sent.lower().split():
            word = preprocess_string(word)
            if word not in stop_words and word != '':
                word_list.append(word)
 
    corpus = Counter(word_list)
    # sorting on the basis of most common words
    corpus_ = sorted(corpus,key=corpus.get,reverse=True)[:1000]
    # creating a dict
    onehot_dict = {w:i+1 for i,w in enumerate(corpus_)}
   
    # tokenize
    final_list_train,final_list_test = [],[]
    for sent in x_train:
            final_list_train.append([onehot_dict[preprocess_string(word)] for word in sent.lower().split()
                                     if preprocess_string(word) in onehot_dict.keys()])
    for sent in x_val:
            final_list_test.append([onehot_dict[preprocess_string(word)] for word in sent.lower().split()
                                    if preprocess_string(word) in onehot_dict.keys()])
           
    encoded_train = [1 if label =='positive' else 0 for label in y_train]  
    encoded_test = [1 if label =='positive' else 0 for label in y_val]
    return np.array(final_list_train), np.array(encoded_train),np.array(final_list_test), np.array(encoded_test),onehot_dict


x_train,y_train,x_test,y_test,vocab = tokenize(x_train,y_train,x_test,y_test)

Mari kita analisis panjang token di x_train.

rev_len = [len(i) for i in x_train]
pd.Series(rev_len).hist()

image1.png

4. Menyiapkan data untuk model

Mengingat panjang token setiap ulasan bervariasi, perlu untuk menstandarkannya demi konsistensi. Karena sebagian besar ulasan berisi kurang dari 500 token, kita akan menetapkan 500 sebagai panjang tetap untuk semua ulasan.

def padding_(sentences, seq_len):
    features = np.zeros((len(sentences), seq_len),dtype=int)
    for ii, review in enumerate(sentences):
        if len(review) != 0:
            features[ii, -len(review):] = np.array(review)[:seq_len]
    return features


x_train_pad = padding_(x_train,500)
x_test_pad = padding_(x_test,500)

Berikutnya, kita menggunakan kelas DataLoader untuk membuat dataset final bagi pelatihan model.

# create Tensor datasets
train_data = TensorDataset(torch.from_numpy(x_train_pad), torch.from_numpy(y_train))
valid_data = TensorDataset(torch.from_numpy(x_test_pad), torch.from_numpy(y_test))


# dataloaders
batch_size = 50


# make sure to SHUFFLE your data
train_loader = DataLoader(train_data, shuffle=True, batch_size=batch_size)
valid_loader = DataLoader(valid_data, shuffle=True, batch_size=batch_size)


# obtain one batch of training data
dataiter = iter(train_loader)
sample_x, sample_y = next(dataiter)


print('Sample input size: ', sample_x.size()) # batch_size, seq_length
print('Sample input: \n', sample_x)
print('Sample output: \n', sample_y)

Keluaran:

image3.png

5. Mendefinisikan model LSTM

Bagian kode ini mendefinisikan model analisis sentimen menggunakan arsitektur recurrent neural network (RNN), khususnya jenis RNN bernama Long Short-Term Memory (LSTM) seperti yang disebutkan di atas. Kelas SentimentRNN adalah model PyTorch yang dimulai dengan lapisan embedding, yang mentransformasikan indeks kata menjadi representasi padat yang menangkap makna semantik kata. Ini diikuti oleh lapisan LSTM yang memproses urutan embedding kata.

State tersembunyi LSTM diteruskan melalui lapisan dropout (untuk regularisasi model dan mencegah overfitting) dan lapisan fully connected, yang memetakan keluaran LSTM ke prediksi akhir. Prediksi kemudian dilewatkan melalui fungsi aktivasi sigmoid, mengonversi nilai keluaran mentah menjadi probabilitas. Metode forward mendefinisikan lintasan maju data melalui jaringan ini, dan metode init_hidden menginisialisasi state tersembunyi lapisan LSTM dengan nol.

class SentimentRNN(nn.Module):
    def __init__(self,no_layers,vocab_size,hidden_dim,embedding_dim,drop_prob=0.5):
        super(SentimentRNN,self).__init__()
 
        self.output_dim = output_dim
        self.hidden_dim = hidden_dim
 
        self.no_layers = no_layers
        self.vocab_size = vocab_size
   
        # embedding and LSTM layers
        self.embedding = nn.Embedding(vocab_size, embedding_dim)
       
        #lstm
        self.lstm = nn.LSTM(input_size=embedding_dim,hidden_size=self.hidden_dim,
                           num_layers=no_layers, batch_first=True)
       
        # dropout layer
        self.dropout = nn.Dropout(0.3)
   
        # linear and sigmoid layer
        self.fc = nn.Linear(self.hidden_dim, output_dim)
        self.sig = nn.Sigmoid()
       
    def forward(self,x,hidden):
        batch_size = x.size(0)
        # embeddings and lstm_out
        embeds = self.embedding(x)  # shape: B x S x Feature   since batch = True
        #print(embeds.shape)  #[50, 500, 1000]
        lstm_out, hidden = self.lstm(embeds, hidden)
       
        lstm_out = lstm_out.contiguous().view(-1, self.hidden_dim)
       
        # dropout and fully connected layer
        out = self.dropout(lstm_out)
        out = self.fc(out)
       
        # sigmoid function
        sig_out = self.sig(out)
       
        # reshape to be batch_size first
        sig_out = sig_out.view(batch_size, -1)


        sig_out = sig_out[:, -1] # get last batch of labels
       
        # return last sigmoid output and hidden state
        return sig_out, hidden
       
    def init_hidden(self, batch_size):
        ''' Initializes hidden state '''
        # Create two new tensors with sizes n_layers x batch_size x hidden_dim,
        # initialized to zero, for hidden state and cell state of LSTM
        h0 = torch.zeros((self.no_layers,batch_size,self.hidden_dim)).to(device)
        c0 = torch.zeros((self.no_layers,batch_size,self.hidden_dim)).to(device)
        hidden = (h0,c0)
        return hidden 

Sekarang kita akan menginisialisasi kelas SentimentRNN yang telah kita definisikan di atas dengan parameter yang diperlukan.

no_layers = 2
vocab_size = len(vocab) + 1 #extra 1 for padding
embedding_dim = 64
output_dim = 1
hidden_dim = 256


model = SentimentRNN(no_layers,vocab_size,hidden_dim,embedding_dim,drop_prob=0.5)


#moving to gpu
model.to(device)
print(model)

image10.png

Langkah terakhir sebelum memulai proses pelatihan adalah mendefinisikan fungsi loss dan optimisasi. Bagian ini berfokus pada pendefinisian fungsi loss, metode optimisasi, dan fungsi utilitas untuk perhitungan akurasi bagi model analisis sentimen kita.

Fungsi loss yang digunakan adalah Binary Cross-Entropy Loss (nn.BCELoss), yang umum digunakan untuk tugas klasifikasi biner seperti ini. Metode optimisasi adalah Adam (torch.optim.Adam), pilihan populer karena efisien dan hemat memori. Laju pembelajaran untuk Adam ditetapkan sebesar 0,001.

Fungsi acc adalah fungsi pembantu yang dirancang untuk menghitung akurasi prediksi model kita. Fungsi ini membulatkan probabilitas prediksi ke bilangan bulat terdekat (0 atau 1), membandingkan prediksi tersebut dengan label aktual, lalu menghitung persentase prediksi yang benar.

# loss and optimization functions


lr=0.001


criterion = nn.BCELoss()


optimizer = torch.optim.Adam(model.parameters(), lr=lr)


# function to predict accuracy
def acc(pred,label):
    pred = torch.round(pred.squeeze())
    return torch.sum(pred == label.squeeze()).item()

6. Mulai pelatihan

Ini adalah bagian kode di mana model analisis sentimen dilatih dan divalidasi. Setiap epoch (iterasi) melibatkan fase pelatihan dan fase validasi. Selama fase pelatihan, model belajar dengan menyesuaikan parameternya untuk meminimalkan loss.

Dalam fase validasi, kinerja model dievaluasi pada dataset terpisah untuk memastikan model mempelajari pola yang tergeneralisasi dan bukan sekadar menghafal data pelatihan.

Loop pelatihan dimulai dengan menginisialisasi state tersembunyi LSTM dan menyetel model ke mode pelatihan. Untuk setiap batch data, prediksi model dibandingkan dengan label aktual untuk menghitung loss, yang kemudian dibackprop untuk memperbarui parameter model.

Gradien dipotong hingga nilai maksimum untuk mencegahnya menjadi terlalu besar, masalah umum saat melatih RNN dan LSTM.

Dalam loop validasi, model disetel ke mode evaluasi, dan kinerjanya dinilai menggunakan data validasi tanpa memperbarui parameter apa pun. Untuk kedua fase pelatihan dan validasi, kode melacak loss dan akurasi untuk setiap epoch.

Jika loss validasi membaik, parameter model saat ini disimpan, menangkap model terbaik yang ditemukan selama pelatihan.

Terakhir, setelah setiap epoch, rata-rata loss dan akurasi untuk epoch tersebut dicetak, memberikan wawasan tentang kemajuan pembelajaran model.

clip = 5
epochs = 5
valid_loss_min = np.Inf
# train for some number of epochs
epoch_tr_loss,epoch_vl_loss = [],[]
epoch_tr_acc,epoch_vl_acc = [],[]


for epoch in range(epochs):
    train_losses = []
    train_acc = 0.0
    model.train()
    # initialize hidden state
    h = model.init_hidden(batch_size)
    for inputs, labels in train_loader:
       
        inputs, labels = inputs.to(device), labels.to(device)  
        # Creating new variables for the hidden state, otherwise
        # we'd backprop through the entire training history
        h = tuple([each.data for each in h])
       
        model.zero_grad()
        output,h = model(inputs,h)
       
        # calculate the loss and perform backprop
        loss = criterion(output.squeeze(), labels.float())
        loss.backward()
        train_losses.append(loss.item())
        # calculating accuracy
        accuracy = acc(output,labels)
        train_acc += accuracy
        #`clip_grad_norm` helps prevent the exploding gradient problem in RNNs / LSTMs.
        nn.utils.clip_grad_norm_(model.parameters(), clip)
        optimizer.step()
       
    val_h = model.init_hidden(batch_size)
    val_losses = []
    val_acc = 0.0
    model.eval()
    for inputs, labels in valid_loader:
            val_h = tuple([each.data for each in val_h])


            inputs, labels = inputs.to(device), labels.to(device)


            output, val_h = model(inputs, val_h)
            val_loss = criterion(output.squeeze(), labels.float())


            val_losses.append(val_loss.item())
           
            accuracy = acc(output,labels)
            val_acc += accuracy
           
    epoch_train_loss = np.mean(train_losses)
    epoch_val_loss = np.mean(val_losses)
    epoch_train_acc = train_acc/len(train_loader.dataset)
    epoch_val_acc = val_acc/len(valid_loader.dataset)
    epoch_tr_loss.append(epoch_train_loss)
    epoch_vl_loss.append(epoch_val_loss)
    epoch_tr_acc.append(epoch_train_acc)
    epoch_vl_acc.append(epoch_val_acc)
    print(f'Epoch {epoch+1}')
    print(f'train_loss : {epoch_train_loss} val_loss : {epoch_val_loss}')
    print(f'train_accuracy : {epoch_train_acc*100} val_accuracy : {epoch_val_acc*100}')
    if epoch_val_loss <= valid_loss_min:
        torch.save(model.state_dict(), 'state_dict.pt')
        print('Validation loss decreased ({:.6f} --> {:.6f}).  Saving model ...'.format(valid_loss_min,epoch_val_loss))
        valid_loss_min = epoch_val_loss
    print(25*'==')

Keluaran:

image9.png

7. Evaluasi model

Bagian ini menghasilkan dua plot untuk merepresentasikan secara visual akurasi dan loss pelatihan serta validasi selama proses pelatihan model. Subplot pertama menampilkan grafik garis akurasi pelatihan dan validasi setelah setiap epoch. Plot ini berguna untuk mengamati seberapa baik model belajar dan melakukan generalisasi dari waktu ke waktu.

Subplot kedua menampilkan grafik garis loss pelatihan dan validasi. Ini membantu kita melihat apakah model overfitting, underfitting, atau pas.

fig = plt.figure(figsize = (20, 6))
plt.subplot(1, 2, 1)
plt.plot(epoch_tr_acc, label='Train Acc')
plt.plot(epoch_vl_acc, label='Validation Acc')
plt.title("Accuracy")
plt.legend()
plt.grid()
   
plt.subplot(1, 2, 2)
plt.plot(epoch_tr_loss, label='Train loss')
plt.plot(epoch_vl_loss, label='Validation loss')
plt.title("Loss")
plt.legend()
plt.grid()


plt.show()

Keluaran:

image6.png

8. Inferensi / Prediksi

Pada bagian ini, kita membuat fungsi predict_text untuk memprediksi sentimen dari teks tertentu, dan demontrasi penggunaannya. Fungsi predict_text menerima masukan berupa string teks, mengubahnya menjadi urutan indeks kata (sesuai kosakata yang telah ditentukan), serta menyiapkannya sebagai masukan ke model dengan padding dan reshaping. Fungsi kemudian menginisialisasi state tersembunyi LSTM, memasukkan input ke model, dan mengembalikan probabilitas keluaran model dari teks mentah.

def predict_text(text):
        word_seq = np.array([vocab[preprocess_string(word)] for word in text.split()
                         if preprocess_string(word) in vocab.keys()])
        word_seq = np.expand_dims(word_seq,axis=0)
        pad =  torch.from_numpy(padding_(word_seq,500))
        inputs = pad.to(device)
        batch_size = 1
        h = model.init_hidden(batch_size)
        h = tuple([each.data for each in h])
        output, h = model(inputs, h)
        return(output.item())


index = 30
print(df['review'][index])
print('='*70)
print(f'Actual sentiment is  : {df["sentiment"][index]}')
print('='*70)
pro = predict_text(df['review'][index])
status = "positive" if pro > 0.5 else "negative"
pro = (1 - pro) if status == "negative" else pro
print(f'Predicted sentiment is {status} with a probability of {pro}')

Keluaran:

image13.png

Seluruh notebook ini dikembangkan menggunakan DataLab dan dapat diakses di buku kerja ini. Perlu diingat bahwa mengeksekusi kode bisa memakan waktu cukup lama jika Anda menggunakan CPU. Namun, penggunaan GPU dapat secara signifikan mengurangi waktu pelatihan.

Langkah Lanjutan / Meningkatkan Model

Meningkatkan model NLP sering melibatkan berbagai strategi yang disesuaikan dengan kebutuhan dan kendala spesifik tugas yang dikerjakan. Penyetelan hiperparameter adalah pendekatan umum yang melibatkan penyesuaian parameter seperti laju pembelajaran, ukuran batch, atau jumlah lapisan dalam jaringan saraf.

Hiperparameter ini dapat sangat memengaruhi kinerja model dan biasanya dioptimalkan melalui teknik seperti grid search atau random search.

Transfer learning, khususnya dengan model seperti BERT atau GPT, telah menunjukkan potensi besar dalam meningkatkan tugas NLP. Model-model ini dipra-latih pada korpus teks besar lalu di-fine-tune pada tugas spesifik, sehingga dapat memanfaatkan pemahaman bahasa umum yang diperoleh selama pra-pelatihan. Pendekatan ini secara konsisten menghasilkan hasil terbaik pada berbagai tugas NLP, termasuk analisis sentimen.

Aplikasi Dunia Nyata NLP dengan PyTorch

Penggunaan model Natural Language Processing (NLP), khususnya yang diimplementasikan menggunakan kerangka kerja seperti PyTorch, telah diadopsi luas dalam aplikasi dunia nyata, merevolusi berbagai aspek kehidupan digital kita.

Chatbot telah menjadi bagian integral dari platform layanan pelanggan, memanfaatkan model NLP untuk memahami dan merespons pertanyaan pengguna. Model-model ini dapat memproses masukan bahasa alami, menyimpulkan intent, dan menghasilkan respons layaknya manusia, memberikan pengalaman interaksi yang mulus.

Dalam ranah sistem rekomendasi, model NLP membantu menganalisis ulasan dan komentar pengguna untuk memahami preferensi, sehingga meningkatkan personalisasi rekomendasi.

Alat analisis sentimen juga sangat bergantung pada NLP. Alat ini dapat menelaah posting media sosial, ulasan pelanggan, atau data teks apa pun dan menyimpulkan sentimen di baliknya. Bisnis sering menggunakan wawasan ini untuk riset pasar atau mengukur sentimen publik terhadap produk atau layanan mereka, memungkinkan pengambilan keputusan berbasis data.

Temukan lebih banyak kasus penggunaan dunia nyata untuk menggunakan Google BERT dalam Tutorial Natural Language Processing ini.

Kesimpulan

PyTorch menawarkan platform yang kuat dan fleksibel untuk membangun model NLP. Dalam tutorial ini, kita telah menelusuri proses pengembangan model analisis sentimen menggunakan arsitektur LSTM, menyoroti langkah-langkah kunci seperti prapemrosesan data teks, membangun model, melatih dan memvalidasinya, dan akhirnya membuat prediksi pada data yang belum terlihat.

Ini baru permulaan dari apa yang mungkin dilakukan dengan NLP dan PyTorch. NLP memiliki aplikasi luas, dari chatbot dan sistem rekomendasi hingga alat analisis sentimen dan seterusnya.

Perkembangan berkelanjutan di bidang ini, terutama dengan hadirnya model transfer learning seperti BERT dan GPT, membuka kemungkinan yang lebih menarik untuk dieksplorasi di masa depan. Menguasai NLP dengan PyTorch menantang namun bermanfaat, karena membuka dimensi baru dalam memahami dan berinteraksi dengan dunia di sekitar kita.

Jika Anda tertarik memperdalam PyTorch, lihat kursus Deep Learning with PyTorch kami. Di sini, Anda akan mulai dengan pengenalan PyTorch, menjelajahi pustaka PyTorch dan penerapannya untuk jaringan saraf dan deep learning. Selanjutnya, Anda akan mempelajari jaringan saraf tiruan dan cara melatihnya menggunakan data nyata.


Moez Ali's photo
Author
Moez Ali
LinkedIn
Twitter

Data Scientist, Pendiri & Kreator PyCaret

Topik
Python

Kembangkan keterampilan NLP Anda hari ini!

{count, plural, one {Kursus} other {Kursus}}

Rekayasa Fitur untuk NLP di Python

{hours} jam
29.8K
Pelajari teknik untuk mengekstrak informasi berguna dari teks dan memprosesnya ke dalam format yang sesuai untuk pembelajaran mesin.
Lihat DetailRight Arrow
Mulai Kursus
Lihat SelengkapnyaRight Arrow
Terkait

{count, plural, one {blog} other {blogs}}

Tutorial Korelasi di R

Dapatkan pengenalan dasar-dasar korelasi di R: pelajari lebih lanjut tentang koefisien korelasi, matriks korelasi, plotting korelasi, dan sebagainya.
David Woods's photo

David Woods

13 mnt

{count, plural, one {blog} other {blogs}}

12 Alternatif ChatGPT Terbaik yang Bisa Anda Coba pada 2026

Artikel ini menyajikan daftar alternatif ChatGPT yang akan meningkatkan produktivitas Anda.
Javier Canales Luna's photo

Javier Canales Luna

14 mnt

{count, plural, one {blog} other {blogs}}

40 Pertanyaan Wawancara DBMS Teratas di 2026

Kuasai pertanyaan wawancara basis data, dari konsep SQL dasar hingga skenario desain sistem tingkat lanjut. Panduan mendalam ini mencakup semua yang Anda perlukan untuk sukses di wawancara DBMS dan meraih peran berikutnya.
Dario Radečić's photo

Dario Radečić

15 mnt

{count, plural, one {blog} other {blogs}}

Spaghetti Plot dan Jalur Badai

Temukan alasan mengapa Anda sebaiknya (tidak) menggunakan spaghetti plot untuk menyampaikan ketidakpastian jalur prediksi badai serta dampaknya terhadap interpretasi.
Hugo Bowne-Anderson's photo

Hugo Bowne-Anderson

13 mnt

Lihat SelengkapnyaLihat Selengkapnya