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!
![Tidak boleh menggunakan chatgpt! Menjelaskan sebab dan penyelesaian yang boleh diuji dengan segera [terbaru 2025]](https://img.php.cn/upload/article/001/242/473/174717025174979.jpg?x-oss-process=image/resize,p_40)
Chatgpt tidak boleh diakses? Artikel ini menyediakan pelbagai penyelesaian praktikal! Ramai pengguna mungkin menghadapi masalah seperti tidak dapat diakses atau tindak balas yang perlahan apabila menggunakan chatgpt setiap hari. Artikel ini akan membimbing anda untuk menyelesaikan masalah ini langkah demi langkah berdasarkan situasi yang berbeza. Punca ketidakmampuan dan penyelesaian masalah awal Chatgpt Pertama, kita perlu menentukan sama ada masalah itu berada di sisi pelayan Openai, atau masalah rangkaian atau peranti pengguna sendiri. Sila ikuti langkah di bawah untuk menyelesaikan masalah: Langkah 1: Periksa status rasmi Openai Lawati halaman Status Openai (status.openai.com) untuk melihat sama ada perkhidmatan ChATGPT berjalan secara normal. Sekiranya penggera merah atau kuning dipaparkan, ini bermakna terbuka

Pada 10 Mei 2025, ahli fizik MIT Max Tegmark memberitahu The Guardian bahawa AI Labs harus mencontohi kalkulus ujian triniti Oppenheimer sebelum melepaskan kecerdasan super buatan. "Penilaian saya ialah 'Compton Constant', kebarangkalian perlumbaan

Teknologi penciptaan muzik AI berubah dengan setiap hari berlalu. Artikel ini akan menggunakan model AI seperti CHATGPT sebagai contoh untuk menerangkan secara terperinci bagaimana menggunakan AI untuk membantu penciptaan muzik, dan menerangkannya dengan kes -kes sebenar. Kami akan memperkenalkan bagaimana untuk membuat muzik melalui Sunoai, AI Jukebox pada muka yang memeluk, dan perpustakaan Python Music21. Dengan teknologi ini, semua orang boleh membuat muzik asli dengan mudah. Walau bagaimanapun, perlu diperhatikan bahawa isu hak cipta kandungan AI yang dihasilkan tidak boleh diabaikan, dan anda mesti berhati-hati apabila menggunakannya. Mari kita meneroka kemungkinan AI yang tidak terhingga dalam bidang muzik bersama -sama! Ejen AI terbaru Terbuka "Openai Deep Research" memperkenalkan: [Chatgpt] Ope

Kemunculan CHATGPT-4 telah memperluaskan kemungkinan aplikasi AI. Berbanding dengan GPT-3.5, CHATGPT-4 telah meningkat dengan ketara. Ia mempunyai keupayaan pemahaman konteks yang kuat dan juga dapat mengenali dan menghasilkan imej. Ia adalah pembantu AI sejagat. Ia telah menunjukkan potensi yang besar dalam banyak bidang seperti meningkatkan kecekapan perniagaan dan membantu penciptaan. Walau bagaimanapun, pada masa yang sama, kita juga harus memberi perhatian kepada langkah berjaga -jaga dalam penggunaannya. Artikel ini akan menerangkan ciri-ciri CHATGPT-4 secara terperinci dan memperkenalkan kaedah penggunaan yang berkesan untuk senario yang berbeza. Artikel ini mengandungi kemahiran untuk memanfaatkan sepenuhnya teknologi AI terkini, sila rujuknya. Ejen AI Terbuka Terbuka, sila klik pautan di bawah untuk butiran "Penyelidikan Deep Openai"

App ChatGPT: Melepaskan kreativiti anda dengan pembantu AI! Panduan pemula Aplikasi CHATGPT adalah pembantu AI yang inovatif yang mengendalikan pelbagai tugas, termasuk menulis, terjemahan, dan menjawab soalan. Ia adalah alat dengan kemungkinan tidak berkesudahan yang berguna untuk aktiviti kreatif dan pengumpulan maklumat. Dalam artikel ini, kami akan menerangkan dengan cara yang mudah difahami untuk pemula, dari cara memasang aplikasi telefon pintar ChATGPT, kepada ciri-ciri yang unik untuk aplikasi seperti fungsi input suara dan plugin, serta mata yang perlu diingat apabila menggunakan aplikasi. Kami juga akan melihat dengan lebih dekat sekatan plugin dan penyegerakan konfigurasi peranti-ke-peranti

Chatgpt Versi Cina: Buka kunci pengalaman baru dialog Cina AI Chatgpt popular di seluruh dunia, adakah anda tahu ia juga menawarkan versi Cina? Alat AI yang kuat ini bukan sahaja menyokong perbualan harian, tetapi juga mengendalikan kandungan profesional dan serasi dengan Cina yang mudah dan tradisional. Sama ada pengguna di China atau rakan yang belajar bahasa Cina, anda boleh mendapat manfaat daripadanya. Artikel ini akan memperkenalkan secara terperinci bagaimana menggunakan versi CHATGPT Cina, termasuk tetapan akaun, input perkataan Cina, penggunaan penapis, dan pemilihan pakej yang berbeza, dan menganalisis potensi risiko dan strategi tindak balas. Di samping itu, kami juga akan membandingkan versi CHATGPT Cina dengan alat AI Cina yang lain untuk membantu anda memahami lebih baik kelebihan dan senario aplikasinya. Perisikan AI Terbuka Terbuka

Ini boleh dianggap sebagai lonjakan seterusnya ke hadapan dalam bidang AI generatif, yang memberi kita chatgpt dan chatbots model bahasa besar yang lain. Daripada hanya menjawab soalan atau menghasilkan maklumat, mereka boleh mengambil tindakan bagi pihak kami, Inter

Teknik pengurusan akaun berganda yang cekap menggunakan CHATGPT | Penjelasan menyeluruh tentang cara menggunakan perniagaan dan kehidupan peribadi! ChatGPT digunakan dalam pelbagai situasi, tetapi sesetengah orang mungkin bimbang untuk menguruskan pelbagai akaun. Artikel ini akan menerangkan secara terperinci bagaimana untuk membuat pelbagai akaun untuk chatgpt, apa yang perlu dilakukan apabila menggunakannya, dan bagaimana untuk mengendalikannya dengan selamat dan cekap. Kami juga meliputi perkara penting seperti perbezaan dalam perniagaan dan penggunaan peribadi, dan mematuhi syarat penggunaan OpenAI, dan memberikan panduan untuk membantu anda menggunakan pelbagai akaun. Terbuka


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

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

Muat turun versi mac editor Atom
Editor sumber terbuka yang paling popular

SublimeText3 versi Inggeris
Disyorkan: Versi Win, menyokong gesaan kod!

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

mPDF
mPDF ialah perpustakaan PHP yang boleh menjana fail PDF daripada HTML yang dikodkan UTF-8. Pengarang asal, Ian Back, menulis mPDF untuk mengeluarkan fail PDF "dengan cepat" dari tapak webnya dan mengendalikan bahasa yang berbeza. Ia lebih perlahan dan menghasilkan fail yang lebih besar apabila menggunakan fon Unicode daripada skrip asal seperti HTML2FPDF, tetapi menyokong gaya CSS dsb. dan mempunyai banyak peningkatan. Menyokong hampir semua bahasa, termasuk RTL (Arab dan Ibrani) dan CJK (Cina, Jepun dan Korea). Menyokong elemen peringkat blok bersarang (seperti P, DIV),

Dreamweaver Mac版
Alat pembangunan web visual
