使用者:王瓊畦
出自 淡水維基館
自我介紹[編輯]
- 姓名:王瓊畦
- 就讀學校:淡江大學資訊與圖書館學系碩士班 一年級
- 介紹:目前專注於資訊科學與數位人文的交叉研究;擁有資訊管理背景,並對於人工智慧(AI)在資訊檢索與知識管理中的應用產生興趣,因此選擇進一步探索圖書資訊學領域的數據處理與應用技術。
在學術研究上,指導老師為張嘉玲老師,目前主要跟隨老師學習圖書資訊學領域的 AI 應用,包括:
- 智能推薦系統(Recommender Systems):探討如何透過 AI 演算法優化學術與圖書館資源推薦,提高資訊檢索的精準度與個人化體驗。
- 數據分析與資訊行為研究:研究使用者在數位環境中的資訊搜尋與決策模式,並透過數據分析技術挖掘行為趨勢。
研究領域[編輯]
目前的研究方向主要與LIS中的 AI 應用相關,聚焦於:
- 智能推薦系統:研究如何透過機器學習與人工智慧演算法提升學術資源推薦的準確度,應用於圖書館與學術資料庫。
- 資訊檢索優化:透過 AI 技術改進檢索機制,提高資訊查找的效率與個人化體驗。
- 數據分析與使用者行為:分析數位環境下的資訊需求與使用行為,以提供更符合需求的資訊服務。
修課動機[編輯]
本課程與我的研究方向是有能應用的地方,我希望透過修習這門課能夠:
- 了解數據庋用(Data Curation)的方法,以應用於圖書館與學術資源管理。
- 學習數位人文中的文本處理技術,以增進資料分析能力。
- 探索知識圖譜(Knowledge Graph)在文化與歷史資料上的應用,思考是否能與資訊科學結合。
課程心得[編輯]
期初心得[編輯]
個人期初認知的名詞定義[編輯]
- 數位人文:數位人文是利用數位技術來研究與呈現人文領域的內容,讓傳統人文研究能夠透過科技方法更有效率地進行。
- 專題:專題是針對特定主題進行深入研究或探討的過程,通常有明確的方向、方法與成果,並可能涉及跨領域的應用。
- 研究:研究是為了探索問題、尋找答案而進行的系統性調查與分析,透過各種方法收集資料、整理資訊,進而獲得新的發現或驗證既有理論。
- 資料庋用:資料庋用是對資料的管理與應用,包括收集、整理、保存與提供使用,確保資料能夠長期維護並發揮價值。
- 數位策展:數位策展是透過數位工具來規劃與呈現內容,使展覽或資訊能夠更有系統性地展示,並提供更豐富的互動與體驗。
第一週 2/18[編輯]
今天的課程讓我對數位人文的概念有了更清楚的認識,了解到它是數位技術與人文研究的結合,能幫助資料的整理、分析與呈現。課堂上也強調研究不只是閱讀與整理資料,而是要透過實作與觀察來深入探討問題,這讓我對研究的方式有了新的思考。此外,數位策展與資料庋用的概念讓我理解數位技術在文化內容管理與傳播中的應用價值,數位工具不只是輔助研究,還能提升使用者體驗。這讓我開始思考如何結合智能推薦技術與數位人文,未來希望能學習更多相關應用方式。
每週心得[編輯]
第二週 2/25[編輯]
本週的學習讓我更清楚地理解了資料庋用(Data Curation)與數位策展(Digital Curation)的概念區別。資料庋用側重於資料的整理、管理與長期保存,而數位策展則關注如何將資料以敘事方式呈現,供使用者理解與互動。透過這些概念的梳理,我開始思考該如何應用資料庋用的方法來進行研究,並找到了適合切入的研究起點。
第三週 3/4[編輯]
這週的課程深入探討了淡水的歷史、地理環境及其演變,讓我對淡水河口的發展產生了濃厚的興趣。透過老師的講解,我發現淡水不僅是貿易與文化交流的重要據點,還蘊藏著許多與地方發展相關的歷史故事與傳說。這些內容讓我對專案的發想更加清晰,並開始構思如何透過數據庋用與文本分析來重構淡水的地方文化脈絡,進一步加強靈異故事與歷史背景的連結。
第四週 3/11[編輯]
聽完老師的分析後,對於如何建構淡水河口傳說故事的資料庫與後續資料庋用有了更明確的方向。老師提醒我才想到資料庫是需要建立的,目前會先從建立基礎的資料表入手,之後再逐步加入人物、地點、事件的關聯與文本分析,這讓整個研究架構變得可以訂執行的。
第五週 3/18[編輯]
這一週我聽從老師的建議,先試著建立淡水傳說故事資料庫的 ERD(實體關係圖),藉此明確資料的結構與彼此之間的關聯。透過ERD設計過程,我可以釐清故事、人物、地點、事件之間的連結方式,也更了解資料庫設計對後續建構知識圖譜的重要性。老師的建議非常實用,讓我更有方向感,也提升了後續實際程式建構的信心。
第6週 3/25[編輯]
這一週我試著聯繫古蹟博物館,但沒得到回應,可能還需要再進一步的聯繫;然後資料庫的建立目前請ChatGP幫忙建置出一個網頁,但有包含基本資料但還在測試階段,所以目前還沒辦法完整呈現,預期測試希望的可以加上知識圖譜跟地圖來做展示,AI的部分還沒做分析,而知識圖譜的部分可能還需要修改一下設定。
第7週 4/8[編輯]
這一週資料有限的原因,有跟老師討論一下最後決定做成淡水在地故事而不限於傳說故事。後面開始聽演講有聽到關於元宇宙的部分,我有體驗過類似的東西但還是覺得還蠻奇特的。
第8週期中報告 4/15[編輯]
這一週報告完老師有點出一個重要問題,怎麼做連結,有些故事並沒辦法做特殊的連結要怎麼辦,標準的設定也要有所依據;因此最後決定再聚焦在人物誌的部分,利用AI來做人物誌的知識圖譜。
期末心得[編輯]
研究主題:淡水故事資料庋用[編輯]
除了 AI 應用研究,我同時關注數位人文領域,並正在進行淡水河口故事資料庋用專案,此專案主要目標為:
- 文本整理與標註:從口述訪談與網路文本中收集淡水故事,並建立標註系統。(文本結構探索) -淡水拜門口
- 文本分析與故事結構探索:分析故事中的人名、地名、事件,探討不同時代的文化變遷與社會影響。
- 知識圖譜建構:透過「人物—地點—事件」關聯分析,建立視覺化互動圖譜,幫助讀者與研究者理解故事脈絡。
- 數位詮釋與展示:透過網站或數位策展技術,提供讀者多層次的文化探索體驗,讓故事不僅僅是文本,而是可互動的知識體系。(技術上可以的話)
資料庫建構建議(初階)[編輯]
資料表設計[編輯]
- 故事 (stories):儲存淡水在地傳說故事主體內容。
- 人物 (persons):登錄出現在故事中的人物角色。
- 地點 (locations):描述故事所發生的地理位置。
- 事件(event)標記故事中具有代表性的事件或動作
- 關聯表 (story_person、story_location):標示故事與人物、地點之間的關聯。
- Involves(涉及)Story ↔ Person :多對多(M:N)一則故事可能包含多位人物
- OccursAt(發生於)Story ↔ Location:多對多(M:N)一則故事可能涉及多個地點
- Contains(涵蓋)Story ↔ Event:多對多(M:N)一則故事可能包含多個事件
stories(故事主表)[編輯]
功能:儲存每則淡水在地故事。
欄位說明:
- id:故事唯一識別碼(主鍵)
- title:故事標題
- source:故事來源(如:口述、網路、文獻)
- date:建檔日期
persons(人物表)[編輯]
功能:紀錄故事中出現的人物角色。
欄位說明:
- person_id:人物唯一識別碼(主鍵)
- name:人物名稱
- description:人物簡介(如背景、形象)
locations(地點表)[編輯]
功能:紀錄故事發生的地點。
欄位說明:
- location_id:地點唯一識別碼(主鍵)
- name:地點名稱
- description:地點說明(如歷史、地理、文化背景)
events(事件表)[編輯]
功能:紀錄故事中出現的重要事件。
欄位說明:
- event_id:事件唯一識別碼(主鍵)
- name:事件名稱
- description:事件內容或摘要
story_person(故事 × 人物 中介表)[編輯]
功能:建立故事與人物之間的多對多關聯。
欄位說明:
- story_id:對應 stories 表中的 id
- person_id:對應 persons 表中的 person_id
story_location(故事 × 地點 中介表)[編輯]
功能:建立故事與地點之間的多對多關聯。
欄位說明:
- story_id:對應 stories 表中的 id
- location_id:對應 locations 表中的 location_id
story_event(故事 × 事件 中介表)[編輯]
功能:建立故事與事件之間的多對多關聯。
欄位說明:
- story_id:對應 stories 表中的 id
- event_id:對應 events 表中的 event_id
中介表用途說明(為什麼要這樣設計?)[編輯]
一則故事可能包含 多個人物、地點、事件。
同一個人物也可能出現在 多則故事中。
使用中介表可以:
- 避免重複輸入資料(例如重複登記「宮燈姐姐」)
- 支援擴充性(可持續新增人物或地點)
- 有助於製作「知識圖譜」與「互動地圖」
Python + SQLite 實作範例[編輯]
以下是ChatGPT幫我設計如何建立資料庫 tamsui_stories.db、創建資料表、插入與查詢資料的完整流程:
id INTEGER PRIMARY KEY AUTOINCREMENT,
標題 TEXT NOT NULL,
內容 TEXT NOT NULL,
關鍵字 TEXT,
編輯時間 TIMESTAMP DEFAULT CURRENT_TIMESTAMP
import sqlite3
# 建立或連接資料庫
conn = sqlite3.connect('tamsui_stories.db')
cursor = conn.cursor()
# 建立故事表
cursor.execute(
CREATE TABLE IF NOT EXISTS stories (
id INTEGER PRIMARY KEY AUTOINCREMENT,
title TEXT NOT NULL,
content TEXT NOT NULL,
source TEXT,
date TEXT
)
)
# 建立人物表
cursor.execute(
CREATE TABLE IF NOT EXISTS persons (
person_id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT NOT NULL,
description TEXT
)
)
# 建立地點表
cursor.execute(
CREATE TABLE IF NOT EXISTS locations (
location_id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT NOT NULL,
description TEXT
)
)
# 建立事件表
cursor.execute(
CREATE TABLE IF NOT EXISTS events (
event_id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT NOT NULL,
description TEXT
)
)
# 建立關聯表:故事-人物
cursor.execute(
CREATE TABLE IF NOT EXISTS story_person (
story_id INTEGER,
person_id INTEGER,
FOREIGN KEY(story_id) REFERENCES stories(id),
FOREIGN KEY(person_id) REFERENCES persons(person_id)
)
)
# 建立關聯表:故事-地點
cursor.execute(
CREATE TABLE IF NOT EXISTS story_location (
story_id INTEGER,
location_id INTEGER,
FOREIGN KEY(story_id) REFERENCES stories(id),
FOREIGN KEY(location_id) REFERENCES locations(location_id)
)
)
# 建立關聯表:故事-事件
cursor.execute(
CREATE TABLE IF NOT EXISTS story_event (
story_id INTEGER,
event_id INTEGER,
FOREIGN KEY(story_id) REFERENCES stories(id),
FOREIGN KEY(event_id) REFERENCES events(event_id)
)
)
# 插入一則故事
cursor.execute(
INSERT INTO stories (title, content, source, date)
VALUES (?, ?, ?, ?)
, (
'淡水河口的白衣女子',
'每當月圓之夜,在淡水河口總會出現一名穿著白衣的女子,她會靜靜站在岸邊...',
'口述訪談',
'2024-03-01'
))
# 查詢所有故事並顯示
cursor.execute('SELECT * FROM stories')
stories = cursor.fetchall()
for story in stories:
print(f'故事編號:{story[0]}')
print(f'標題:{story[1]}')
print(f'內容:{story[2]}')
print(f'來源:{story[3]}')
print(f'日期:{story[4]}')
print('-----')
# 儲存變更並關閉
conn.commit()
conn.close()
