Kecerdasan Buatan ada di mana-mana pada masa kini, dan model bahasa adalah sebahagian besar daripada itu. Apabila ChatGPT diperkenalkan, anda mungkin tertanya-tanya bagaimana AI boleh meramalkan perkataan seterusnya dalam ayat atau menulis keseluruhan perenggan. Dalam tutorial ini, kami akan membina model bahasa yang sangat mudah tanpa bergantung pada rangka kerja mewah seperti TensorFlow atau PyTorch—hanya Python dan NumPy biasa.
Sebelum saya memulakan tutorial, izinkan saya menerangkan apa itu model bahasa besar (LLM).
Dalam tutorial ini, kami mencipta versi yang lebih mudah ini—model bigram—kepada
Nampak bagus? Jom mulakan!?
Kami akan mencipta model bigram, yang akan memberi anda idea asas tentang cara model bahasa berfungsi. Ia meramalkan perkataan seterusnya dalam ayat berdasarkan perkataan semasa. Kami akan memastikannya terus terang dan mudah untuk diikuti supaya anda akan mempelajari cara sesuatu berfungsi tanpa terkubur dengan terlalu terperinci.??
Sebelum kita bermula, mari pastikan anda mempunyai Python dan NumPy sedia untuk digunakan. Jika anda belum memasang NumPy, pasangkannya dengan cepat dengan:
pip install numpy
Model bahasa meramalkan perkataan seterusnya dalam ayat. Kami akan memastikan perkara mudah dan membina model bigram. Ini bermakna model kami akan meramalkan perkataan seterusnya hanya menggunakan perkataan semasa.
Kita akan mulakan dengan teks pendek untuk melatih model. Berikut ialah sampel kecil yang akan kami gunakan:
import numpy as np # Sample dataset: A small text corpus corpus = """Artificial Intelligence is the new electricity. Machine learning is the future of AI. AI is transforming industries and shaping the future."""
Perkara pertama dahulu, kita perlu memecahkan teks ini kepada perkataan individu dan mencipta perbendaharaan kata (pada asasnya senarai semua perkataan unik). Ini memberi kita sesuatu untuk diusahakan.
# Tokenize the corpus into words words = corpus.lower().split() # Create a vocabulary of unique words vocab = list(set(words)) vocab_size = len(vocab) print(f"Vocabulary: {vocab}") print(f"Vocabulary size: {vocab_size}")
Di sini, kami menukar teks kepada huruf kecil dan membahagikannya kepada perkataan. Selepas itu, kami membuat senarai perkataan unik untuk dijadikan sebagai perbendaharaan kata kami.
Komputer berfungsi dengan nombor, bukan perkataan. Jadi, kami akan memetakan setiap perkataan kepada indeks dan membuat pemetaan terbalik juga (ini akan membantu apabila kami menukarnya kembali kepada perkataan kemudian).
word_to_idx = {word: idx for idx, word in enumerate(vocab)} idx_to_word = {idx: word for word, idx in word_to_idx.items()} # Convert the words in the corpus to indices corpus_indices = [word_to_idx[word] for word in words]
Pada asasnya, kami hanya menukar perkataan kepada nombor yang boleh difahami oleh model kami. Setiap perkataan mendapat nombornya sendiri, seperti "AI" mungkin menjadi 0 dan "pembelajaran" mungkin menjadi 1, bergantung pada susunan.
Sekarang, mari kita ke intinya: membina model bigram. Kami ingin mengetahui kebarangkalian satu perkataan mengikuti yang lain. Untuk berbuat demikian, kami akan mengira kekerapan setiap pasangan perkataan (bigram) muncul dalam set data kami.
pip install numpy
Berikut ialah perkara yang berlaku:
Kami mengira kekerapan setiap perkataan mengikut perkataan lain (itu bigram).
Kemudian, kami menukar kiraan tersebut kepada kebarangkalian dengan menormalkannya.
Secara ringkas, ini bermakna jika "AI" sering diikuti dengan "adalah", kebarangkalian untuk pasangan itu akan lebih tinggi.
Mari kita uji model kita dengan menjadikannya meramalkan perkataan seterusnya berdasarkan mana-mana perkataan tertentu. Kami melakukan ini dengan mengambil sampel daripada taburan kebarangkalian perkataan seterusnya.
import numpy as np # Sample dataset: A small text corpus corpus = """Artificial Intelligence is the new electricity. Machine learning is the future of AI. AI is transforming industries and shaping the future."""
Fungsi ini mengambil perkataan, mencari kebarangkaliannya dan memilih perkataan seterusnya secara rawak berdasarkan kebarangkalian tersebut. Jika anda lulus dalam "AI", model mungkin meramalkan sesuatu seperti "adalah" sebagai perkataan seterusnya.
Akhir sekali, mari kita hasilkan ayat keseluruhan! Kami akan mulakan dengan perkataan dan terus meramalkan perkataan seterusnya beberapa kali.
# Tokenize the corpus into words words = corpus.lower().split() # Create a vocabulary of unique words vocab = list(set(words)) vocab_size = len(vocab) print(f"Vocabulary: {vocab}") print(f"Vocabulary size: {vocab_size}")
Fungsi ini mengambil perkataan awal dan meramalkan perkataan seterusnya, kemudian menggunakan perkataan itu untuk meramalkan perkataan berikut, dan seterusnya. Sebelum anda sedar, anda mempunyai ayat penuh!
Begitulah—model bahasa bigram ringkas yang dibina dari awal hanya menggunakan Python dan NumPy. Kami tidak menggunakan mana-mana perpustakaan mewah, dan anda kini mempunyai pemahaman asas tentang cara AI boleh meramalkan teks. Anda boleh bermain-main dengan kod ini, memberinya teks yang berbeza atau mengembangkannya dengan menggunakan model yang lebih maju.
Cubalah, dan beritahu saya bagaimana ia berlaku. Selamat mengekod!
Atas ialah kandungan terperinci Bina Model Bahasa Anda Sendiri: Panduan Mudah dengan Python dan NumPy. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!