作業三: NotebookLM + graphviz 繪製族譜
- 前往 NotebookLM、 登入你的 google 帳號、 建立一個新的 notebook。
- 新增一個 「來源」, 選取 「連結-網站」, 填入 吳火獅頁面 的網址。
- 輸入對話: 「請建立一個名為 wu-family.csv 的檔案, 列出資料來源裡面提到的所有 「子或女,父或母」 關係組合, 共四個欄位, 分別是: 子女姓名、子女性別、父母姓名、父母性別。」
- 輸入對話: 「請把上述資料轉為 graphviz 可以處理的 wu-family.dot 檔, 男性以長方形框呈現, 女性以楕圓形框呈現, 箭頭由子女指向父母。 長輩放在較高的位置, 晚輩放在較低的位置。」
- 把回應貼到 wu-family.dot 文字檔內, 存檔、離開、下指令:
dot -Tsvg wu-family.dot > wu-family.svg
- 用 mv 指令把 wu-family.svg 放到 ~/public_html/ 底下, 用瀏覽器查看成果圖片。
- 如果上下方向顛倒了, 可以在 wu-family.dot 裡面加上一句:
rankdir = BT;
, 重跑一次 dot 指令及搬檔案流程。 - 跟同學的結果比較, 是否有出入?
補充: 如果 wu-family.csv 列數太多, NotebookLM 沒有幫你完整轉換成 wu-family.dot, 可以這樣做:
- 手動把 wu-family.csv 轉成 .dot 格式的 edges:
cut -d, -f 1,3 wu-family.csv | perl -pe 's/(.*),(.*)/$1 -> $2;/' > edges.txt
- 把 wu-family.csv 拆成左右兩半、
垂直合併成一個「含有所有人名與性別」的檔案、
再排序、把重複的刪掉:
cut -d, -f 1-2 wu-family.csv > a.csv cut -d, -f 3-4 wu-family.csv > b.csv sort a.csv b.csv | uniq > person.csv
- 從 person.csv 當中篩選出男性清單、 改成 .dot 需要的格式:
perl -ne 'print "$1;\n" if /(.*),男/' person.csv > male.txt
- 從 person.csv 當中篩選出女性清單、 改成 .dot 需要的格式:
perl -ne 'print "$1;\n" if /(.*),女/' person.csv > female.txt
- 用 geany 或 nodepad++ 或 nano 等等文字編輯器把 male.txt、 female.txt、 edges.txt 貼到 .dot 檔內適當的地方。
以上指令不需要記, 但你需要 知道 linux 指令很適合處理文字檔, 取代重複性、機械化的動作。 一旦你知道這件事可以化簡成文字檔的處理, 就可以叫 chatgpt 幫你下 linux 指令。
這個作業希望讓你知道:
- AI 的答案有隨機性, 經常前後不一致, 當然也會犯錯, 不要全然相信它。
- 整理資料時, 文字格式的檔案是 LLM 年代的王道!
- 在 LLM 年代, 稍微了解一下各種 「微語言」 的功用, 可以讓你很懶惰地變強大!