首頁  >  文章  >  後端開發  >  建立您自己的語言模型:Python 和 NumPy 的簡單指南

建立您自己的語言模型:Python 和 NumPy 的簡單指南

Patricia Arquette
Patricia Arquette原創
2024-10-19 08:10:30770瀏覽

Build Your Own Language Model: A Simple Guide with Python and NumPy

人工智慧如今無所不在,而語言模型是其中的重要組成部分。當 ChatGPT 推出時,您可能想知道人工智慧如何預測句子中的下一個單詞,甚至寫出整個段落。在本教程中,我們將建立一個超級簡單的語言模型,而不依賴 TensorFlow 或 PyTorch 等花哨的框架 - 只需簡單的 Python 和 NumPy。

在開始教學之前,讓我先解釋一下什麼是大語言模型(LLM)。

  • LLM 是經過大量文字資料訓練來理解和產生人類語言的人工智慧模型。
  • 這些法學碩士能夠完成回答問題、寫論文甚至進行對話等任務。本質上,法學碩士根據先前的單字來預測序列中的下一個單字。

在本教程中,我們將建立一個更簡單的版本 - 二元模型 -

聽起來很酷嗎?讓我們開始吧! ?

我們正在建設什麼:

我們將建立一個二元模型,它將讓您了解語言模型如何運作的基本概念。它根據當前單字預測句子中的下一個單字。我們將保持簡單易懂,這樣您就可以了解事情是如何運作的,而不會陷入太多細節。 ??


第 1 步:設定

在開始之前,讓我們確保您已準備好 Python 和 NumPy。如果您尚未安裝 NumPy,請使用以下命令快速安裝:

pip install numpy

第 2 步:了解基礎知識

語言模型預測句子中的下一個單字。我們將讓事情變得簡單並建立一個二元模型。這僅意味著我們的模型將僅使用當前單字來預測下一個單字。

我們將從一段簡短的文字開始來訓練模型。這是我們將要使用的小樣本:

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."""

第三步:準備文本

首先,我們需要將這段文本分解為單獨的單字並創建一個詞彙表(基本上是所有獨特單字的清單)。這給了我們一些可以利用的東西。

# 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}")

在這裡,我們將文字轉換為小寫並將其拆分為單字。之後,我們建立一個獨特單字清單作為我們的詞彙表。

第 4 步:將單字映射到數字

計算機處理的是數字,而不是文字。因此,我們將每個單字映射到索引,並創建一個反向映射(這將有助於我們稍後將它們轉換回單字)。

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]

基本上,我們只是將單字轉換為我們的模型可以理解的數字。每個單字都有自己的編號,例如「AI」可能會變成 0,「learning」可能會變成 1,取決於順序。

第 5 步:建構模型

現在,讓我們進入核心:建立二元模型。我們想要計算出一個單字出現在另一個單字之後的機率。為此,我們將計算每個單字對(二元組)在資料集中出現的頻率。

pip install numpy

這是發生的事情:

我們正在計算每個單字跟隨另一個單字的頻率(即二元組)。
然後,我們透過標準化將這些計數轉換為機率。
簡單來說,這意味著如果“AI”後面經常跟著“is”,那麼該對的機率會更高。

第 6 步:預測下一個單字

現在讓我們測試我們的模型,讓它根據任何給定的單字預測下一個單字。我們透過從下一個單字的機率分佈中採樣來做到這一點。

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."""

函數接受一個單詞,找出其機率,並根據這些機率隨機選擇下一個單字。如果您傳入“AI”,模型可能會預測類似“is”的內容作為下一個單字。

第 7 步:產生一個句子

最後,讓我們產生一個完整的句子!我們將從一個單字開始,並不斷預測下一個單字幾次。

# 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}")

函數採用一個初始單字並預測下一個單詞,然後使用該單字來預測下一個單詞,依此類推。不知不覺中,你已經得到了一個完整的句子!

總結

現在你已經有了它——一個僅使用 Python 和 NumPy 從頭開始建立的簡單二元語言模型。我們沒有使用任何花俏的函式庫,現在您已經對人工智慧如何預測文字有了基本的了解。您可以使用此程式碼,為其提供不同的文本,甚至使用更高級的模型來擴展它。

嘗試一下,然後告訴我效果如何。快樂編碼!

以上是建立您自己的語言模型:Python 和 NumPy 的簡單指南的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn