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