この記事では、人気の機械学習プロジェクトであるテキスト ジェネレーターを紹介します。テキスト ジェネレーターを構築する方法と、より高速な予測モデルを実現するためのマルコフ連鎖の実装方法を学びます。
テキスト ジェネレーターの概要
テキスト生成は、あらゆる業界、特にモバイル、アプリ、データ サイエンスの分野で人気があります。報道機関でも、執筆プロセスを支援するためにテキスト生成を使用しています。
日常生活では、いくつかのテキスト生成テクノロジに触れることがあります。テキスト補完、検索候補、スマート作成、チャット ロボットなどはすべてアプリケーションの例です。
この記事ではマルコフを使用します。テキストジェネレーターを構築するためのチェーン。これは、チェーンの前の文字を取得し、シーケンス内の次の文字を生成する文字ベースのモデルになります。
例の単語を使用してプログラムをトレーニングすることにより、テキスト ジェネレーターは一般的な文字の順序パターンを学習します。次に、テキスト ジェネレーターはこれらのパターンを不完全な単語である入力に適用し、単語を完成させる可能性が最も高い文字を出力します。
#テキスト生成は、以前に観察された言語パターンに基づいて次の文字を予測して生成する自然言語処理の分野です。
機械学習の前に、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 サイトの他の関連記事を参照してください。

译者 | 布加迪审校 | 孙淑娟目前,没有用于构建和管理机器学习(ML)应用程序的标准实践。机器学习项目组织得不好,缺乏可重复性,而且从长远来看容易彻底失败。因此,我们需要一套流程来帮助自己在整个机器学习生命周期中保持质量、可持续性、稳健性和成本管理。图1. 机器学习开发生命周期流程使用质量保证方法开发机器学习应用程序的跨行业标准流程(CRISP-ML(Q))是CRISP-DM的升级版,以确保机器学习产品的质量。CRISP-ML(Q)有六个单独的阶段:1. 业务和数据理解2. 数据准备3. 模型

在自然语言生成任务中,采样方法是从生成模型中获得文本输出的一种技术。这篇文章将讨论5种常用方法,并使用PyTorch进行实现。1、GreedyDecoding在贪婪解码中,生成模型根据输入序列逐个时间步地预测输出序列的单词。在每个时间步,模型会计算每个单词的条件概率分布,然后选择具有最高条件概率的单词作为当前时间步的输出。这个单词成为下一个时间步的输入,生成过程会持续直到满足某种终止条件,比如生成了指定长度的序列或者生成了特殊的结束标记。GreedyDecoding的特点是每次选择当前条件概率最

机器学习是一个不断发展的学科,一直在创造新的想法和技术。本文罗列了2023年机器学习的十大概念和技术。 本文罗列了2023年机器学习的十大概念和技术。2023年机器学习的十大概念和技术是一个教计算机从数据中学习的过程,无需明确的编程。机器学习是一个不断发展的学科,一直在创造新的想法和技术。为了保持领先,数据科学家应该关注其中一些网站,以跟上最新的发展。这将有助于了解机器学习中的技术如何在实践中使用,并为自己的业务或工作领域中的可能应用提供想法。2023年机器学习的十大概念和技术:1. 深度神经网

译者 | 朱先忠审校 | 孙淑娟在我之前的博客中,我们已经了解了如何使用因果树来评估政策的异质处理效应。如果你还没有阅读过,我建议你在阅读本文前先读一遍,因为我们在本文中认为你已经了解了此文中的部分与本文相关的内容。为什么是异质处理效应(HTE:heterogenous treatment effects)呢?首先,对异质处理效应的估计允许我们根据它们的预期结果(疾病、公司收入、客户满意度等)选择提供处理(药物、广告、产品等)的用户(患者、用户、客户等)。换句话说,估计HTE有助于我

本文讨论使用LazyPredict来创建简单的ML模型。LazyPredict创建机器学习模型的特点是不需要大量的代码,同时在不修改参数的情况下进行多模型拟合,从而在众多模型中选出性能最佳的一个。 摘要本文讨论使用LazyPredict来创建简单的ML模型。LazyPredict创建机器学习模型的特点是不需要大量的代码,同时在不修改参数的情况下进行多模型拟合,从而在众多模型中选出性能最佳的一个。本文包括的内容如下:简介LazyPredict模块的安装在分类模型中实施LazyPredict

译者 | 朱先忠审校 | 孙淑娟引言模型超参数(或模型设置)的优化可能是训练机器学习算法中最重要的一步,因为它可以找到最小化模型损失函数的最佳参数。这一步对于构建不易过拟合的泛化模型也是必不可少的。优化模型超参数的最著名技术是穷举网格搜索和随机网格搜索。在第一种方法中,搜索空间被定义为跨越每个模型超参数的域的网格。通过在网格的每个点上训练模型来获得最优超参数。尽管网格搜索非常容易实现,但它在计算上变得昂贵,尤其是当要优化的变量数量很大时。另一方面,随机网格搜索是一种更快的优化方法,可以提供更好的

自然语言生成是一种人工智能技术,它能够将数据转换为自然语言文本。在当今的大数据时代,越来越多的业务需要将数据可视化或呈现给用户,而自然语言生成正是一种非常有效的方法。PHP是一种非常流行的服务器端脚本语言,它可以用于开发Web应用程序。本文将简要介绍如何使用PHP进行基本的自然语言生成。引入自然语言生成库PHP自带的函数库并不包括自然语言生成所需的功能,因此

实现自我完善的过程是“机器学习”。机器学习是人工智能核心,是使计算机具有智能的根本途径;它使计算机能模拟人的学习行为,自动地通过学习来获取知识和技能,不断改善性能,实现自我完善。机器学习主要研究三方面问题:1、学习机理,人类获取知识、技能和抽象概念的天赋能力;2、学习方法,对生物学习机理进行简化的基础上,用计算的方法进行再现;3、学习系统,能够在一定程度上实现机器学习的系统。


ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

mPDF
mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。

SublimeText3 中国語版
中国語版、とても使いやすい

Dreamweaver Mac版
ビジュアル Web 開発ツール

EditPlus 中国語クラック版
サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません

Safe Exam Browser
Safe Exam Browser は、オンライン試験を安全に受験するための安全なブラウザ環境です。このソフトウェアは、あらゆるコンピュータを安全なワークステーションに変えます。あらゆるユーティリティへのアクセスを制御し、学生が無許可のリソースを使用するのを防ぎます。

ホットトピック



