快速答案
本答案頁包含 Python 分詞與文字向量 的 4 道選擇題、4 道填空題和 4 道輸出預測題,每題都給出準確答案和簡短解釋。
答案已完整展示,建議先嘗試作答,再用本頁核對。第一次練習最好從互動練習頁開始。
分詞做了什麼?
答案: 把文字切成更小的單元
為什麼: 分詞把字串變成後續步驟可以索引或嵌入的詞元。
為什麼要構造一個共用詞表?
答案: 讓每篇文件使用相同的向量維度
為什麼: 共用詞表讓每個詞元在所有文件中都有穩定位置。
詞袋向量忽略了什麼?
答案: 詞序
為什麼: 詞袋保留計數,但丟棄詞元出現的順序。
執行結果是什麼?
import re
def tokenize(text):
return re.findall(r"[a-z']+", text.lower())
print(tokenize("Python, text!"))答案: ['python', 'text']
為什麼: 文字先轉成小寫,正規只保留字母,因此標點被去掉。
補全提取小寫單字詞元的正規表達式。
import re
text = "Python, text!"
print(re.findall(r"____", text.lower()))答案: [a-z']+
為什麼: 字元類接受字母和撇號,加號表示一個或多個。
補全點積中用於配對的函式。
a = [1, 2]
b = [3, 4]
print(sum(x * y for x, y in ____(a, b)))答案: zip
為什麼: zip 把兩個向量中對應位置的元素配對。
補全零向量保護條件。
import math
def cosine(a, b):
norm_a = math.sqrt(sum(x * x for x in a))
norm_b = math.sqrt(sum(y * y for y in b))
if not norm_a or not ____:
return 0.0
return 1.0
print(cosine([0, 0], [1, 1]))答案: norm_b
為什麼: 任一長度為 0 都會讓分母為零,所以兩個都要檢查。
補全用於增加計數的詞表尋找。
index = {"python": 0, "text": 1}
counts = [0, 0]
counts[____["text"]] += 1
print(counts)答案: index
為什麼: 索引把詞元映射到向量中的位置。
這段程式列印出什麼?
import re
def tokenize(text):
return re.findall(r"[a-z']+", text.lower())
print(tokenize("Python makes text small."))答案: ['python', 'makes', 'text', 'small']
為什麼: 函式把句子轉成小寫,並提取四個單字詞元。
程式碼的輸出結果是什麼?
def vector(text, index):
counts = [0] * len(index)
for word in text.split():
if word in index:
counts[index[word]] += 1
return counts
index = {"python": 0, "text": 1}
print(vector("python text text", index))答案: [1, 2]
為什麼: 向量記錄一個 python 詞元和兩個 text 詞元。
螢幕上會顯示什麼?
import math
def cosine(a, b):
dot = sum(x * y for x, y in zip(a, b))
norm_a = math.sqrt(sum(x * x for x in a))
norm_b = math.sqrt(sum(y * y for y in b))
return dot / (norm_a * norm_b)
print(round(cosine([1, 1], [2, 2]), 1))答案: 1.0
為什麼: 兩個向量方向相同,所以餘弦相似度是 1.0。
這段程式碼會輸出什麼?
import math
def cosine(a, b):
dot = sum(x * y for x, y in zip(a, b))
norm_a = math.sqrt(sum(x * x for x in a))
norm_b = math.sqrt(sum(y * y for y in b))
if not norm_a or not norm_b:
return 0.0
return dot / (norm_a * norm_b)
print(round(cosine([1, 0], [0, 1]), 1))答案: 0.0
為什麼: 兩個向量沒有共用維度,所以點積為零。
先試一遍題目
打開 Python 分詞與文字向量 練習頁,用即時回饋回答同樣的 12 道題。