You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

430 lines
15 KiB

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
それは次のビデオで。