109 年 國立臺灣大學新聞學研究所《資訊科學與新聞》

📄 試題原卷 免費註冊後即可對照原始考卷 PDF免費註冊

第 1 題20 分

(20%) 現有一名為 population.csv 的檔案,內部存著 22 個縣市共 368 個鄉鎮市區的 2018 年公投第十二案結果如右表(僅列出前幾筆資料作為示例,資料總筆數為 368 筆,也就是該 368 個鄉鎮市區)。請撰寫程式以計算匯總出「各縣市」的同意票比例。可用任何一種程式語言,但必須說明要如何讀檔,以及讀取檔案後所獲得的變數型態。(讀檔方法與變數型態說明 5%、匯總部分的程式碼 15%)

🖼️【此處有附圖,請對照原卷】

🖼️ 本題含圖表,以下為原卷對應頁面:
原卷第 1 頁

登入後即可作答並保存紀錄。

這一題的完整詳解

本題主要考驗資料讀取、處理與統計分析的能力。重點在於理解 CSV 檔案格式,能夠使用程式語言讀取並解析資料,然後進行分組統計計算。

核心觀念: 檔案 I/O、資料解析、分組聚合統計、變數型態理解。

解題步驟:

  1. 讀檔方法與變數型態說明 (5%)

    • 讀檔方法:
      • Python 範例: 使用 pandas 函式庫的 read_csv() 函式。
        import pandas as pd
        df = pd.read_csv('population.csv')
        
      • R 範例: 使用 read.csv() 函式。
        data <- read.csv('population.csv')
        
      • 一般概念: 程式語言通常提供檔案讀取函式,可以逐行讀取或一次性讀取整個檔案。對於 CSV 檔案,常見的做法是將每一行解析為一個紀錄,並根據逗號分隔符將欄位值提取出來。
    • 變數型態說明:
      • 讀取 CSV 檔案後,資料通常會被儲存為結構化的資料結構,例如:
        • Python (pandas DataFrame): DataFrame 是一種二維表格型資料結構,可以包含不同型態的欄位(如字串 object、整數 int64、浮點數 float64)。
        • R (data.frame): data.frame 也是表格型資料結構,欄位可以有字串 character、整數 integer、數值 numeric 等型態。
        • 其他語言: 可能會是陣列 (Array)、列表 (List)、字典 (Dictionary) 的組合,或者自定義的結構體 (Struct) 來表示每一筆資料。
      • 在這個問題中,我們預期會讀取到以下型態的變數:
        • 鄉鎮市區 (或類似欄位,如 Extract, Subdistrict):字串 (String/Character/Object)。
        • 縣市 (或類似欄位,如 Abc_Extract): 字串 (String/Character/Object)。
        • 同意票數 (或類似欄位,如 同意票數): 整數 (Integer/Numeric)。
        • 不同意票數 (或類似欄位,如 不同意票數): 整數 (Integer/Numeric)。
  2. 匯總部分的程式碼 (15%)

    目標: 計算每個「縣市」的「同意票比例」。比例的計算方式為:該縣市的總同意票數 / (該縣市的總同意票數 + 該縣市的總不同意票數)。

    Python 範例 (使用 pandas):

🔒

後續完整解題步驟與【答案】

免費註冊,享三天全站完整詳解閱覽。

免費註冊

第 2 題25 分

(25%) 「誘餌式標題(Clickbait)」泛指媒體設計來讓閱聽人點閱,賺取相對應的廣告收益的標題,如「你不可不知道的十件事」便應用整理資訊的方法來引誘點擊。請舉出一種你曾經看過,以誘騙點擊率為目的的標題寫法二則(5%)。請用任一種程式來設計一個函式,目的是抽取你所觀察到的誘餌式標題,函式輸入是一個新聞標題句子,函式回傳值應該為一個數值或T/F(15%)。今有一新聞標題資料庫共3000則,每則有該新聞的標題、時間、報紙來源等。我想要找人來「標記」每則新聞的誘餌性,請問要如何確保標記結果的信效度(5%)?

登入後即可作答並保存紀錄。

這一題的完整詳解

本題包含三個部分,分別是:舉例說明誘餌式標題、設計一個用於識別誘餌式標題的程式函式,以及確保人工標記信效度的方法。

核心觀念: 文本分析、自然語言處理基礎、資料標記品質控管。

第一部分:誘餌式標題寫法舉例 (5%)

誘餌式標題的共同特點是製造懸念、引發好奇、承諾驚人資訊,但內容常與標題不符,或資訊價值不高。常見的寫法有:

  1. 製造懸念/吊人胃口 (Curiosity Gap):

    • 舉例:
      • 「這名女子在超市裡做了一件讓人意想不到的事,結果讓所有人都驚呆了!」
      • 「你絕對猜不到,這背後的原因竟然是...」
      • 「專家警告:如果你每天都做這件事,後果不堪設想!」
    • 特點: 使用「你不可不知道」、「讓人意想不到」、「結果」、「原因」、「後果」等詞語,引導讀者點擊以填補資訊落差。
  2. 承諾驚人/極端資訊 (Sensationalism/Hyperbole):

    • 舉例:
      • 「瘦身成功!她只靠這個方法,一個月瘦下 10 公斤,效果驚人!」
      • 「科學家發現:這個日常習慣,竟然是導致癌症的元凶!」
      • 「史上最便宜!這款新手機的價格,讓所有人都跌破眼鏡。」
    • 特點: 使用「驚人」、「不可思議」、「史上最」、「跌破眼鏡」、「元凶」等極端詞彙,誇大效果或風險,吸引眼球。
  3. 利用情感訴求 (Emotional Appeal):

    • 舉例:
      • 「看到這段影片,你一定會感動落淚!」
      • 「這個小男孩的故事,讓無數網友鼻酸。」
    • 特點: 試圖激起讀者的同情、憤怒、喜悅等情緒。

第二部分:設計抽取誘餌式標題的函式 (15%)

這個函式需要接收一個新聞標題句子,並判斷它是否為誘餌式標題,回傳一個數值或 T/F。這裡我們設計一個基於關鍵詞和模式的簡單函式。

函式設計思路:
我們可以定義一個關鍵詞列表,包含常見於誘餌式標題的詞語(如「驚人」、「不可思議」、「你絕對猜不到」、「結果」、「原因」、「秘密」、「方法」、「瘦身」、「專家警告」等)。同時,也可以識別某些句式模式,例如以問句結尾但內容模糊,或包含數字列表(如「十件事」)但未明確說明。

Python 函式範例:

🔒

後續完整解題步驟與【答案】

免費註冊,享三天全站完整詳解閱覽。

免費註冊

第 3 題15 分

(15%) 在做數值呈現時,我們經常要將「1,23,456,7890」等數字加上前綴零(Leading zero)成為「0001,0023,
0456,7890」的型態,請寫一個函式,偵測最大數字後,把比他小的數字自動視需要補前綴零,例如有一筆資料
為「3,45,456789」,則輸出為「000003,000045, 456789」(15%)。

登入後即可作答並保存紀錄。

這一題的完整詳解

本題要求編寫一個函式,能夠根據給定的一組數字,找到其中的最大值,然後將所有比最大值小的數字進行補零操作,使其達到與最大值相同的位數。

核心觀念: 數字處理、字串格式化、尋找最大值、位數計算。

解題步驟:

  1. 輸入處理: 題目給定一個字串「3,45,456789」,需要先將其解析成數字列表。
  2. 尋找最大值: 在數字列表中找到最大的數字。
  3. 確定目標位數: 最大數字的位數即為所有數字最終需要達到的目標位數。
  4. 數字補零: 對於列表中每一個數字,若其位數小於目標位數,則在其前面補零,直到達到目標位數。
  5. 輸出結果: 將處理過的數字重新組合成字串或列表輸出。

Python 函式範例:

🔒

後續完整解題步驟與【答案】

免費註冊,享三天全站完整詳解閱覽。

免費註冊

第 4 題20 分

(20%) 簡答(每題5%)

  1. 請簡要描述 Docker為何?有何優點?
  2. 請寫出一個 SQL指令,從一資料表 mytable 選擇兩個變項 var1, var2、並篩選 var1值大於100的資料項。
  3. 列舉至少三個你曾聽過的資料庫管理系統;說明NoSQL的優缺點為何?
  4. 資料庫管理系統的 Primary key 與 foreign key是什麼?如何使用?

登入後即可作答並保存紀錄。

這一題的完整詳解

本題為簡答題,涵蓋了軟體工程、資料庫系統等領域的基礎知識,共分為四個小題,每小題 5%。

第一小題:Docker 的概念與優點 (5%)

  • Docker 是什麼?
    Docker 是一個開源的平台,用於開發、部署和運行應用程式。它利用作業系統層級的虛擬化技術(容器化,Containerization),將應用程式及其所有依賴(程式碼、運行時、系統工具、系統函式庫、設定等)打包到一個標準化的單元中,稱為「容器」(Container)。

  • Docker 的主要優點:

    1. 環境一致性 (Environment Consistency): 解決「在我的機器上可以運行」的問題。容器確保應用程式在開發、測試、生產環境中都運行在相同的環境下,減少因環境差異導致的錯誤。
    2. 快速部署與擴展 (Rapid Deployment & Scalability): 容器啟動速度非常快(秒級),可以快速部署應用程式,並能輕鬆地擴展以應對流量高峰。
    3. 資源隔離與效率 (Resource Isolation & Efficiency): 容器比傳統的虛擬機器 (VM) 更輕量級,它們共享主機作業系統的內核,因此啟動更快,佔用更少的記憶體和 CPU 資源。每個容器擁有獨立的檔案系統、進程空間和網路介面。
    4. 簡化依賴管理 (Simplified Dependency Management): 將應用程式及其所有依賴打包在一起,避免了不同應用程式之間的依賴衝突。
    5. 可移植性 (Portability): Docker 容器可以在任何安裝了 Docker 的機器上運行,無論是本地開發環境、雲端伺服器還是私有數據中心。
    6. 版本控制與回滾 (Versioning & Rollback): Docker 鏡像 (Image) 可以進行版本管理,方便回滾到舊版本。

第二小題:SQL 查詢指令 (5%)

  • 需求: 從名為 mytable 的資料表中,選擇 var1 和 var2 這兩個欄位,並且只篩選出 var1 欄位的值大於 100 的資料列。

  • SQL 指令:

    SELECT var1, var2
    FROM mytable
    WHERE var1 > 100;
    
  • 說明:

    • SELECT var1, var2:指定要從表中選取的欄位。
    • FROM mytable:指定要查詢的資料表名稱。
    • WHERE var1 > 100:這是篩選條件,表示只返回 var1 欄位值大於 100 的那些資料列。

第三小題:NoSQL 資料庫管理系統與優缺點 (5%)

  • 至少三個聽過的 NoSQL 資料庫管理系統:

    1. MongoDB: 文件導向 (Document-oriented) 資料庫,以 JSON 格式儲存數據。
    2. Redis: 鍵值對 (Key-Value) 資料庫,速度極快,常用作快取 (Cache) 和訊息佇列 (Message Queue)。
    3. Cassandra: 列族 (Column-family) 資料庫,設計用於處理大量分散式數據,高可用性和擴展性。
    4. (其他常見選項:Neo4j - 圖形資料庫, Couchbase - 文件導向, Amazon DynamoDB - 文件/鍵值)
  • NoSQL 的優點:

    1. 高擴展性 (High Scalability): 設計之初就考慮了水平擴展(Scale-out),能夠處理海量數據和高併發訪問,這對於大數據應用至關重要。
    2. 靈活的資料模型 (Flexible Data Model): 不受傳統關聯式資料庫嚴格的 Schema 限制,可以輕鬆處理結構不固定或經常變化的數據。這使得開發迭代更快。
    3. 高性能 (High Performance): 針對特定應用場景(如快速讀寫、海量數據查詢)進行優化,通常比單一的傳統關聯式資料庫性能更好。
    4. 多樣化的資料類型: 支援鍵值對、文件、列族、圖形等,能更好地適應不同類型的數據。
  • NoSQL 的缺點:

    1. 一致性較弱 (Weaker Consistency): 許多 NoSQL 資料庫採用「最終一致性」(Eventual Consistency) 模型,而不是傳統資料庫的 ACID (Atomicity, Consistency, Isolation, Durability) 中的強一致性。這意味著在寫入後,數據的讀取可能暫時不一致,這對於需要嚴格事務處理的應用(如金融交易)可能不適用。
    2. 缺乏標準化查詢語言: 與 SQL 的廣泛應用不同,NoSQL 資料庫通常有自己獨特的查詢語言或 API,學習曲線可能較陡峭,且不同資料庫之間不相容。
🔒

後續完整解題步驟與【答案】

免費註冊,享三天全站完整詳解閱覽。

免費註冊

第 5 題20 分

(20%) 給定一篇英文文章,寫一個函式,計算每個字的出現次數,並按照出現次數的多寡由大而小排序(20%,
可用熟悉的程式語言撰寫,如R、Python、JavaScript、Java、C++/C等,但勿夾雜)。

登入後即可作答並保存紀錄。

這一題的完整詳解

本題要求編寫一個函式,接收一篇英文文章,計算其中每個單字的出現次數,並按照次數從高到低排序輸出。

核心觀念: 文字處理、字串分割、字典/雜湊表(Hash Map)的使用、排序。

解題步驟:

  1. 輸入處理: 接收一篇英文文章字串。
  2. 文本預處理:
    • 將所有文字轉換為小寫,以避免大小寫不同的同一單字被計為不同單字。
    • 移除標點符號,因為標點符號不應被視為單字的一部分。
    • 將文章分割成單字列表。
  3. 單字計數: 使用字典(或雜湊表)來儲存每個單字的出現次數。遍歷單字列表,每遇到一個單字,就更新其在字典中的計數。
  4. 排序: 將字典中的鍵值對(單字及其計數)轉換為一個列表,然後根據計數(值)進行降序排序。
  5. 輸出: 返回排序後的單字及其計數列表。

Python 函式範例:

🔒

後續完整解題步驟與【答案】

免費註冊,享三天全站完整詳解閱覽。

免費註冊

其他考古題

臺灣大學《資訊科學與新聞》其他年度

其他學校的傳播與新聞考古題