私はアークティック・モンキーズが大好きですが、彼らはもう何年も新しいシングルをリリースしていません。長い間精神的な栄養が不足していたのですが、ある夜、突然、自給自足できるというアイデアが浮かびました。そこで、簡単なコードを書き、Keras と TensorFlow を使ってテキスト生成モデルをトレーニングし、アークティック モンキーズのまったく新しい曲を書きました。
しかし、条件が限られているため、本物のアークティック・モンキーズの曲と比較することはできませんが、それでも長い間新曲を聞き逃していた自分を慰めてくれます。 この記事では、このコードについて簡単に紹介します。完全なコードは私の GitHub にあります: https://github.com/Rajwrita/Sequence-Models-for-Literature/blob/master/NLP-AM2.0.ipynb。 まず、Arctic Monkeys のほぼすべての曲のデータセット (https://github.com/Rajwrita/Sequence-Models-for-Literature/blob/master/AM.txt) を構築し、その後このコードの実行を続行して、独自のデータセットを使用してテキストを生成してみます。 輸入 まず、ディープラーニング モデル用の共通データ フレーム操作ライブラリと TensorFlow および Keras ライブラリ パッケージをインポートする必要があります。
次に、データをインポートします。
次に、テキストにトークナイザーをインストールします。トークナイザーは、コーパス全体をカバーする単語の辞書を生成できます。これは基本的にキーと値のペアです。キーは単語であり、値はその単語に対して生成されたトークンです。つまり、トークナイザーは文の文字列を個々の単語に分割し、各単語に一意の整数値を割り当てます。このステップは非常に重要であり、後続の埋め込みレイヤー データの準備の基礎となります。 単語インデックスの長さを取得することで、コーパス内の単語の総数を取得できます。これに1を加えることで、外部語彙を導入することができます。対応するコードは次のとおりです。
次に、トークン リストを使用してインポート シーケンスを作成します。簡単に言えば、インポートされたシーケンスは Python リストです。テキスト コーパスの各行は、トークナイザーを通じてトークン リストを生成します。次のようなテキスト行です: このプロセスを通じて、これらの単語を表すトークンの文字列に変換されます。これはデータセットの各行に対して実行されます。コードは次のとおりです。
ご覧のとおり、インポートされたシーケンスは、単に文をフレーズに分割し、その後にコーパス内の最長の文の長さを取得したものです。このステップは非常に簡単で、すべての文をループして、最も長い文を見つけるだけです。
ここで、すべてのシーケンスが同じ長さになるようにパディングします。シーケンスをゼロで事前に埋めておくと、ラベル値の抽出が容易になります。ラベル値を取得するには、最後のトークンを取得するだけです。
パディング後、予測値とラベル値が作成され、シリーズは基本的に x 配列と y 配列に分割されます。ここでは Python の slice 属性が使用されます。コードは次のとおりです。
データが x 配列と y 配列に分割されたので、特定のフレーズの分類予測を行うニューラル ネットワークの作成を開始できます。 埋め込みレイヤーから始める 埋め込み層は、単語を理解するあらゆるディープラーニング モデルにとって不可欠な層です。その実際の機能は、同じ意味を持つ単語に同じ数値を割り当てることで、高次元空間から低次元空間にベクトルを投影し、ベクトルに対して直接数学的演算を実行できるようにすることです。 テキストの行では、すべての単語が処理され、ニューラル ネットワークで意味が付与されます。最初のパラメーターは単語を扱い、2 番目のパラメーターは描画される単語ベクトルの次元、最後のパラメーターは入力次元のサイズです。これは実際には最長シーケンスの長さから 1 を引いた値です。 1 を減算する理由は、ラベル値を取得するために各シーケンスの最後の単語を切り取るため、結果のシーケンスは最大シーケンス長より 1 少なくなるためです。
LSTM (Long Short-Term Memory) レイヤーの追加 画像ソース: unsplash LSTM レイヤーのセル状態はコンテキスト全体を保存し、次の単語が隣接する単語だけでなく他の単語からも影響を受けることを保証します。 単一の LSTM レイヤーに加えて、積み重ねられた LSTM レイヤーを使用することもできます。双方向 LSTM レイヤーを使用すると、生データを最初から最後まで学習アルゴリズムに入力し、また戻すことができるため、ニューラル ネットワークがテキストをより適切に理解できるようになります。双方向 LSTM は、ニューラル ネットワークの収束を高速化するのに役立ちま す。 シーケンス情報が最終状態に直接渡されるのではなく、2 番目の LSTM レイヤーに渡されるように、戻りシーケンス アノテーションを True に設定します。
次に、密なレイヤーを使用して線形関係をさらに捕捉し、上記のレイヤーの出力を単語の確率に変換します。ソフトマックス活性化関数は、すべての入力単語の確率を (-∞,∞) から (0,1) に変換します。
ここではカテゴリ分類を行っているため、カテゴリクロスエントロピーの法則を設定する必要があります。オプティマイザに関しては、ここでは Adam オプティマイザが選択されます。 最終段階 — エポック 最後に、モデルのトレーニングには時間がかかります。データセットにはデータがあまりないので、モデルのトレーニングには約 500 エポックかかります。
予測する単語が増えるほど、生成される文字化けした文字も増えます。これは、すべての単語だけでなく、その前後の単語も予測する必要があるため、次の単語の不確実性は常に前の単語よりも高くなるからです。最終的にネットワークが予測したテキストを見てみましょう。
十分な単語を網羅したコーパスを構築することで、ニューラル ネットワークをコーパス上でトレーニングし、次の単語を予測することで複雑なテキストを予測できるようになります。 機械学習を使えば、コンテンツ制作はもはや難しくありません。このコードを使って、お気に入りの歌手のために曲を書いてみてください。 |
<<: 心が開かれました! Adobeなどの研究者が「自撮り」を「他人が撮った写真」に変え、感動的な魔法の写真編集効果を実現
>>: Weilingsi チームは、グラフ同型性の下での同変性と高い計算効率を備えた「自然グラフ ネットワーク」メッセージ パッシング メソッドを提案しました。
AI ソリューションはすでにさまざまな業界で導入されており、効率性の向上、コストの削減、安全性の向上...
先日終了した双十一では、天猫の取引額は2,684億元に達し、前年比25.7%増加した。この成果の裏に...
最近、ジョー・バイデン米大統領は1740億ドルの電気自動車提案を行った。バイデン氏は、米国民に電気自...
純粋に学術的な目的で機械学習モデルを構築することと、製造、金融サービス、小売、エンターテインメント、...
この記事はAI新メディアQuantum Bit(公開アカウントID:QbitAI)より許可を得て転載...
人間の視覚はどのように発達するのでしょうか?今日に至るまで、それは謎のままです。脳の視覚系は、世界自...
スタンフォード大学のAI 100のAI Indexプロジェクトは、人工知能の活動と進歩を追跡し、人工...
ゲスト | 周明執筆者 | Yun Zhaoある夜、湘源の湧き水が、広大で無限に湧き出しました。 C...
今回、ヤン・ルカンが初めて「変わり続ける大物」の仲間入りを果たした。アイアンマンの衣装とかっこいいサ...
大規模なモデルの場合、ローカライズされたエンコード タスクに優れています。しかし、タスクが複数の相互...
「サービスとしての」配信モデルの誕生以来、SaaS と PaaS は日常的な技術用語の一部となり、企...
ICML 2023 の賞品が発表されました!今年は32件の候補論文の中から6件が優秀論文賞を受賞しま...
近年、セキュア アクセス サービス エッジ (SASE) テクノロジーは急速に発展し、産業界で広く使...