lines = open("./dataset/shosetsu1-wakati.txt", "r") do fp
readline(fp)
end
"セキュリティ ソフト 種類 印象 どれ No どれ 俺 ここ 種類 ウイルス ウイルス 自分 知識 稲荷 ウイルス 逆 新種 ウイルス パターン ウイルス ウイルス 新種 ウイルス 両方 イラスト ソフト 動画 ソフト 動画 ソフト テロップ 動画 作品 彼女 ポケット スマ ホ メガネ デバイス ッーン 稲荷 俺 なん それ それ 世界 メガネ デバイス 鼻 栓 デバイス 鼻 そこ 光 AR これ 彼女 彼女 立体 俺 彼女 セキュリティ ソフト ノリ クマ キャクター それ 人気 本当 俺 これ 通り 答え 誰 考え 相手 人工 知能 相手 電気 電子 機器 ローン 最新 コンピュータ 性能 ローン 中学生 社会 国会 議事堂 俺 それ 技術 家 PC ソフトウェア これ ウイルス ウェブサイト ソース コード 世界中 俺 胸 ソース コード 俺 人 人 悪意 大学 ひよっこ ソース コード 彼女 僕 それ それ 方向 兆候 読み これ 闇 稲荷 俺 バイト そっ 稲荷 自転車 颯爽 稲荷 なに ドア 鍵 母さん 鍋 声 夕飯 物 なに アンタ 感じ お袋 身の回り 稲荷 俺 調子 鬱々 サンキュー モツ 大盛り モツ やりとり あと 眠"
# 重複をなくすためSet()でくくり配列にもどす.
word = [v for v in Set(split(lines, " "))]
102-element Array{SubString{String},1}: "ウェブサイト" "母さん" "テロップ" "大盛り" "社会" "イラスト" "中学生" "家" "読み" "夕飯" "知識" "闇" "答え" ⋮ "No" "胸" "方向" "ソフト" "颯爽" "動画" "ソース" "これ" "ひよっこ" "鍵" "最新" "機器"
# 重複をなくすためSet()でくくり配列にもどす.
sample_text = [v for v in Set(split("I am a programmer like dog", " "))]
6-element Array{SubString{String},1}: "programmer" "I" "am" "a" "like" "dog"
function sigmoid(z)
return 1 / (1 + exp(-z))
end
sigmoid (generic function with 1 method)
function softmax(vtw, vw)
sum_vtw = sum(vtw)
result = []
for i in 1:length(vtw)
push!(result, (exp(dot(vtw[i], vw[i])) / exp(dot(sum_vtw, vw[i]))))
end
return result
end
softmax (generic function with 1 method)
vtw = [0.1,0.4,3.3]
vw = [0.2,2.2,0.4]
3-element Array{Float64,1}: 0.2 2.2 0.4
softmax(vtw',vw)
3-element Array{Any,1}: 0.477114 0.000564257 0.818731
function one_hot_vectorization(word_array)
one_hot_vec = Any[]
for i in 1:length(word_array)
zeros_array = zeros(length(word_array))'
zeros_array[i] = 1.0
push!(one_hot_vec, zeros_array)
end
return one_hot_vec
end
one_hot_vectorization (generic function with 1 method)
sample_text
6-element Array{SubString{String},1}: "programmer" "I" "am" "a" "like" "dog"
vec_dict = Dict{String, Any}()
W = one_hot_vectorization(sample_text)
for i in 1:length(W)
vec_dict[sample_text[i]] = W[i]
end
keys(vec_dict)
Base.KeyIterator for a Dict{String,Any} with 6 entries. Keys: "programmer" "I" "am" "a" "like" "dog"
values(vec_dict)
Base.ValueIterator for a Dict{String,Any} with 6 entries. Values: [1.0 0.0 … 0.0 0.0] [0.0 1.0 … 0.0 0.0] [0.0 0.0 … 0.0 0.0] [0.0 0.0 … 0.0 0.0] [0.0 0.0 … 1.0 0.0] [0.0 0.0 … 0.0 1.0]
vec_dict["programmer"]
1×6 RowVector{Float64,Array{Float64,1}}: 1.0 0.0 0.0 0.0 0.0 0.0
W = one_hot_vectorization(sample_text) # これが重みWになる
6-element Array{Any,1}: [1.0 0.0 … 0.0 0.0] [0.0 1.0 … 0.0 0.0] [0.0 0.0 … 0.0 0.0] [0.0 0.0 … 0.0 0.0] [0.0 0.0 … 1.0 0.0] [0.0 0.0 … 0.0 1.0]
h = vec_dict["dog"]*vec_dict["dog"]'
1.0