この記事では、人気の機械学習プロジェクトであるテキスト ジェネレーターを紹介します。テキスト ジェネレーターを構築する方法と、より高速な予測モデルを実現するためのマルコフ連鎖の実装方法を学びます。
テキスト ジェネレーターの概要
テキスト生成は、あらゆる業界、特にモバイル、アプリ、データ サイエンスの分野で人気があります。報道機関でも、執筆プロセスを支援するためにテキスト生成を使用しています。
日常生活では、いくつかのテキスト生成テクノロジに触れることがあります。テキスト補完、検索候補、スマート作成、チャット ロボットなどはすべてアプリケーションの例です。
この記事ではマルコフを使用します。テキストジェネレーターを構築するためのチェーン。これは、チェーンの前の文字を取得し、シーケンス内の次の文字を生成する文字ベースのモデルになります。
例の単語を使用してプログラムをトレーニングすることにより、テキスト ジェネレーターは一般的な文字の順序パターンを学習します。次に、テキスト ジェネレーターはこれらのパターンを不完全な単語である入力に適用し、単語を完成させる可能性が最も高い文字を出力します。
#テキスト生成は、以前に観察された言語パターンに基づいて次の文字を予測して生成する自然言語処理の分野です。
機械学習の前に、NLP は英語のすべての単語を含むテーブルを作成し、渡された文字列を既存の単語と照合することでテキスト生成を実行していました。このアプローチには 2 つの問題があります。
- 何千もの単語を検索すると、非常に時間がかかります。
- ジェネレーターは、以前に見たことのある単語のみを完成させることができます。
機械学習と深層学習の出現により、ジェネレーターがこれまでに遭遇したことのない単語を完成させることができるため、実行時間が大幅に短縮され、NLP の汎用性が向上しました。 NLP は、必要に応じて単語、フレーズ、文を予測するように拡張できます!
このプロジェクトでは、マルコフ連鎖のみを使用して実行します。マルコフ プロセスは、書き言葉や複雑な分布からのサンプルのシミュレーションを含む多くの自然言語処理プロジェクトの基礎です。
マルコフ プロセスは非常に強力であるため、サンプル ドキュメントだけを使用して、一見本物のように見えるテキストを生成することができます。
マルコフ連鎖とは何ですか?
マルコフ連鎖は、各イベントの確率が前のイベントの状態に依存する一連のイベントをモデル化する確率過程です。モデルには有限の状態セットがあり、ある状態から別の状態に移行する条件付き確率は固定されています。
各遷移の確率は、イベントの履歴全体ではなく、モデルの以前の状態にのみ依存します。
たとえば、天気を予測するためにマルコフ連鎖モデルを構築するとします。
このモデルには、晴れまたは雨の 2 つの状態があります。今日晴れた日であれば、明日は晴れる可能性が高くなります (70%)。雨も同様で、一度雨が降った場合は、さらに雨が降り続ける可能性があります。
しかし、天候によって状態が変化する可能性 (30%) があるため、それもマルコフ連鎖モデルに含めます。
マルコフ連鎖は、前の文字のみを使用して次の文字を予測するため、テキスト ジェネレーターに最適なモデルです。マルコフ連鎖を使用する利点は、正確で、必要なメモリが少なく (前の状態が 1 つだけ保存される)、実行が速いことです。
テキスト生成の実装
テキストジェネレーターは6つのステップで完成します:
- ルックアップテーブルの生成:単語の出現頻度を記録するテーブルを作成します
- 頻度を確率に変換する: 調査結果を使用可能な形式に変換する
- データセットをロードする: トレーニング セットをロードして利用する
- マルコフ連鎖を構築する: 各単語および文字作成連鎖に確率を使用する
- データをサンプリングする: コーパスのさまざまな部分をサンプリングする関数を作成する
- テキストを生成する: モデルをテストする
1ルックアップ テーブルの生成
まず、トレーニング コーパス内の各文字状態の出現を記録するテーブルを作成します。トレーニング コーパスから最後の「K」文字と「K1」文字を保存し、ルックアップ テーブルに保存します。
たとえば、トレーニング コーパスに「the man was, they, then, the, the」が含まれていると想像してください。この場合、単語の出現数は次のようになります。
- #"the" — 3
- "then" — 1
- "they" — 1
- " man" — 1
ルックアップ テーブルの結果は次のとおりです:
上記の例では、K = 3 とします。これは、一度に 3 文字が考慮され、次の文字 (K 1) が出力として使用されることを意味します。キャラクター。最初の the の後に単語がないため、単語 (X) を上記のルックアップ テーブル内の文字として扱い、出力文字 (Y) を単一のスペース (" ") として扱います。また、このシーケンスがデータ セット内に出現する回数 (この場合は 3 回) も計算されます。
これにより、コーパス内の各単語のデータが生成されます。つまり、考えられるすべての X と Y のペアが生成されます。
コード内でルックアップ テーブルを生成する方法は次のとおりです:
def generateTable(data,k=4): T = {} for i in range(len(data)-k): X = data[i:i+k] Y = data[i+k] #print("X %s and Y %s "%(X,Y)) if T.get(X) is None: T[X] = {} T[X][Y] = 1 else: if T[X].get(Y) is None: T[X][Y] = 1 else: T[X][Y] += 1 return T T = generateTable("hello hello helli") print(T) #{'llo ': {'h': 2}, 'ello': {' ': 2}, 'o he': {'l': 2}, 'lo h': {'e': 2}, 'hell': {'i': 1, 'o': 2}, ' hel': {'l': 2}}
コードの簡単な説明:
3 行目で、X とその値を格納する辞書が作成されます。対応する Y 値と周波数値。行 9 から 17 は、X と Y の出現をチェックします。ルックアップ辞書にすでに X と Y のペアがある場合は、それを 1 だけ増やします。
2. 頻度を確率に変換する
このテーブルと出現回数を取得したら、特定の x の出現後に Y が出現する確率を取得できます。式は次のとおりです:
たとえば、X = the、Y = n の場合、式は次のようになります:
X =the Y = n の場合頻度: 2、テーブル内の合計頻度: 8、したがって: P = 2/8= 0.125= 12.5%
この式を適用してルックアップ テーブルを使用可能な確率を持つマルコフ連鎖に変換する方法を次に示します。
def convertFreqIntoProb(T): for kx in T.keys(): s = float(sum(T[kx].values())) for k in T[kx].keys(): T[kx][k] = T[kx][k]/s return T T = convertFreqIntoProb(T) print(T) #{'llo ': {'h': 1.0}, 'ello': {' ': 1.0}, 'o he': {'l': 1.0}, 'lo h': {'e': 1.0}, 'hell': {'i': 0.3333333333333333, 'o': 0.6666666666666666}, ' hel': {'l': 1.0}}
簡単な説明:
特定のキーの頻度値を加算し、このキーの各頻度値を加算した値で除算して確率を取得します。
3. データセットをロードします
次に実際のトレーニング コーパスがロードされます。任意の長いテキスト (.txt) ドキュメントを使用できます。
わかりやすくするために、モデルを教えるのに十分な語彙を提供するために政治的演説が使用されます。
text_path = "train_corpus.txt" def load_text(filename): with open(filename,encoding='utf8') as f: return f.read().lower() text = load_text(text_path) print('Loaded the dataset.')
このデータ セットは、サンプル プロジェクトがかなり正確な予測を行うのに十分なイベントを提供できます。すべての機械学習と同様、トレーニング コーパスが大きいほど、より正確な予測が生成されます。
4. マルコフ連鎖を構築する
マルコフ連鎖を構築し、確率を各文字に関連付けましょう。ここでは、手順 1 と 2 で作成したgenerateTable() 関数とconvertFreqIntoProb() 関数を使用してマルコフ モデルを構築します。
def MarkovChain(text,k=4): T = generateTable(text,k) T = convertFreqIntoProb(T) return T model = MarkovChain(text)
1 行目では、マルコフ モデルを生成するメソッドが作成されます。このメソッドは、テキスト コーパスと K 値を受け入れます。K 値は、マルコフ モデルに K 文字を考慮して次の文字を予測するように指示する値です。 2 行目、ルックアップ テーブルは、前のセクションで作成したメソッドgenerateTable() にテキスト コーパスと K を提供することによって生成されます。 3 行目では、convertFreqIntoProb() メソッドを使用して周波数を確率値に変換します。このメソッドも前のレッスンで作成しました。
5. テキスト サンプリング
未完成の単語 (ctx)、ステップ 4 のマルコフ連鎖モデル (モデル)、および単語を形成するためのベースを使用するサンプリング関数を作成します文字数(k)。
この関数を使用して、渡されたコンテキストをサンプリングし、次に考えられる文字を返し、それが正しい文字である確率を判断します。
import numpy as np def sample_next(ctx,model,k): ctx = ctx[-k:] if model.get(ctx) is None: return " " possible_Chars = list(model[ctx].keys()) possible_values = list(model[ctx].values()) print(possible_Chars) print(possible_values) return np.random.choice(possible_Chars,p=possible_values) sample_next("commo",model,4) #['n'] #[1.0]
コードの説明:
関数sample_nextは、ctx、model、k値の3つのパラメータを受け取ります。
ctx は、新しいテキストを生成するために使用されるテキストです。ただし、ここでは、ctx の最後の K 文字のみが、シーケンス内の次の文字を予測するためにモデルによって使用されます。たとえば、common、K = 4 を渡します。マルコフ モデルは前の履歴のみを使用するため、モデルが次の文字を生成するために使用するテキストは ommo です。
行 9 と 10 には、使用可能な文字とその確率値が出力されます。これらの文字はモデルにも存在するためです。次に予測される文字は n であり、確率は 1.0 です。 12 行目で次の文字
を生成した後は、commo という単語がより一般的になる可能性が高いため、上で説明した確率値に基づいて文字を返します。
6. テキストの生成
最後に、上記の関数をすべて組み合わせてテキストを生成します。
def generateText(starting_sent,k=4,maxLen=1000): sentence = starting_sent ctx = starting_sent[-k:] for ix in range(maxLen): next_prediction = sample_next(ctx,model,k) sentence += next_prediction ctx = sentence[-k:] return sentence print("Function Created Successfully!") text = generateText("dear",k=4,maxLen=2000) print(text)
結果は次のとおりです:
dear country brought new consciousness. i heartily great service of their lives, our country, many of tricoloring a color flag on their lives independence today.my devoted to be oppression of independence.these day the obc common many country, millions of oppression of massacrifice of indian whom everest. my dear country is not in the sevents went was demanding and nights by plowing in the message of the country is crossed, oppressed, women, to overcrowding for years of the south, it is like the ashok chakra of constitutional states crossed, deprived, oppressions of freedom, i bow my heart to proud of our country.my dear country, millions under to be a hundred years of the south, it is going their heroes.
上記の関数は、生成されるテキストの開始単語、K の値、および必要なテキストの最大文字長という 3 つのパラメーターを受け取ります。コードを実行すると、「dear」で始まる 2000 文字のテキストが生成されます。
このスピーチはあまり意味をなさないかもしれませんが、言葉は完全であり、よく知られた言葉のパターンを模倣していることがよくあります。
次に学ぶべきこと
これは、単純なテキスト生成プロジェクトです。このプロジェクトを使用して、自然言語処理とマルコフ連鎖が実際にどのように機能するかを学び、深層学習の取り組みを続けるときに使用できます。
この記事はマルコフ連鎖による実験プロジェクトを紹介するだけであり、実際のアプリケーションでは何の役にも立ちませんので、より良いテキスト生成効果を得たい場合は、GPT-3 などのツールを学習してください。 。
以上がマルコフ連鎖を使用したテキストジェネレーターの構築の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ChatGptはアクセスできませんか?この記事では、さまざまな実用的なソリューションを提供しています!多くのユーザーは、ChatGPTを毎日使用する場合、アクセス不能や応答が遅いなどの問題に遭遇する可能性があります。この記事では、さまざまな状況に基づいてこれらの問題を段階的に解決するように導きます。 ChatGPTのアクセス不能性と予備的なトラブルシューティングの原因 まず、問題がOpenaiサーバー側にあるのか、ユーザー自身のネットワークまたはデバイスの問題にあるのかを判断する必要があります。 以下の手順に従って、トラブルシューティングしてください。 ステップ1:OpenAIの公式ステータスを確認してください OpenAIステータスページ(status.openai.com)にアクセスして、ChatGPTサービスが正常に実行されているかどうかを確認してください。赤または黄色のアラームが表示されている場合、それは開くことを意味します

2025年5月10日、MIT物理学者のMax Tegmarkは、AI Labsが人工的なスーパーインテリジェンスを解放する前にOppenheimerの三位一体計算をエミュレートすべきだとGuardianに語った。 「私の評価では、「コンプトン定数」、競争が

AI Music Creation Technologyは、1日ごとに変化しています。この記事では、ChatGPTなどのAIモデルを例として使用して、AIを使用して音楽の作成を支援し、実際のケースで説明する方法を詳細に説明します。 Sunoai、Hugging Face、PythonのMusic21 Libraryを通じて音楽を作成する方法を紹介します。 これらのテクノロジーを使用すると、誰もがオリジナルの音楽を簡単に作成できます。ただし、AIに生成されたコンテンツの著作権問題は無視できないことに注意する必要があります。使用する際には注意する必要があります。 音楽分野でのAIの無限の可能性を一緒に探りましょう! Openaiの最新のAIエージェント「Openai Deep Research」が紹介します。 [chatgpt] ope

ChATGPT-4の出現により、AIアプリケーションの可能性が大幅に拡大しました。 GPT-3.5と比較して、CHATGPT-4は大幅に改善されました。強力なコンテキスト理解能力を備えており、画像を認識して生成することもできます。普遍的なAIアシスタントです。それは、ビジネス効率の改善や創造の支援など、多くの分野で大きな可能性を示しています。ただし、同時に、その使用における予防策にも注意を払わなければなりません。 この記事では、ChATGPT-4の特性を詳細に説明し、さまざまなシナリオの効果的な使用方法を紹介します。この記事には、最新のAIテクノロジーを最大限に活用するためのスキルが含まれています。参照してください。 Openaiの最新のAIエージェント、「Openai Deep Research」の詳細については、以下のリンクをクリックしてください

ChatGPTアプリ:AIアシスタントで創造性を解き放つ!初心者向けガイド ChatGPTアプリは、文章作成、翻訳、質問応答など、多様なタスクに対応する革新的なAIアシスタントです。創作活動や情報収集にも役立つ、無限の可能性を秘めたツールです。 この記事では、ChatGPTスマホアプリのインストール方法から、音声入力機能やプラグインといったアプリならではの機能、そしてアプリ利用上の注意点まで、初心者にも分かりやすく解説します。プラグインの制限やデバイス間の設定同期についてもしっかりと触れていきま

Chatgpt中国語版:中国語のAIの対話の新しい体験のロックを解除する ChatGptは世界中で人気がありますが、中国語版も提供していることをご存知ですか?この強力なAIツールは、毎日の会話をサポートするだけでなく、プロのコンテンツを処理し、簡素化された伝統的な中国語と互換性があります。中国のユーザーであろうと、中国語を学んでいる友人であろうと、あなたはそれから利益を得ることができます。 この記事では、アカウント設定、中国語の迅速な単語入力、フィルターの使用、さまざまなパッケージの選択を含むChatGpt中国語のバージョンの使用方法を詳細に紹介し、潜在的なリスクと対応戦略を分析します。さらに、ChatGpt中国語版を他の中国のAIツールと比較して、その利点とアプリケーションシナリオをよりよく理解するのに役立ちます。 Openaiの最新のAIインテリジェンス

これらは、生成AIの分野で次の飛躍と考えることができ、ChatGptやその他の大規模なモデルのチャットボットを提供しました。単に質問に答えたり情報を生成したりするのではなく、彼らは私たちに代わって行動を起こすことができます。

ChatGPTを活用した効率的な複数アカウント管理術|ビジネスとプライベートの使い分けも徹底解説! 様々な場面で活用されているChatGPTですが、複数アカウントの管理に頭を悩ませている方もいるのではないでしょうか。この記事では、ChatGPTの複数アカウント作成方法、利用上の注意点、そして安全かつ効率的な運用方法を詳しく解説します。ビジネス利用とプライベート利用の使い分け、OpenAIの利用規約遵守といった重要な点にも触れ、複数アカウントを安全に活用するためのガイドを提供します。 OpenAI


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

SublimeText3 Linux 新バージョン
SublimeText3 Linux 最新バージョン

MantisBT
Mantis は、製品の欠陥追跡を支援するために設計された、導入が簡単な Web ベースの欠陥追跡ツールです。 PHP、MySQL、Web サーバーが必要です。デモおよびホスティング サービスをチェックしてください。

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

SAP NetWeaver Server Adapter for Eclipse
Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。

VSCode Windows 64 ビットのダウンロード
Microsoft によって発売された無料で強力な IDE エディター
