ホームページ >バックエンド開発 >Python チュートリアル >独自の言語モデルを構築する: Python と NumPy を使用した簡単なガイド
今日、人工知能はどこにでもあり、言語モデルはその大きな部分を占めています。 ChatGPT が導入されたとき、AI が文内の次の単語をどのように予測したり、段落全体を記述したりできるのか疑問に思ったかもしれません。このチュートリアルでは、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、「学習」は 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 だけを使用してゼロから構築されたシンプルなバイグラム言語モデルが完成しました。派手なライブラリは使用しませんでした。これで、AI がテキストを予測する方法について基本的に理解できました。このコードを試してみたり、別のテキストを入力したり、より高度なモデルを使用して拡張したりすることもできます。
試してみて、どうなるか教えてください。コーディングを楽しんでください!
以上が独自の言語モデルを構築する: Python と NumPy を使用した簡単なガイドの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。