Membina penjana teks menggunakan rantai Markov
Dalam artikel ini, kami akan memperkenalkan projek pembelajaran mesin yang popular - penjana teks Anda akan belajar cara membina penjana teks dan belajar cara melaksanakan rantaian Markov untuk mencapai model ramalan yang lebih pantas.
Pengenalan kepada Penjana Teks
Penjanaan teks popular merentas industri, terutamanya dalam mudah alih, apl dan sains data. Malah akhbar menggunakan penjanaan teks untuk membantu proses penulisan.
Dalam kehidupan seharian, kami didedahkan kepada beberapa teknologi penjanaan teks, cadangan carian, Karang Pintar dan bot sembang adalah semua contoh aplikasi
Artikel ini akan menggunakan rantaian Markov Penjana teks. Ini akan menjadi model berasaskan aksara yang mengambil aksara sebelumnya bagi rantai dan menjana huruf seterusnya dalam jujukan.
Dengan melatih program kami menggunakan perkataan contoh, penjana teks akan mempelajari corak susunan aksara biasa. Penjana teks kemudiannya akan menggunakan corak ini pada input, yang merupakan perkataan yang tidak lengkap, dan mengeluarkan aksara dengan kebarangkalian tertinggi untuk melengkapkan perkataan.
Penjanaan teks ialah satu cabang pemprosesan bahasa semula jadi yang meramal dan menjana aksara seterusnya berdasarkan corak bahasa yang diperhatikan sebelum ini.
Sebelum pembelajaran mesin, NLP melakukan penjanaan teks dengan mencipta jadual yang mengandungi semua perkataan dalam bahasa Inggeris dan memadankan rentetan yang diluluskan dengan perkataan sedia ada. Terdapat dua masalah dengan pendekatan ini.
- Mencari beribu-ribu perkataan akan menjadi sangat perlahan.
- Penjana hanya boleh melengkapkan perkataan yang pernah dilihatnya sebelum ini.
Kemunculan pembelajaran mesin dan pembelajaran mendalam telah membolehkan kami mengurangkan masa jalan secara drastik dan meningkatkan keluasan dalam NLP kerana penjana boleh melengkapkan perkataan yang tidak pernah ditemui sebelum ini. NLP boleh dilanjutkan untuk meramal perkataan, frasa atau ayat jika dikehendaki!
Untuk projek ini kami akan melakukannya secara eksklusif menggunakan rantai Markov. Proses Markov adalah asas kepada banyak projek pemprosesan bahasa semula jadi yang melibatkan bahasa bertulis dan simulasi sampel daripada pengedaran kompleks.
Proses Markov sangat berkuasa sehingga ia boleh digunakan untuk menjana teks yang kelihatan kelihatan nyata menggunakan hanya sampel dokumen.
Apakah rantai Markov?
Rantai Markov ialah proses stokastik yang memodelkan urutan peristiwa di mana kebarangkalian setiap peristiwa bergantung pada keadaan peristiwa sebelumnya . Model ini mempunyai set keadaan terhingga, dan kebarangkalian bersyarat untuk berpindah dari satu keadaan ke keadaan lain adalah tetap.
Kebarangkalian setiap peralihan hanya bergantung pada keadaan model sebelumnya, bukan keseluruhan sejarah peristiwa.
Sebagai contoh, katakan anda ingin membina model rantai Markov untuk meramal cuaca.
Dalam model ini kita mempunyai dua keadaan, cerah atau hujan. Jika kita mempunyai hari yang cerah hari ini, terdapat kebarangkalian yang lebih tinggi (70%) bahawa ia akan cerah esok. Begitu juga dengan hujan; jika sudah hujan, kemungkinan hujan akan terus turun.
Tetapi ada kemungkinan (30%) cuaca akan berubah keadaan, jadi kami memasukkannya dalam model rantai Markov kami juga.
Rantaian Markov ialah model yang sesuai untuk penjana teks kami kerana model kami akan meramalkan watak seterusnya hanya menggunakan aksara sebelumnya. Kelebihan menggunakan rantai Markov ialah ia tepat, memerlukan kurang memori (hanya 1 keadaan sebelumnya disimpan) dan pantas untuk dilaksanakan.
Pelaksanaan penjanaan teks
Di sini kami akan melengkapkan penjana teks dalam 6 langkah:
- Jana jadual carian: Cipta jadual untuk merekod kekerapan perkataan
- Tukar frekuensi kepada kebarangkalian: Tukar penemuan kami ke dalam bentuk yang boleh digunakan
- Muatkan set data: Muatkan dan gunakan set latihan
- Bina rantai Markov: Gunakan kebarangkalian untuk setiap perkataan dan penciptaan watak rantai
- Sampel data: Buat fungsi untuk sampel pelbagai bahagian korpus
- Jana teks: Uji model kami
1. Hasilkan jadual carian
Pertama, kami akan mencipta jadual untuk merekodkan kejadian setiap keadaan watak dalam korpus latihan. Simpan aksara 'K' dan aksara 'K+1' terakhir daripada korpus latihan dan simpannya dalam jadual carian.
Sebagai contoh, bayangkan korpus latihan kami mengandungi, "lelaki itu adalah, mereka, kemudian, si, itu". Maka bilangan kemunculan perkataan itu ialah:
- "the" — 3
- "then" — 1
- "they" — 1
- " lelaki” — 1
Berikut ialah keputusan dalam jadual carian:
Dalam contoh di atas, kami mengambil K = 3, yang bermaksud bahawa 3 aksara akan dipertimbangkan pada satu masa dan aksara seterusnya (K+1) akan digunakan sebagai aksara output . Anggap perkataan (X) sebagai aksara dalam jadual carian di atas dan aksara output (Y) sebagai ruang tunggal (" ") kerana tiada perkataan selepas yang pertama. Juga dikira ialah bilangan kali urutan ini muncul dalam set data, dalam kes ini 3 kali.
Ini menjana data untuk setiap perkataan dalam korpus, iaitu, semua kemungkinan pasangan X dan Y dijana.
Berikut ialah cara kami menjana jadual carian dalam kod:
def generateTable(data,k=4): T = {} for i in range(len(data)-k): X = data[i:i+k] Y = data[i+k] #print("X %s and Y %s "%(X,Y)) if T.get(X) is None: T[X] = {} T[X][Y] = 1 else: if T[X].get(Y) is None: T[X][Y] = 1 else: T[X][Y] += 1 return T T = generateTable("hello hello helli") print(T) #{'llo ': {'h': 2}, 'ello': {' ': 2}, 'o he': {'l': 2}, 'lo h': {'e': 2}, 'hell': {'i': 1, 'o': 2}, ' hel': {'l': 2}}
Penjelasan ringkas tentang kod:
Dalam baris 3, kamus dicipta yang akan menyimpan X dan nilai Y dan kekerapan yang sepadan. Baris 9 hingga 17 menyemak kemunculan X dan Y. Jika sudah ada pasangan X dan Y dalam kamus carian, cuma tambahkannya sebanyak 1.
2. Tukar kekerapan kepada kebarangkalian
Sebaik sahaja kita mempunyai jadual ini dan bilangan kejadian, kita boleh mendapatkan kebarangkalian bahawa Y berlaku selepas kejadian x. Formulanya ialah:
Sebagai contoh, jika X = the, Y = n, formula kita adalah seperti ini:
Apabila X =the Y = n Kekerapan: 2, jumlah kekerapan dalam jadual: 8, oleh itu: P = 2/8= 0.125= 12.5%
Berikut ialah cara kami menggunakan formula ini untuk menukar jadual carian kepada rantai Markov dengan kebarangkalian yang boleh digunakan:
def convertFreqIntoProb(T): for kx in T.keys(): s = float(sum(T[kx].values())) for k in T[kx].keys(): T[kx][k] = T[kx][k]/s return T T = convertFreqIntoProb(T) print(T) #{'llo ': {'h': 1.0}, 'ello': {' ': 1.0}, 'o he': {'l': 1.0}, 'lo h': {'e': 1.0}, 'hell': {'i': 0.3333333333333333, 'o': 0.6666666666666666}, ' hel': {'l': 1.0}}
Penjelasan ringkas:
Tambahkan nilai kekerapan kunci tertentu, dan kemudian bahagikan setiap nilai kekerapan kunci ini dengan nilai tambah untuk mendapatkan kebarangkalian.
3. Muatkan set data
Seterusnya, korpus latihan sebenar akan dimuatkan. Anda boleh menggunakan sebarang dokumen teks panjang (.txt) yang anda mahukan.
Untuk kesederhanaan ucapan politik akan digunakan untuk menyediakan perbendaharaan kata yang mencukupi untuk mengajar model kami.
text_path = "train_corpus.txt" def load_text(filename): with open(filename,encoding='utf8') as f: return f.read().lower() text = load_text(text_path) print('Loaded the dataset.')
Set data ini boleh menyediakan peristiwa yang mencukupi untuk projek sampel kami untuk membuat ramalan yang agak tepat. Seperti semua pembelajaran mesin, korpus latihan yang lebih besar akan menghasilkan ramalan yang lebih tepat.
4. Bina rantai Markov
Mari kita bina rantai Markov dan kaitkan kebarangkalian dengan setiap aksara. Fungsi generateTable() dan convertFreqIntoProb() yang dibuat dalam langkah 1 dan 2 akan digunakan di sini untuk membina model Markov.
def MarkovChain(text,k=4): T = generateTable(text,k) T = convertFreqIntoProb(T) return T model = MarkovChain(text)
Baris 1, mencipta kaedah untuk menjana model Markov. Kaedah ini menerima korpus teks dan nilai K, iaitu nilai yang memberitahu model Markov untuk mempertimbangkan aksara K dan meramalkan aksara seterusnya. Baris 2, jadual carian dijana dengan menyediakan korpus teks dan K kepada kaedah generateTable(), yang kami buat dalam bahagian sebelumnya. Baris 3 menukar frekuensi kepada nilai kebarangkalian menggunakan kaedah convertFreqIntoProb(), yang juga kami cipta dalam pelajaran sebelumnya.
5. Pensampelan Teks
Buat fungsi pensampelan yang menggunakan perkataan belum selesai (ctx), model rantai Markov (model) dalam langkah 4 dan asas untuk membentuk perkataan Bilangan aksara ( k).
Kami akan menggunakan fungsi ini untuk mencuba konteks yang diluluskan dan mengembalikan aksara yang mungkin seterusnya dan menentukan kebarangkalian bahawa ia adalah aksara yang betul.
import numpy as np def sample_next(ctx,model,k): ctx = ctx[-k:] if model.get(ctx) is None: return " " possible_Chars = list(model[ctx].keys()) possible_values = list(model[ctx].values()) print(possible_Chars) print(possible_values) return np.random.choice(possible_Chars,p=possible_values) sample_next("commo",model,4) #['n'] #[1.0]
Penjelasan kod:
Fungsi sample_next menerima tiga parameter: ctx, model dan nilai k.
ctx ialah teks yang digunakan untuk menjana beberapa teks baharu. Tetapi di sini hanya aksara K terakhir dalam ctx akan digunakan oleh model untuk meramalkan aksara seterusnya dalam jujukan. Sebagai contoh, kita lulus biasa, K = 4, dan teks yang model gunakan untuk menjana aksara seterusnya ialah ommo, kerana model Markov hanya menggunakan sejarah sebelumnya.
Pada baris 9 dan 10, aksara yang mungkin dan nilai kebarangkaliannya dicetak, kerana aksara ini juga terdapat dalam model kami. Kami mendapat watak ramalan seterusnya ialah n, dengan kebarangkalian 1.0. Memandangkan perkataan commo lebih berkemungkinan menjadi lebih biasa selepas menjana aksara seterusnya
pada baris 12, kami mengembalikan aksara berdasarkan nilai kebarangkalian yang dibincangkan di atas.
6. Hasilkan teks
Akhirnya gabungkan semua fungsi di atas untuk menghasilkan beberapa teks.
def generateText(starting_sent,k=4,maxLen=1000): sentence = starting_sent ctx = starting_sent[-k:] for ix in range(maxLen): next_prediction = sample_next(ctx,model,k) sentence += next_prediction ctx = sentence[-k:] return sentence print("Function Created Successfully!") text = generateText("dear",k=4,maxLen=2000) print(text)
Hasilnya adalah seperti berikut:
dear country brought new consciousness. i heartily great service of their lives, our country, many of tricoloring a color flag on their lives independence today.my devoted to be oppression of independence.these day the obc common many country, millions of oppression of massacrifice of indian whom everest. my dear country is not in the sevents went was demanding and nights by plowing in the message of the country is crossed, oppressed, women, to overcrowding for years of the south, it is like the ashok chakra of constitutional states crossed, deprived, oppressions of freedom, i bow my heart to proud of our country.my dear country, millions under to be a hundred years of the south, it is going their heroes.
Fungsi di atas menerima tiga parameter: perkataan permulaan teks yang dihasilkan, nilai K dan panjang aksara maksimum bagi teks yang diperlukan. Menjalankan kod akan menghasilkan teks 2000 aksara bermula dengan "sayang".
Walaupun ucapan ini mungkin tidak begitu masuk akal, kata-kata itu lengkap dan sering meniru pola yang biasa dalam perkataan.
Apa yang perlu dipelajari seterusnya
Ini ialah projek penjanaan teks mudah. Gunakan projek ini untuk mengetahui cara pemprosesan bahasa semula jadi dan rantai Markov berfungsi dalam tindakan, yang boleh anda gunakan semasa anda meneruskan perjalanan pembelajaran mendalam anda.
Artikel ini hanyalah untuk memperkenalkan projek percubaan yang dijalankan oleh rantaian Markov, kerana ia tidak akan memainkan sebarang peranan dalam aplikasi sebenar Jika anda ingin mendapatkan kesan penjanaan teks yang lebih baik, maka sila pelajari GPT- 3 alatan tersebut.
Atas ialah kandungan terperinci Membina penjana teks menggunakan rantai Markov. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas



Dalam bidang pembelajaran mesin dan sains data, kebolehtafsiran model sentiasa menjadi tumpuan penyelidik dan pengamal. Dengan aplikasi meluas model yang kompleks seperti kaedah pembelajaran mendalam dan ensemble, memahami proses membuat keputusan model menjadi sangat penting. AI|XAI yang boleh dijelaskan membantu membina kepercayaan dan keyakinan dalam model pembelajaran mesin dengan meningkatkan ketelusan model. Meningkatkan ketelusan model boleh dicapai melalui kaedah seperti penggunaan meluas pelbagai model yang kompleks, serta proses membuat keputusan yang digunakan untuk menerangkan model. Kaedah ini termasuk analisis kepentingan ciri, anggaran selang ramalan model, algoritma kebolehtafsiran tempatan, dsb. Analisis kepentingan ciri boleh menerangkan proses membuat keputusan model dengan menilai tahap pengaruh model ke atas ciri input. Anggaran selang ramalan model

Dalam istilah orang awam, model pembelajaran mesin ialah fungsi matematik yang memetakan data input kepada output yang diramalkan. Secara lebih khusus, model pembelajaran mesin ialah fungsi matematik yang melaraskan parameter model dengan belajar daripada data latihan untuk meminimumkan ralat antara output yang diramalkan dan label sebenar. Terdapat banyak model dalam pembelajaran mesin, seperti model regresi logistik, model pepohon keputusan, model mesin vektor sokongan, dll. Setiap model mempunyai jenis data dan jenis masalah yang berkenaan. Pada masa yang sama, terdapat banyak persamaan antara model yang berbeza, atau terdapat laluan tersembunyi untuk evolusi model. Mengambil perceptron penyambung sebagai contoh, dengan meningkatkan bilangan lapisan tersembunyi perceptron, kita boleh mengubahnya menjadi rangkaian neural yang mendalam. Jika fungsi kernel ditambah pada perceptron, ia boleh ditukar menjadi SVM. yang ini

Artikel ini akan memperkenalkan cara mengenal pasti pemasangan lampau dan kekurangan dalam model pembelajaran mesin secara berkesan melalui keluk pembelajaran. Underfitting dan overfitting 1. Overfitting Jika model terlampau latihan pada data sehingga ia mempelajari bunyi daripadanya, maka model tersebut dikatakan overfitting. Model yang dipasang terlebih dahulu mempelajari setiap contoh dengan sempurna sehingga ia akan salah mengklasifikasikan contoh yang tidak kelihatan/baharu. Untuk model terlampau, kami akan mendapat skor set latihan yang sempurna/hampir sempurna dan set pengesahan/skor ujian yang teruk. Diubah suai sedikit: "Punca overfitting: Gunakan model yang kompleks untuk menyelesaikan masalah mudah dan mengekstrak bunyi daripada data. Kerana set data kecil sebagai set latihan mungkin tidak mewakili perwakilan yang betul bagi semua data. 2. Underfitting Heru

Pada tahun 1950-an, kecerdasan buatan (AI) dilahirkan. Ketika itulah penyelidik mendapati bahawa mesin boleh melakukan tugas seperti manusia, seperti berfikir. Kemudian, pada tahun 1960-an, Jabatan Pertahanan A.S. membiayai kecerdasan buatan dan menubuhkan makmal untuk pembangunan selanjutnya. Penyelidik sedang mencari aplikasi untuk kecerdasan buatan dalam banyak bidang, seperti penerokaan angkasa lepas dan kelangsungan hidup dalam persekitaran yang melampau. Penerokaan angkasa lepas ialah kajian tentang alam semesta, yang meliputi seluruh alam semesta di luar bumi. Angkasa lepas diklasifikasikan sebagai persekitaran yang melampau kerana keadaannya berbeza daripada di Bumi. Untuk terus hidup di angkasa, banyak faktor mesti dipertimbangkan dan langkah berjaga-jaga mesti diambil. Para saintis dan penyelidik percaya bahawa meneroka ruang dan memahami keadaan semasa segala-galanya boleh membantu memahami cara alam semesta berfungsi dan bersedia untuk menghadapi kemungkinan krisis alam sekitar

Cabaran biasa yang dihadapi oleh algoritma pembelajaran mesin dalam C++ termasuk pengurusan memori, multi-threading, pengoptimuman prestasi dan kebolehselenggaraan. Penyelesaian termasuk menggunakan penunjuk pintar, perpustakaan benang moden, arahan SIMD dan perpustakaan pihak ketiga, serta mengikuti garis panduan gaya pengekodan dan menggunakan alat automasi. Kes praktikal menunjukkan cara menggunakan perpustakaan Eigen untuk melaksanakan algoritma regresi linear, mengurus memori dengan berkesan dan menggunakan operasi matriks berprestasi tinggi.

Penterjemah |. Disemak oleh Li Rui |. Chonglou Model kecerdasan buatan (AI) dan pembelajaran mesin (ML) semakin kompleks hari ini, dan output yang dihasilkan oleh model ini adalah kotak hitam – tidak dapat dijelaskan kepada pihak berkepentingan. AI Boleh Dijelaskan (XAI) bertujuan untuk menyelesaikan masalah ini dengan membolehkan pihak berkepentingan memahami cara model ini berfungsi, memastikan mereka memahami cara model ini sebenarnya membuat keputusan, dan memastikan ketelusan dalam sistem AI, Amanah dan akauntabiliti untuk menyelesaikan masalah ini. Artikel ini meneroka pelbagai teknik kecerdasan buatan (XAI) yang boleh dijelaskan untuk menggambarkan prinsip asasnya. Beberapa sebab mengapa AI boleh dijelaskan adalah penting Kepercayaan dan ketelusan: Untuk sistem AI diterima secara meluas dan dipercayai, pengguna perlu memahami cara keputusan dibuat

MetaFAIR bekerjasama dengan Harvard untuk menyediakan rangka kerja penyelidikan baharu untuk mengoptimumkan bias data yang dijana apabila pembelajaran mesin berskala besar dilakukan. Adalah diketahui bahawa latihan model bahasa besar sering mengambil masa berbulan-bulan dan menggunakan ratusan atau bahkan ribuan GPU. Mengambil model LLaMA270B sebagai contoh, latihannya memerlukan sejumlah 1,720,320 jam GPU. Melatih model besar memberikan cabaran sistemik yang unik disebabkan oleh skala dan kerumitan beban kerja ini. Baru-baru ini, banyak institusi telah melaporkan ketidakstabilan dalam proses latihan apabila melatih model AI generatif SOTA Mereka biasanya muncul dalam bentuk lonjakan kerugian Contohnya, model PaLM Google mengalami sehingga 20 lonjakan kerugian semasa proses latihan. Bias berangka adalah punca ketidaktepatan latihan ini,

Pembelajaran mesin ialah cabang penting kecerdasan buatan yang memberikan komputer keupayaan untuk belajar daripada data dan meningkatkan keupayaan mereka tanpa diprogramkan secara eksplisit. Pembelajaran mesin mempunyai pelbagai aplikasi dalam pelbagai bidang, daripada pengecaman imej dan pemprosesan bahasa semula jadi kepada sistem pengesyoran dan pengesanan penipuan, dan ia mengubah cara hidup kita. Terdapat banyak kaedah dan teori yang berbeza dalam bidang pembelajaran mesin, antaranya lima kaedah yang paling berpengaruh dipanggil "Lima Sekolah Pembelajaran Mesin". Lima sekolah utama ialah sekolah simbolik, sekolah sambungan, sekolah evolusi, sekolah Bayesian dan sekolah analogi. 1. Simbolisme, juga dikenali sebagai simbolisme, menekankan penggunaan simbol untuk penaakulan logik dan ekspresi pengetahuan. Aliran pemikiran ini percaya bahawa pembelajaran adalah proses penolakan terbalik, melalui sedia ada
