WEBVTT 00:00:00.000 --> 00:00:02.018 建立搜尋引擎 (search engine) ,你有什麼收穫呢? 00:00:02.018 --> 00:00:03.077 你曾建立一個,對嗎? 00:00:03.077 --> 00:00:06.008 是的,如果你想要建立一個搜尋引擎 00:00:06.008 --> 00:00:08.013 我認為最重要的事 00:00:08.013 --> 00:00:12.051 是從一個非常好的語料庫 (corpus) 開始 00:00:12.051 --> 00:00:19.020 我們以前使用 WWW,它比今天的 WWW 小多了 00:00:19.020 --> 00:00:21.036 但是它仍很新奇、令人興奮的 00:00:21.036 --> 00:00:23.081 有各種出乎意料的事情 00:00:23.081 --> 00:00:26.099 因此課程前三單元的目標,是建立語料庫 00:00:27.003 --> 00:00:30.009 藉由爬行網頁來為我們的搜尋引擎建立語料庫 00:00:30.009 --> 00:00:32.090 爬行網頁是網頁蜘蛛 (web crawler) 的工作 00:00:32.090 --> 00:00:36.038 網頁蜘蛛是一個從網路收集內容的程式 00:00:36.038 --> 00:00:40.054 想像一個你在瀏覽器看到的網頁,一個這樣的網頁 00:00:40.054 --> 00:00:43.099 我們將使用 udacity 的網站做為網頁的例子 00:00:43.099 --> 00:00:47.097 它有很多內容,有一些圖像,有一些文字 00:00:47.097 --> 00:00:51.038 當您請求這個網頁時, 所有的內容都來到你的瀏覽器 (browser) 00:00:51.038 --> 00:00:53.066 重要的是,網頁含有連結 (link) 00:00:53.066 --> 00:00:57.093 連結 (link) 是什麼? link 通往另一個網頁 00:00:57.093 --> 00:01:00.050 有一個通往「常見問題」的 link 00:01:00.050 --> 00:01:02.046 有一個通往 CS101 網頁的 link 00:01:02.046 --> 00:01:04.043 還有其他一些 link 00:01:04.043 --> 00:01:07.054 link 在瀏覽器中顯示的時候,可能帶有底線 00:01:07.054 --> 00:01:09.094 也可能沒有,取決於瀏覽器的設定 00:01:09.094 --> 00:01:11.095 重要的是 00:01:11.095 --> 00:01:13.088 link 是通往其他網頁的指引 00:01:13.088 --> 00:01:16.043 而其他網頁也可能含有 link 00:01:16.043 --> 00:01:19.073 這個網頁上有另一個 link 00:01:19.073 --> 00:01:23.052 也許它通往我的名字,你可以跟隨它通往我的首頁 (homepage) 00:01:23.052 --> 00:01:26.091 網頁蜘蛛能找到的所有網頁 00:01:26.091 --> 00:01:29.009 都是跟隨 link 而找到的 00:01:29.009 --> 00:01:31.067 沒有必要找出網路中的每個網頁 00:01:31.067 --> 00:01:33.059 如果我們從一個好的種子網頁 (seed page) 開始 00:01:33.059 --> 00:01:35.003 就可以找到很多網頁 00:01:35.003 --> 00:01:37.050 網頁蜘蛛要做的,就是從一個網頁開始 00:01:37.050 --> 00:01:41.056 找出網頁中所有的 link,跟隨它們,找到其他的網頁 00:01:41.056 --> 00:01:45.013 然後在這些網頁裡,繼續跟隨網頁中的 link 00:01:45.013 --> 00:01:48.031 以找到其他網頁,那些網頁中有更多的 link 00:01:48.031 --> 00:01:51.043 最後,我們收集到網路中很多的網頁 00:01:51.043 --> 00:01:54.007 這就是我們要網頁蜘蛛做的事 00:01:54.007 --> 00:01:56.095 我們希望找到方法,從一個 seed page 開始 00:01:56.095 --> 00:01:59.056 擷取網頁上的 link 00:01:59.056 --> 00:02:01.078 跟隨這些 link 找到其他的網頁 00:02:01.078 --> 00:02:03.067 然後收集那些網頁中的 link 00:02:03.067 --> 00:02:05.024 跟隨它們,收集所有的 link 00:02:05.024 --> 00:02:07.038 好像有很多事要做 00:02:07.038 --> 00:02:09.014 第一節課不會完成所有的事情 00:02:09.014 --> 00:02:12.072 第一單元要做的,只是擷取一個 link 00:02:12.072 --> 00:02:14.058 我們將從一堆文字開始 00:02:14.058 --> 00:02:17.033 其中帶有 URL 的 link 00:02:17.033 --> 00:02:19.064 我們要找出那個 URL 00:02:19.064 --> 00:02:21.089 這樣才能請求下一個網頁 00:02:21.089 --> 00:02:23.082 第二單元的目標是 00:02:23.082 --> 00:02:25.016 能夠持續地做下去 00:02:25.016 --> 00:02:28.049 如果網頁中有很多 link,你要把它們全找出來 00:02:28.049 --> 00:02:30.014 第二單元要做的 00:02:30.014 --> 00:02:32.069 是要弄清楚如何持續的擷取所有的 link 00:02:32.069 --> 00:02:36.061 第三單元,嗯,我們將超越一個網頁 00:02:36.061 --> 00:02:40.033 第二單元結束時,我們能夠印出一個網頁中的所有 link 00:02:40.033 --> 00:02:44.002 第三單元我們要收集所有的 link,才可以持續下去 00:02:44.002 --> 00:02:47.018 直到網頁蜘蛛收集了很多、很多的網頁 00:02:47.018 --> 00:02:50.013 第三單元結束時,我們將建立一個網頁蜘蛛 00:02:50.013 --> 00:02:52.033 我們有一個建立語料庫的方法 00:02:52.033 --> 00:02:57.079 剩下三個單元重點在於,如何回應查詢 (queries) 00:02:57.079 --> 00:03:01.034 第四單元我們將探討,如何給出好的回應 00:03:01.034 --> 00:03:08.022 當搜索一個關鍵字 (keyword) 時, 我們要給出一個網頁列表 (list) 當作回應 00:03:08.022 --> 00:03:10.063 列表中的網頁都出現了關鍵字 00:03:10.063 --> 00:03:15.090 第五單元我們將思考, 如果有一個很大的語料庫,如何擴展規模 00:03:15.090 --> 00:03:19.083 第六單元要做的,不只是找出一個網頁列表 00:03:19.083 --> 00:03:21.069 而是要找出最佳的網頁 00:03:21.069 --> 00:03:24.084 我們將探討,如何為含有關鍵字的網頁來評分 00:03:24.084 --> 00:03:27.068 我們已經講得有點遠了 00:03:27.068 --> 00:03:30.035 因為第一單元要做的只是 00:03:30.035 --> 00:03:32.064 思考如何從網頁中擷取一個 link 00:03:32.064 --> 00:03:35.073 課程結束時,我們所建立的搜尋引擎 00:03:35.073 --> 00:03:37.034 將是一個功能完整的搜尋引擎 00:03:37.034 --> 00:03:40.061 它將擁有像 Google 這種搜尋引擎所具備的主要元件 00:03:40.061 --> 00:03:43.014 它當然不會像 Google 那麼強大 00:03:43.014 --> 00:03:44.029 我們想要簡單一點 00:03:44.029 --> 00:03:46.060 我們只要寫少量的程式 00:03:46.060 --> 00:03:48.010 要記住我們的目標 00:03:48.010 --> 00:03:50.024 重點不是建立一個搜尋引擎 00:03:50.024 --> 00:03:52.078 而是將建立搜尋引擎當作一個手段 00:03:52.078 --> 00:03:55.018 來學習電腦科學 00:03:55.018 --> 00:03:56.075 以及學習程式設計 00:03:56.075 --> 00:03:58.018 透過這樣的學習 00:03:58.018 --> 99:59:59.999 將讓我們有能力解決很多、很多其他的問題