分詞時用到了split函式:
split() 通過指定分隔符對字串進行切片,如果引數 num 有指定值,則分隔 num+1 個子字串
str
.split(
str=
"", num=string.count(
str)
)
為方便模型處理,我們需要將字串轉換為數字。因此我們需要先構建乙個字典,其中的內容將每個詞對映到乙個唯一的索引編號:
python 字典(dictionary) get() 函式返回指定鍵的值,如果值不在字典中返回預設值。
dict
=print
"value : %s"
%dict
.get(
'age'
)print
"value : %s"
%dict
.get(
'***'
,"never"
)
輸出:
value :
27value : never
分詞的常用工具:spacy和nltk。
假設序列w1,
w2,…
,w
tw_1, w_2, \ldots, w_t
w1,w2
,…,
wt中的每個詞是依次生成的,我們有
p (w
1,w2
,…,w
t)=∏
t=1t
p(wt
∣w1,
…,wt
−1)=
p(w1
)p(w
2∣w1
)⋯p(
wt∣w
1w2⋯
wt−1
)p(w_1, w_2, \ldots, w_t)= \prod_^t p(w_t \mid w_1, \ldots, w_)\\= p(w_1)p(w_2 \mid w_1) \cdots p(w_t \mid w_1w_2\cdots w_)
p(w1,
w2,
…,wt
)=t
=1∏t
p(w
t∣w
1,…
,wt−
1)=
p(w1
)p(
w2∣
w1)
⋯p(w
t∣w
1w2
⋯wt
−1)
詞的概率可以通過該詞在訓練資料集中的相對詞頻來計算:
p ^(
w1)=
n(w1
)n
\hat p(w_1) = \frac
p^(w1
)=nn
(w1
)給定 w1 情況下, w2 的條件概率可以計算為:
p ^(
w2∣w
1)=n
(w1,
w2)n
(w1)
\hat p(w_2 \mid w_1) = \frac
p^(w2
∣w1
)=n(
w1)
n(w1
,w2
)其中 n(w1,w2) 為語料庫中以 w1 作為第乙個詞, w2 作為第二個詞的文字的數量。
基於 n−1 階馬爾可夫鏈,我們可以將語言模型改寫為:
p (w
1,w2
,…,w
t)=∏
t=1t
p(wt
∣wt−
(n−1
),…,
wt−1
).
p(w_1, w_2, \ldots, w_t) = \prod_^t p(w_t \mid w_, \ldots, w_) .
p(w1,
w2,
…,wt
)=t
=1∏t
p(w
t∣w
t−(n
−1)
,…,w
t−1
).時序資料的取樣
時序資料的乙個樣本通常包含連續的字元。假設時間步數為5,樣本序列為5個字元,即「想」「要」「有」「直」「公升」。該樣本的標籤序列為這些字元分別在訓練集中的下乙個字元,即「要」「有」「直」「公升」「機」,即 x =「想要有直公升」, y =「要有***」。有兩種方式對時序資料進行取樣,分別是隨機取樣和相鄰取樣:
在隨機取樣中,每個樣本是原始序列上任意擷取的一段序列,相鄰的兩個隨機小批量在原始序列上的位置不一定相毗鄰。
在相鄰取樣中,相鄰的兩個隨機小批量在原始序列上的位置相毗鄰。
set() 函式建立乙個無序不重複元素集,可進行關係測試,刪除重複資料,還可以計算交集、差集、並集等。
scatter_(input, dim, index, src)將src中資料根據index中的索引按照dim的方向填進input中:
>>
> z = torch.zeros(2,
4).scatter_(
1, torch.longtensor([[
2],[
3]])
,1.23
)>>
> z
0.0000
0.0000
1.2300
0.0000
0.0000
0.0000
0.0000
1.2300
[torch.floattensor of size 2x4]
動手學深度學習 打卡01
均方誤差損失函式 l i w,b 1 2 y i y i 2 l mathbf,b frac left hat y right 2,l i w b 21 y i y i 2,小批量隨機梯度下降 mini batch stochastic gradient descent w,b w,b b i b ...
動手學深度學習打卡筆記1
資料基礎 張量和梯度 tensor 張量 可以看成是乙個多維陣列。標量是0維張量,向量是1維張量,矩陣則是2維張量。在深度學習中涉及到大量的矩陣和向量的相互計算 向量計算的速度更快 在pytorch中,torch.tensor是儲存和變換資料的主要工具。除了基本的矩陣向量 同形 的計算之外,對於不同...
動手學深度學習Pytorch版打卡記錄 2
自然語言預處理 1.分詞 對於英文,有天然的空格作為分隔符號,但是對於中文,我們需要進行分詞處理,把文章變成詞彙序列,再去重成為下面所說的詞彙表。詞彙表是文章 現過的所有的單詞的不重複列表 只出現一次 2.詞彙表 自然語言預處理,需要去掉停止詞,新增符號。核心是將所有的文字內容轉換成編號進行處理。我...