Session 3
⏱ 90 min
入門無需程式背景
CLI 基礎 × 魯迅語料 × Ollama 本地 AI
學會在指令列操作文字語料、批次統計文本,並在自己的電腦上跑大型語言模型,完全不需要上傳資料到雲端。
檔案格式
›
Web 基礎
›
CLI + Ollama(本週)
›
Colab / API
›
部署
0 – 10 min
概念導入
CLI 是什麼?為何需要?
10 – 45 min
CLI 實作
魯迅文本批次處理
45 – 75 min
Ollama
安裝 → df -h → pull Gemma
75 – 90 min
收斂討論
Q&A + 下週預告
Part 1 · 0 – 10 min
為什麼要學指令列?
🖱
GUI(圖形介面)
點按按鈕。每次只能做一件事,難以重複執行。
⌨️
CLI(指令列)
輸入文字指令。一行命令可處理一千個檔案,可寫成腳本自動重跑。
📜
人文學科的優勢
語言直覺強——指令就像英文縮寫:ls = list,cd = change directory。
🤖
AI 工具的入口
Ollama、Git、Python 套件管理都需要 CLI。學好這步,後面全打通。
類比: CLI 就像直接跟廚房大廚說「把這一百顆洋蔥全部切末」;GUI 是一次點一顆、用滑鼠按「切」。
Part 1 · 環境差異
Windows vs macOS — 對照一覽
Windows PowerShell / Git Bash
開啟方式 Win + R → powershell
路徑分隔 \(反斜線)
列出檔案 dir 或 ls
切換目錄 cd 路徑
清除畫面 cls
文字搜尋 Select-String
磁碟空間 Get-PSDrive C
macOS Terminal / zsh
開啟方式 Cmd+Space → Terminal
路徑分隔 /(正斜線)
列出檔案 ls -lh
切換目錄 cd 路徑
清除畫面 clear
文字搜尋 grep
磁碟空間 df -h
Windows 學生建議: 安裝 Git for Windows (含 Git Bash),指令與 macOS 幾乎一致,課堂統一用 bash 語法示範。
Part 2 · 10 – 20 min
必學 10 條指令
bash / zsh
# 1. 知道自己在哪
$ pwd
/Users/student/Documents
# 2. 列出目前目錄的檔案(h = human-readable 大小)
$ ls -lh
# 3. 切換目錄
$ cd Downloads
# 4. 回上一層
$ cd ..
# 5. 建立新目錄
$ mkdir luxun_project
# 6. 印出文字檔前 10 行(快速預覽)
$ head -n 10 story.txt
# 7. 搜尋含有特定字詞的行(人文必學!)
$ grep "阿Q" ahq.txt
# 8. 統計字數
$ wc -w ahq.txt
12847 ahq.txt
# 9. 複製檔案
$ cp ahq.txt backup/ahq_backup.txt
# 10. 管線:搜尋並計算出現次數 ← 最重要!
$ grep -o "阿Q" ahq.txt | wc -l
178
關鍵概念 — 管線(pipe)|: 把左邊指令的「輸出」當作右邊指令的「輸入」。就像語言學的組合性原則(Principle of Compositionality)——小工具組合出大能力。
Part 3 · 20 – 45 min
實作:批次處理魯迅小說集
情境: 你從 Project Gutenberg 下載魯迅《呐喊》,想統計「阿Q」「祥林嫂」「孔乙己」各自出現幾次,並比較各篇章長度。用 Word 要手動重複十幾次;用 CLI,三行指令搞定。
步驟一:取得語料
bash
# 建立專案資料夾
$ mkdir luxun && cd luxun
# 從 Gutenberg 下載(-O 指定存檔名)
$ curl -O "https://www.gutenberg.org/cache/epub/25462/pg25462.txt"
% Total % Received ... 100 156k
# 重新命名為好記的名字
$ mv pg25462.txt nahan.txt
# 確認成功(看前 5 行)
$ head -n 5 nahan.txt
The Project Gutenberg eBook of ...
步驟二:基本探索
bash
# 全文總字數
$ wc -w nahan.txt
45823 nahan.txt
# 搜尋含「阿Q」的行,並顯示行號
$ grep -n "阿Q" nahan.txt | head -5
234: 阿Q本來也是正人...
267: 阿Q的大名,我...
# 計算「阿Q」出現總次數
$ grep -o "阿Q" nahan.txt | wc -l
178
步驟三:Python 腳本批次統計(CLI 呼叫 Python)
這裡引入 Python! 複雜任務(多關鍵詞統計、輸出表格)用 Python 腳本完成,但從 CLI 呼叫 ——這就是 CLI 與程式語言的協作模式。
bash — 建立並執行腳本
# 建立 Python 腳本
$ cat > count_chars.py << 'EOF'
import re, sys
text = open(sys.argv[1]).read()
chars = ["阿Q", "祥林嫂", "孔乙己", "閏土", "狂人"]
for c in chars:
n = len(re.findall(c, text))
bar = "█" * (n // 5)
print(f"{c:<6} {n:4}次 {bar}")
EOF
# 執行腳本
$ python3 count_chars.py nahan.txt
阿Q 178次 ████████████████████████████████████
祥林嫂 47次 █████████
孔乙己 63次 ████████████
閏土 29次 █████
狂人 18次 ███
管線思維的精髓: CLI 負責「找到檔案、呼叫工具」,Python 負責「複雜邏輯」,兩者分工合作。這也是 Unix 哲學——每個工具只做好一件事。
✏️ 課堂練習(10 min,兩人一組)
下載 nahan.txt 到自己的電腦
用 grep 找出含有「革命」的所有行,存到 revolution.txt
提示:grep "革命" nahan.txt > revolution.txt
用 wc -l revolution.txt 數一數共幾行包含「革命」
(進階)修改 count_chars.py,改成統計你感興趣的詞彙
Part 4 · 45 – 75 min
Ollama — 在自己的電腦跑大型語言模型
☁️
雲端 AI(ChatGPT 等)
資料傳送到對方伺服器。方便,但有隱私疑慮,需要網路。
💻
本地 AI(Ollama)
模型在自己電腦執行。資料不離機,可離線,適合敏感語料。
🔒
人文研究的意義
訪談逐字稿、未出版手稿、田野筆記——不適合上傳外部服務。
安裝流程
1
下載安裝程式
前往 ollama.com,依作業系統下載。Windows 是 .exe,macOS 是 .dmg。
2
安裝後開啟 Terminal / PowerShell
Ollama 安裝後會在背景執行服務(daemon),不需要另開介面,直接用指令操作。
3
確認安裝成功
輸入 ollama --version,若顯示版本號即成功。
4
⚠️ 先用 df -h 確認磁碟空間
模型檔案大(幾 GB 到幾十 GB),下載前務必確認空間足夠,否則下載到一半失敗。
5
Pull 模型 → 開始對話
用 ollama pull 下載模型,再用 ollama run 啟動互動對話。
df -h 解讀 — 確認磁碟空間
macOS / Linux bash
$ df -h
Filesystem Size Used Avail Use% Mounted on
/dev/disk3s1s1 460G 312G 148G 68% /
devfs 205K 205K 0B 100% /dev
磁碟空間視覺化(範例:460 GB 硬碟)
重點看 Avail 那欄——至少需要比模型大 2 倍的空間(含解壓縮緩衝)。
Windows 版: PowerShell 用 Get-PSDrive C,或直接開「本機」查看 C 槽。至少需要 15 GB 空餘空間再 pull。
選擇模型
gemma3:4b
~2.5 GB
需要 ≥ 8 GB RAM
今日課堂示範。輕量,多數筆電可跑,速度快。
gemma3:12b
~7 GB
需要 ≥ 16 GB RAM
品質更好。建議 M1/M2 Mac 或高規 Windows。
qwen2.5:7b
~4.7 GB
需要 ≥ 12 GB RAM
中文能力優異,適合中文語料分析。
llama3.2:3b
~2 GB
需要 ≥ 8 GB RAM
備用選項,英文能力強。
Pull → 對話 → 分析文本
下載模型
互動對話
分析魯迅文本
bash
# 確認 ollama 已安裝
$ ollama --version
ollama version is 0.5.x
# 下載 Gemma3 4B(約 5–15 分鐘,依網速)
$ ollama pull gemma3:4b
pulling manifest ...
pulling 96c415656d37... ████████████████████ 100% 2.5 GB
success
# 查看已下載的模型
$ ollama list
NAME ID SIZE MODIFIED
gemma3:4b a2af6cc3eb7f 2.5 GB 2 minutes ago
bash — 互動模式(輸入 /bye 離開)
$ ollama run gemma3:4b
>>> 你好,請用繁體中文介紹自己
你好!我是 Gemma,由 Google DeepMind 開發的大型語言模型...
>>> 魯迅「阿Q正傳」主要批判什麼社會現象?
《阿Q正傳》透過阿Q這個角色,批判了中國社會中的「精神勝利法」——
即面對失敗或屈辱時以自我欺騙代替正面應對的心理機制...
>>> /bye
bash — 管線應用:把文本餵給本地 AI
# 用 echo 傳入提示 + 文字片段
$ echo "請分析以下文字的諷刺手法:$(head -n 30 nahan.txt)" | ollama run gemma3:4b
# 更結構化:用 prompt 檔 + 管線
$ cat > prompt.txt << 'EOF'
請列出以下文字中所有人名,並說明其社會身份:
EOF
$ cat prompt.txt nahan.txt | head -n 60 | ollama run gemma3:4b
根據文本,以下人名及其社會身份如下:
1. 阿Q — 底層農民,無固定職業,住在土穀祠...
2. 趙太爺 — 地方士紳,擁有田產,代表舊地主階層...
串接預告: 接著學 Python + API,可以把「把文本餵給 AI」自動化,用程式批次處理幾十篇文章,而不是一篇一篇手動輸入。
Part 5 · 75 – 90 min
本週學到了什麼 × 下週預告
✓
CLI 基本操作
pwd / ls / cd / grep / wc / | Windows vs macOS 差異
✓
批次文本處理
從 Gutenberg 下載語料,CLI + Python 腳本統計角色頻率
✓
本地 AI(Ollama)
安裝、df -h 確認空間、pull 模型、把文本 pipe 給 AI
→
下週:Colab + API
把今天的「手動餵文本」自動化,用 Python 批次呼叫 AI
📚 本週作業
用 grep 找出你感興趣的關鍵詞,比較不同詞彙在文本中的分佈規律,或其他任何文本分析