WEBVTT 00:00.110 --> 00:05.750 最初のプロジェクトで即座に満足できると言ったのは100年前のビデオのような気がするし、 00:05.750 --> 00:13.070 即座に満足できたとは言えないと感じるのも当然だろう。 00:13.070 --> 00:17.960 しかし、 心配は無用だ。 その埋め合わせとして、 素晴らしいジューシーなプロジェクトでスタートを切るつもりだ。 00:17.960 --> 00:23.960 もしすでにJupyterLabをブラウザのウィンドウのように起動している場合は、 それを閉じてください。 00:23.960 --> 00:32.180 また、 Anacondaのプロンプトがすでにウィンドウズに表示されている場合は、 それを終了して閉じ、 もう一度やり直してください。 00:32.180 --> 00:44.660 PCでは新しいAnacondaプロンプトを、 Macでは新しいターミナルを立ち上げる。 00:44.690 --> 00:49.850 LMエンジニアリングのプロジェクトフォルダーに入れば、 まず思い出すだろう。 00:49.850 --> 00:54.710 そして、 Jupyter Labを起動しているいないにかかわらず、 conda activate LMSと入力し、 00:54.710 --> 00:57.800 新しい状態でログインした場合は、 常にこの作業を行う必要がある。 00:57.800 --> 01:00.080 そうやって環境を活性化させるのだ。 01:00.110 --> 01:04.830 もしvirtualenvを使っているのであれば、 ReadmeにPCとMacで違うやり方が載っていた。 01:04.860 --> 01:10.290 そうしたら、 プロンプトがLMSに変わったんだ。 01:10.290 --> 01:14.100 アナコンダ・プロンプトのウィンドウズ・ユーザーも同じことをするはずだ。 01:14.100 --> 01:17.670 そして今、 Jupyter Labという2つの素晴らしい言葉を入力する。 01:17.670 --> 01:23.670 そうすると、 一瞬考えて、 JupyterLabがここに出てくる。 01:23.700 --> 01:25.350 即座に満足できる。 01:25.350 --> 01:26.130 と書いてある。 01:26.130 --> 01:28.500 だから、 あなたはこれを見ないかもしれない。 01:28.530 --> 01:31.320 実際、 このように見えるだけで、 初めて出てくるかもしれない。 01:31.320 --> 01:34.560 もしかしたら、 この方が今見ているものに近いかもしれない。 01:34.620 --> 01:37.380 つまり、 これはある人々にとってのJupyter Labなのだ。 01:37.380 --> 01:38.610 これは古いニュースだ。 01:38.610 --> 01:39.870 これはよく使うだろう。 01:39.900 --> 01:41.370 初めて聞く人もいるかもしれない。 01:41.370 --> 01:43.920 そして、 その素晴らしさをお伝えしたい。 01:43.950 --> 01:49.080 データサイエンティストがコードを使って作業するための、 非常にインタラクティブな方法である。 01:49.290 --> 01:54.210 Jupyter Labでグローバル変数を多用するような、 毛むくじゃらのものばかりだ。 01:54.240 --> 02:02.340 エンジニア出身者であれば、 それがあまり良い振る舞いでないことは分かっているはずだが、 研究開発の一環として行っていることなのだ。 02:02.340 --> 02:03.780 だから、 そうするんだ。 02:03.780 --> 02:07.900 おわかりのように、 これは実験しながら非常に生産的になれることを意味する。 02:07.900 --> 02:19.510 コースの最後となる第8週目では、 プロダクション化、 つまりJupyterLabから適切なコードやデプロイメントに移行する方法について説明します。 02:19.510 --> 02:21.550 でも、 今はそんなことを心配する必要はない。 02:21.580 --> 02:27.250 左側にはファイル・ブラウザーと呼ばれるものがあり、 02:27.280 --> 02:32.230 このように親ディレクトリが表示されます。 02:32.230 --> 02:40.120 これから進む各週のディレクトリがあり、 Readmeや環境についてわかっていることを見ることができる。 02:40.120 --> 02:40.120 ymlもここにある。 02:40.120 --> 02:43.960 では、 さっそく第1週に入る。 02:44.200 --> 02:52.330 JupyterLabが初めての方は、 JupyterLabのガイドを作りましたので、 そちらをご覧ください。 02:52.330 --> 02:59.830 ここをダブルクリックするだけで、 必要なことを簡単に説明してくれる。 02:59.830 --> 03:04.600 例えば、 セルと呼ばれるこのボックスの一つをクリックできることを学ぶだろう。 03:04.600 --> 03:05.890 シフトを押し続ける。 03:05.890 --> 03:12.130 キーボードのリターンキーを押すかエンターキーを押せば実行され、 03:12.130 --> 03:20.170 結果が表示される。 03:20.200 --> 03:27.130 私の好きな果物はバナナです。 ジュピター・ラボの使い方のコツを学ぶ方法として、 このジュピター・ガイドに目を通していただき、 03:27.130 --> 03:31.270 役立てていただければ幸いです。 03:31.270 --> 03:40.420 しかし、 このコースの参加者の多くは、 一度や二度はジュピターを使ったことがあり、 その素晴らしさを熟知していることだろう。 03:40.810 --> 03:45.280 それで、 初日のプロジェクトがここにある。 03:45.280 --> 03:48.640 そしてまた、 私は少し生意気にも、 それをインスタント・グラティフィケーションと呼んでいる。 03:48.640 --> 03:54.670 あなたがこのためにかなりの労力を費やしてきたことは知っているし、 初日はかなり長い一日だった。 03:54.880 --> 04:00.340 ええと、 ここでもう一度、 私が助けに来たことを思い出してもらうために、 何か挨拶があるんだ。 04:00.340 --> 04:01.510 私のメールアドレスがある。 04:01.510 --> 04:02.560 これは私のリンクトインだ。 04:02.560 --> 04:04.720 LinkedInで私とつながってくれる人はいつも嬉しい。 04:04.750 --> 04:08.560 挨拶がてらメッセージを入れてくれるのはありがたいが、 本当にその必要はない。 04:08.560 --> 04:10.950 ただつながりたいだけなら、 私はそれでいいと思う。 04:10.950 --> 04:15.190 このコースを受講している人たちからのコネクションは常に受け入れるつもりだ。 04:15.190 --> 04:16.090 もちろんだ。 04:16.210 --> 04:21.010 もうひとつは、 ノートブックがもう一冊あるということだ。 04:21.130 --> 04:24.340 そして申し訳ないが、 このJupyterラボはノートブックとして知られている。 04:24.430 --> 04:27.040 人々は歴史的な理由からそう呼ぶ。 04:27.250 --> 04:31.480 ええと、 ここにトラブルシューティングという別のノートがあります。 04:31.480 --> 04:36.730 そして、 トラブルシューティングは、 トラブルシューティングで問題が発生したときに行く場所だ。 04:36.760 --> 04:37.600 ええと、 始まる。 04:37.630 --> 04:38.260 なんてことだ。 04:38.500 --> 04:45.070 何が間違っているのか、 envファイルをチェックする必要がある。 04:45.100 --> 04:45.640 良さそうだ。 04:45.640 --> 04:47.470 私はすべてをチェックしながら進めていく。 04:47.470 --> 04:51.670 だから、 何かトラブルがあったら、 トラブルシューティングに行けば解決する。 04:51.670 --> 04:55.510 でも、 それ以外は初日のノートから始める。 04:55.510 --> 05:00.610 通常、 このコースでは、 各日ごとに別のノートを用意し、 その日のうちに学習し、 05:00.640 --> 05:03.850 練習問題を解くことができるようにします。 05:03.880 --> 05:04.690 オーケー。 05:04.690 --> 05:08.140 だから、 まずは輸入から始める。 05:08.140 --> 05:10.510 私はよく輸入品をトップに置くのが好きだ。 05:10.510 --> 05:17.140 JupyterLabのコードを上から下に実行する必要があるので、 まずこのインポートセルをクリックする。 05:17.150 --> 05:18.230 シフトを押し続ける。 05:18.230 --> 05:19.190 リターンを押す。 05:19.190 --> 05:20.630 そして走る。 05:20.660 --> 05:25.430 これでエラーが出た場合は、 トラブルシューティングノートブックにアクセスしてください。 05:25.460 --> 05:29.270 おそらく何が起きているのか、 何が起こっているのか、 そしてそれに対して何が必要なのかをお話しします。 05:29.300 --> 05:33.650 何らかの理由でconda環境が有効になっていない可能性が高い。 05:33.650 --> 05:35.450 そのためにどうすればいいかを教えてあげよう。 05:36.290 --> 05:36.980 オーケー。 05:37.010 --> 05:40.580 次にすることは、 OpenAIに接続することだ。 05:40.610 --> 05:54.170 ここでOpenAIのAPIサービスに接続し、 GPT(フロンティアモデル)を呼び出して質問できるようにします。 05:54.200 --> 05:58.460 もちろん、 これからOpenAIやGPTについて、 そしてこれらのことが何を意味するのかについて、 もっとたくさん話していくつもりだ。 05:58.460 --> 06:00.110 その味を知ることだ。 06:00.110 --> 06:02.030 今はまだ、 最初のラボに過ぎない。 06:02.630 --> 06:06.230 そこでまず、 load dot envというものを呼び出す。 06:06.230 --> 06:11.150 そして、 ドットenvファイルを見て、 我々の秘密をロードする。 06:11.240 --> 06:14.120 今は、 OpenAIのAPIキーという秘密がある。 06:14.120 --> 06:17.240 それを読み込んで、 APIキーという変数に入れる。 06:17.240 --> 06:20.120 そして、 それがまともに見えるかどうかをチェックするんだ。 06:20.210 --> 06:23.190 APIキーが見つかりました。 06:23.220 --> 06:24.570 もしそう書かれていなければ 06:24.570 --> 06:25.320 もし書かれていなければ 06:25.350 --> 06:28.470 APIキーが見つかり、 今のところ問題なさそうだ。 06:28.470 --> 06:30.210 解決するか、 それとも 06:30.570 --> 06:32.820 メールで連絡してくれ。 06:32.850 --> 06:35.730 大丈夫だ。 06:35.730 --> 06:39.240 次にすることは、 このシンプルなことだ。 06:39.270 --> 06:41.040 我々はOpenAIを採用している。 06:41.070 --> 06:44.580 そのインスタンスを作ってOpenAIに置く。 06:44.760 --> 06:46.350 ええと、 ここが僕らのいる場所なんだ。 06:46.380 --> 06:51.000 実際にOpenAIとの接続が完了した。 06:51.780 --> 06:52.650 分かった。 06:52.650 --> 06:55.800 さて、 今日はどんな企画にしようかな? 06:55.800 --> 06:57.510 私たちは実際にどのようなビジネス上の問題を解決しようとしているのか。 06:57.540 --> 06:58.050 解決するため? 06:58.050 --> 07:00.510 本当にシンプルで、 とてもクールなものになるだろう。 07:00.510 --> 07:08.010 インターネット上のあらゆるウェブページを見て、 ウェブページの内容をスクレイピングし、 それを要約して、 07:08.010 --> 07:14.400 そのウェブページの短い要約を返すことができるプログラムを書こうと思っている。 07:14.400 --> 07:19.440 自分自身の小さなウェブ・ブラウザーを構築しているようなもので、 要約ウェブ・ブラウザーのようなものだと考えればいい。 07:19.440 --> 07:21.120 ええと、 ほら、 リーダーズ・ダイジェスト。 07:21.120 --> 07:23.430 リーダーズ・ダイジェストのウェブブラウザのようなものだ。 07:23.810 --> 07:25.100 ええと、 そうするつもりなんだ。 07:25.100 --> 07:26.450 それがこのプロジェクトになる。 07:26.450 --> 07:33.380 そして、 クラスwebsiteを定義することから始めよう。 これは、 スクレイピングしたウェブサイトを表す、 07:33.380 --> 07:37.460 とてもシンプルなユーティリティ・クラスになる。 07:37.610 --> 07:42.470 URL、 タイトル、 テキストを持つクラスになります。 07:42.470 --> 07:46.280 一行ずつ説明するつもりはない。 07:46.280 --> 07:54.920 この後、 他のラボでもっと詳しく説明する予定だからだ。 07:54.920 --> 07:58.370 これはまさに、 あなたにとって初めての経験なのだ。 07:58.370 --> 08:08.840 さて、 このコンストラクタとクラスのセットアップでは、 Beautifulsoupというパッケージを使っている。 08:08.840 --> 08:15.770 これはウェブページの解析に使われる素晴らしい小さなパッケージで、 私のようにウェブスクレイピングを日常的に行っている人間は、 08:15.770 --> 08:20.120 Beautifulsoupをよく知っている。 08:20.210 --> 08:25.490 Beautifulsoupを使えば、 ウェブページのタイトルを抜き出したり、 ウェブページからスクリプトやスタイルや画像や入力を取り除いて、 08:25.490 --> 08:31.590 そのテキストを見つけ出すことができる。 08:31.890 --> 08:37.320 だから、 それが僕らの、 あー、 あー、 あー、 クラスのウェブサイトでやろうとしていることなんだ。 08:37.350 --> 08:41.340 そして、 最後にひとつ試してみよう。 08:41.340 --> 08:44.190 それでは、 新しいウェブサイト・オブジェクトを作りましょう。 08:44.190 --> 08:51.480 そして、 私は徹底的に望ましくないウェブサイトのために、 この特定のウェブサイトに渡すつもりだ私のウェブサイトであることが起こる。 08:51.660 --> 08:54.300 ええと、 とてもバニラなウェブサイトなんだ。 08:54.390 --> 08:56.760 しかし、 それを表現するクラスを作ることにしよう。 08:56.940 --> 09:00.450 タイトルを見て、 ウェブサイトの文章を見てみよう。 09:00.450 --> 09:01.740 うまくいくかどうか見てみよう。 09:01.830 --> 09:03.090 そうだ。 09:03.090 --> 09:04.440 そして、 これだ。 09:04.530 --> 09:07.440 ウェブサイトの名前を見ている。 09:07.560 --> 09:12.570 あのウェブサイトで何が起こっているのか、 何か書いてあるんだ。 09:12.870 --> 09:22.920 画像やJavaScriptのスタイルシートがすべて削除されたウェブページのコンテンツだからだ。 09:23.130 --> 09:27.390 これまでのところ、 私たちは生成AIやLlmsに関することは何もしていない。 09:27.390 --> 09:31.200 それは次のビデオで。