人工智能如今无处不在,而语言模型是其中的重要组成部分。当 ChatGPT 推出时,您可能想知道人工智能如何预测句子中的下一个单词,甚至写出整个段落。在本教程中,我们将构建一个超级简单的语言模型,而不依赖于 TensorFlow 或 PyTorch 等花哨的框架 - 只需简单的 Python 和 NumPy。
在开始教程之前,让我解释一下什么是大语言模型(LLM)。
在本教程中,我们将创建一个更简单的版本 - 二元模型 -
听起来很酷吗?让我们开始吧!?
我们将创建一个二元模型,它将让您了解语言模型如何工作的基本概念。它根据当前单词预测句子中的下一个单词。我们将保持简单易懂,这样您就可以了解事情是如何运作的,而不会陷入太多细节。??
在开始之前,让我们确保您已准备好 Python 和 NumPy。如果您尚未安装 NumPy,请使用以下命令快速安装:
pip install numpy
语言模型预测句子中的下一个单词。我们将让事情变得简单并构建一个二元模型。这仅意味着我们的模型将仅使用当前单词来预测下一个单词。
我们将从一段简短的文本开始来训练模型。这是我们将使用的一个小样本:
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}")
在这里,我们将文本转换为小写并将其拆分为单词。之后,我们创建一个独特单词列表作为我们的词汇表。
计算机处理的是数字,而不是文字。因此,我们将每个单词映射到一个索引,并创建一个反向映射(这将有助于我们稍后将它们转换回单词)。
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,具体取决于顺序。
现在,让我们进入核心:构建二元模型。我们想要计算出一个单词出现在另一个单词之后的概率。为此,我们将计算每个单词对(二元组)在数据集中出现的频率。
pip install numpy
这是发生的事情:
我们正在计算每个单词跟随另一个单词的频率(即二元组)。
然后,我们通过标准化将这些计数转化为概率。
简单来说,这意味着如果“AI”后面经常跟“is”,那么该对的概率会更高。
现在让我们测试我们的模型,让它根据任何给定的单词预测下一个单词。我们通过从下一个单词的概率分布中采样来做到这一点。
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”的内容作为下一个单词。
最后,让我们生成一个完整的句子!我们将从一个单词开始,并不断预测下一个单词几次。
# 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中文网其他相关文章!