构建您自己的语言模型:Python 和 NumPy 的简单指南

Patricia Arquette
发布: 2024-10-19 08:10:30
原创
768 人浏览过

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中文网其他相关文章!

来源:dev.to
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!