第5章 自然言語処理入門 自然言語処理入門
この作品はAIを使って翻訳されている。ご意見、ご感想をお待ちしている:translation-feedback@oreilly.com
自然言語処理(NLP)は、言語の理解を扱うAIのテクニック( )である。言語を理解し、内容を分類し、さらには言語の新しい構文を生成して作成するモデルを作成するプログラミング・テクニックが含まれる。GPT、Gemini、Claudeのような大規模言語モデル(LLM)の基礎でもある。LLMについては後の章で詳しく説明するが、その前に、これからのことを学ぶために、数章にわたってより基本的なNLPについて見ていこう。
チャットボットなどのアプリケーションを作成するためにNLPを使用するサービスもたくさんあるが、それは本書の範囲ではない。後の章では、MLモデルの予測要素を使って詩を書く方法も学ぶ。これは単なるお遊びではなく、生成AIを支える変換ベースのモデルの使い方を学ぶ前段階でもある!
この章ではまず、言語をどのように数値に分解できるか、そしてその数値をどのようにニューラルネットワークで使うことができるかを見ていこう。
言語を数値にエンコーディングする
結局のところ、コンピューターは数値を扱う。 、言語を扱うには、エンコーディングと呼ばれるプロセスで言語を数値に変換する必要がある。
言語を数値にエンコーディングする方法はたくさんある。最も一般的なのは文字によるエンコーディングで、文字列がプログラミングに格納されるときに自然に行われる。しかしメモリ上では、aという文字を格納するのではなく、そのエンコーディングを格納するのである-おそらくASCII値かUnicode値か、あるいは他の何かであろう。例えば、listenという単語を考えてみよう。これをASCIIでエンコーディングすると、76、73、83、84、69、78という数字になる。これは、数値を使って単語を表現できるという点では良いことだ。しかし、次にlistenのアナグラムであるsilentという単語を考えてみよう。同じ数字がその単語を表し、順番は違うが、テキストを理解するためのモデルを構築するのはもっと難しくなるかもしれない。
より良い代替案は、単語内の文字ではなく、単語全体を数字でエンコーディングすることかもしれない。その場合、silentは数字x、listenは数字yとなり、互いに重なることはない。
このテクニックを使って、"I love my dog. "のような文章を考えてみよう。これを数字[1, 2, 3, 4]でエンコーディングすることができる。次に「私は猫を愛しています」をエンコーディングしたい場合は、[1, 2, 3, 5]でエンコーディングできる。つまり、[1, 2, 3, 4]は[1, 2, 3, 5]によく似ているのだ。
、単語を表す数字はトークンとも呼ばれ、その結果、このプロセスはトークン化と呼ばれる。トークン化の方法は次に説明する。
トークン化を始める
PyTorchエコシステムには、 、単語をトークンに変換するトークン化のためのライブラリがたくさんある。コードサンプルでよく目にするトークナイザーはtorchtext, だが、これは2023年以降非推奨となっている。PyTorchのバージョンは上がってもトークナイザは上がらないので、使用する際には注意が必要だ。そのため、カスタム・トークナイザーや、他の場所から事前に学習させたもの、あるいは(驚くことに)Kerasエコシステムのものを使うという選択肢もある。 ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access