Pemrosesan bahasa alami adalah bidang ilmu komputer dan linguistik yang berkaitan dengan interaksi antara komputer dan bahasa manusia (alami). Dalam bentuknya yang paling sederhana, NLP adalah tentang mengembangkan algoritma yang secara otomatis dapat memahami dan menghasilkan bahasa manusia. Tujuan jangka panjang NLP adalah menciptakan model komputasi bahasa manusia yang dapat digunakan untuk melakukan berbagai macam tugas. Tugas-tugas ini meliputi terjemahan otomatis, peringkasan, menjawab pertanyaan, ekstraksi informasi, dan banyak lainnya. Penelitian NLP sangat interdisipliner, melibatkan peneliti dari berbagai bidang seperti linguistik, ilmu kognitif, kecerdasan buatan, dan ilmu komputer.
Ada banyak metode berbeda yang digunakan dalam pemrosesan bahasa alami, termasuk metode berbasis aturan, metode statistik, dan metode komputasi saraf. Metode berbasis aturan biasanya didasarkan pada aturan buatan tangan yang ditulis oleh para ahli NLP. Metode-metode ini bisa sangat efektif untuk tugas-tugas tertentu, namun sering kali cakupannya terbatas dan memerlukan banyak upaya untuk mempertahankannya. Metode statistik didasarkan pada penggunaan data dalam jumlah besar untuk melatih model komputasi. Model ini kemudian dapat digunakan untuk melakukan berbagai tugas NLP secara otomatis. Jaringan saraf adalah jenis algoritma pembelajaran mesin yang sangat cocok untuk tugas-tugas NLP. Jaringan saraf telah digunakan untuk membuat model canggih untuk tugas-tugas seperti terjemahan mesin dan klasifikasi.
Co:ini adalah jaringan saraf yang kuat, yang dapat menghasilkan, menyematkan, dan mengklasifikasikan teks. Dalam tutorial ini kita akan menggunakan Co:here untuk mengklasifikasikan deskripsi. Untuk menggunakan Co:here Anda perlu membuat akun di Co:here dan mendapatkan kunci API.
Kami akan memprogram dengan Python, jadi kami perlu menginstal perpustakaan cohere
dengan pip
pip install cohere
Pertama, kita harus mengimplementasikan cohere.Client
. Dalam argumen Klien harus ada kunci API, yang telah Anda buat sebelumnya, dan versi 2021-11-08
. Saya akan membuat kelas CoHere
, ini akan berguna pada langkah selanjutnya.
class CoHere :
def __init__ ( self , api_key ):
self . co = cohere . Client ( f' { api_key } ' , '2021-11-08' )
self . examples = []
Bagian utama dari setiap jaringan saraf adalah kumpulan data. Dalam tutorial ini saya akan menggunakan dataset yang mencakup 1000 deskripsi 10 kelas. Jika Anda ingin menggunakannya, Anda dapat mendownloadnya di sini.
Dataset yang diunduh memiliki 10 folder di setiap folder berisi 100 files.txt
dengan deskripsi. Nama file adalah label deskripsi, misalnya sport_3.txt
.
Pada field ini tugasnya adalah membaca deskripsi dan label dari file serta membuat data yang berisi deskripsi dan label sebagai salah satu contoh data. Pengklasifikasi Cohere memerlukan sampel, di mana setiap sampel harus dirancang sebagai daftar [description, label]
.
Pada awalnya, kita perlu memuat semua data, untuk melakukan itu. Kami membuat fungsi load_examples
. Dalam fungsi ini kita akan menggunakan tiga perpustakaan eksternal:
os.path
untuk masuk ke folder dengan data. Kode dieksekusi di jalur di mana file.py
python berada. Ini adalah perpustakaan internal, jadi kita tidak perlu menginstalnya.
numpy
perpustakaan ini berguna untuk bekerja dengan array. Dalam tutorial ini, kita akan menggunakannya untuk menghasilkan angka acak. Anda harus menginstal perpustakaan ini dengan pip pip install numpy
.
glob
membantu kita membaca semua file dan nama folder. Ini adalah perpustakaan eksternal, jadi diperlukan instalasi - pip install glob
.
Kumpulan data yang diunduh harus diekstraksi di folder data
. Dengan os.path.join
kita bisa mendapatkan jalur folder universal.
folders_path = os . path . join ( 'data' , '*' )
Di windows, pengembalian sama dengan data*
.
Kemudian kita bisa menggunakan metode glob
untuk mendapatkan semua nama folder.
folders_name = glob ( folders_path )
folders_name
adalah daftar, yang berisi jalur jendela folder. Dalam tutorial ini, ini adalah nama-nama label.
[ 'data \ business' , 'data \ entertainment' , 'data \ food' , 'data \ graphics' , 'data \ historical' , 'data \ medical' , 'data \ politics' , 'data \ space' , 'data \ sport' , 'data \ technologie' ]
Ukuran Co:here
kumpulan data pelatihan tidak boleh lebih besar dari 50 contoh dan setiap kelas harus memiliki setidaknya 5 contoh. Dengan loop for
kita bisa mendapatkan nama setiap file. Seluruh fungsinya terlihat seperti itu:
import os . path
from glob import glob
import numpy as np
def load_examples ():
examples_path = []
folders_path = os . path . join ( 'data' , '*' )
folders_name = glob ( folders_path )
for folder in folders_name :
files_path = os . path . join ( folder , '*' )
files_name = glob ( files_path )
for i in range ( 50 // len ( folders_name )):
random_example = np . random . randint ( 0 , len ( files_name ))
examples_path . append ( files_name [ random_example ])
return examples_path
Perulangan terakhir mengambil 5 jalur secara acak dari setiap label dan menambahkannya ke dalam daftar baru examples_path
.
Sekarang, kita harus membuat set pelatihan. Untuk membuatnya kita akan memuat contoh dengan load_examples()
. Di setiap jalur terdapat nama kelas, kita akan menggunakannya untuk membuat sampel. Deskripsi perlu dibaca dari file, panjangnya tidak boleh panjang, jadi dalam tutorial ini, panjangnya akan sama dengan 100. Untuk daftar texts
ditambahkan daftar [descroption, class_name]
. Jadi, pengembaliannya adalah daftar itu.
def examples ():
texts = []
examples_path = load_examples ()
for path in examples_path :
class_name = path . split ( os . sep )[ 1 ]
with open ( path , 'r' , encoding = "utf8" ) as file :
text = file . read ()[: 100 ]
texts . append ([ text , class_name ])
return texts
Kami kembali ke kelas CoHere
. Kita harus menambahkan dua metode - untuk memuat contoh dan mengklasifikasikan masukan.
Yang pertama sederhana, daftar contoh co:here
harus dibuat dengan metode cohere
tambahan - cohere.classify.Example
.
def list_of_examples ( self ):
for e in examples ():
self . examples . append ( Example ( text = e [ 0 ], label = e [ 1 ]))
Metode kedua adalah dengan mengklasifikasikan metode dari cohere
. Metode ini memiliki argumen serval, seperti:
ukuran model
suatu model.
inputs
daftar data yang akan diklasifikasi.
daftar examples
set pelatihan dengan contoh
Semuanya dapat Anda temukan di sini.
Dalam tutorial ini, metode cohere
akan diimplementasikan sebagai metode kelas CoHere
kita. Argumen metode ini adalah daftar deskripsi yang akan diprediksi.
def classify ( self , inputs ):
return self . co . classify (
model = 'medium' ,
inputs = inputs ,
examples = self . examples
). classifications
Pengembaliannya adalah input
, prediction
input, dan daftar confidence
. Confidence
adalah daftar kemungkinan setiap kelas.
cohere . Classification {
input :
prediction :
confidence : []
}
CoHere
import cohere
from loadExamples import examples
from cohere . classify import Example
class CoHere :
def __init__ ( self , api_key ):
self . co = cohere . Client ( f' { api_key } ' , '2021-11-08' )
self . examples = []
def list_of_examples ( self ):
for e in examples ():
self . examples . append ( Example ( text = e [ 0 ], label = e [ 1 ]))
def classify ( self , inputs ):
return self . co . classify (
model = 'medium' ,
taskDescription = '' ,
outputIndicator = '' ,
inputs = inputs ,
examples = self . examples
). classifications
Untuk membuat aplikasi yang berisi kotak input teks dan tampilan kemungkinan, kita akan menggunakan Stramlit
. Ini adalah perpustakaan yang mudah dan sangat berguna.
Instalasi
pip install streamlit
Kita memerlukan dua input teks untuk kunci API co:here
dan teks untuk diprediksi.
Dalam dokumen streamlit kita dapat menemukan metode:
st.header()
untuk membuat header di aplikasi kita
st.test_input()
untuk mengirim permintaan teks
st.button()
untuk membuat tombol
st.write()
untuk menampilkan hasil model kohere.
st.progress()
untuk menampilkan bilah kemajuan
st.column()
untuk membagi aplikasi
st . header ( "Your personal text classifier - Co:here application" )
api_key = st . text_input ( "API Key:" , type = "password" ) #text box for API key
description = [ st . text_input ( "Description:" )] #text box for text to predict
cohere = CoHere ( api_key ) #initialization CoHere
cohere . list_of_examples () #loading training set
if st . button ( "Classify" ):
here = cohere . classify ( description )[ 0 ] #prediction
col1 , col2 = st . columns ( 2 )
for no , con in enumerate ( here . confidence ): #display likelihood for each label
if no % 2 == 0 : # in two columns
col1 . write ( f" { con . label } : { np . round ( con . confidence * 100 , 2 ) } %" )
col1 . progress ( con . confidence )
else :
col2 . write ( f" { con . label } : { np . round ( con . confidence * 100 , 2 ) } %" )
col2 . progress ( con . confidence )
Untuk menjalankan perintah penggunaan aplikasi streamlit
streamlit run name_of_your_file . py
Aplikasi yang dibuat terlihat seperti ini
Co:here model dapat digunakan tidak hanya untuk menghasilkan teks tetapi juga untuk klasifikasi. Dalam tutorial ini, kami dapat mengklasifikasikan teks pendek, dengan kumpulan data kecil. Ada 50 contoh untuk 10 kelas. Ini cukup untuk menjaga kemungkinan prediksi tetap tinggi. Kumpulan data besar dalam beberapa skenario mungkin sulit dihasilkan, jadi model Co:here bisa menjadi solusi yang bagus untuk itu.
Nantikan tutorial selanjutnya!
Terima kasih! - Adrian Banachowicz, Magang Ilmu Data di New Native