欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python機(jī)器學(xué)習(xí)NLP自然語言處理基本操作詞向量模型

 更新時(shí)間:2021年09月21日 14:36:55   作者:我是小白呀  
本文是Python機(jī)器學(xué)習(xí)NLP自然語言處理系列文章,帶大家開啟一段學(xué)習(xí)自然語言處理 (NLP) 的旅程。本篇文章主要學(xué)習(xí)NLP自然語言處理基本操作詞向量模型

概述

從今天開始我們將開啟一段自然語言處理 (NLP) 的旅程. 自然語言處理可以讓來處理, 理解, 以及運(yùn)用人類的語言, 實(shí)現(xiàn)機(jī)器語言和人類語言之間的溝通橋梁.

在這里插入圖片描述

詞向量

我們先來說說詞向量究竟是什么. 當(dāng)我們把文本交給算法來處理的時(shí)候, 計(jì)算機(jī)并不能理解我們輸入的文本, 詞向量就由此而生了. 簡單的來說, 詞向量就是將詞語轉(zhuǎn)換成數(shù)字組成的向量.

在這里插入圖片描述

當(dāng)我們描述一個(gè)人的時(shí)候, 我們會(huì)使用身高體重等種種指標(biāo), 這些指標(biāo)就可以當(dāng)做向量. 有了向量我們就可以使用不同方法來計(jì)算相似度.

在這里插入圖片描述

那我們?nèi)绾蝸砻枋稣Z言的特征呢? 我們把語言分割成一個(gè)個(gè)詞, 然后在詞的層面上構(gòu)建特征.

在這里插入圖片描述

詞向量維度

詞向量的維度越高, 其所能提供的信息也就越多, 計(jì)算結(jié)果的可靠性就更值得信賴.

50 維的詞向量:

在這里插入圖片描述

用熱度圖表示一下:

在這里插入圖片描述

在這里插入圖片描述

從上圖我們可以看出, 相似的詞在特征表達(dá)中比較相似. 由此也可以證明詞的特征是有意義的.

Word2Vec

Word2Vec 是一個(gè)經(jīng)過預(yù)訓(xùn)練的 2 層神經(jīng)網(wǎng)絡(luò), 可以幫助我們將單詞轉(zhuǎn)換為向量. Word2Vec 分為兩種學(xué)習(xí)的方法: CBOW 和 Skip-Gram.

在這里插入圖片描述

CBOW 模型

CBOW (Continuous Bag-of-Words) 是根據(jù)單詞周圍的上下文來預(yù)測中間的詞. 如圖:

在這里插入圖片描述

Skip-Gram 模型

Skip-Gram 用于預(yù)測同一句子中當(dāng)前單詞前后的特定范圍內(nèi)的單詞.

在這里插入圖片描述

Skip-Gram 所需的訓(xùn)練數(shù)據(jù)集:

在這里插入圖片描述

在這里插入圖片描述

負(fù)采樣模型

如果一個(gè)語料庫稍微大一些, 可能的結(jié)果簡直太多了. 詞向量模型的最后一層相當(dāng)于 softmax (轉(zhuǎn)換為概率), 計(jì)算起來會(huì)非常耗時(shí).

我們可以將輸入改成兩個(gè)單詞, 判斷這兩個(gè)詞是否為前后對應(yīng)的輸入和輸出, 即一個(gè)二分類任務(wù).

在這里插入圖片描述

在這里插入圖片描述

但是我們會(huì)發(fā)現(xiàn)一個(gè)問題, 此時(shí)的訓(xùn)練集構(gòu)建出來的標(biāo)簽全為 1, 無法進(jìn)行較好的訓(xùn)練. 這時(shí)候負(fù)采樣模型就派上用場了. (默認(rèn)為 5 個(gè))

在這里插入圖片描述

在這里插入圖片描述

詞向量的訓(xùn)練過程

1. 初始化詞向量矩陣

在這里插入圖片描述

在這里插入圖片描述

2. 神經(jīng)網(wǎng)絡(luò)反向傳播

通過神經(jīng)網(wǎng)絡(luò)反向傳播來計(jì)算更新. 此時(shí)不光更新權(quán)重參數(shù)矩陣 W, 也會(huì)更新輸入數(shù)據(jù).

在這里插入圖片描述

詞向量模型實(shí)戰(zhàn)

格式:

Word2Vec(tokenized, sg=1, window=5, min_count=2, negative=1, sample=0.001, hs=1, workers=4)

參數(shù):

seg: 1 為skip-gram算法, 對低配詞敏感. 默認(rèn) sg=0, CBOW算法

window: 句子中當(dāng)前詞與目標(biāo)詞時(shí)間的最大距離. 3表示在目標(biāo)詞前看3-b個(gè)詞, 后面看b個(gè)詞 (b在0-3之間隨機(jī))

min_count: 對詞進(jìn)行過濾, 頻率小于min-cout的單詞會(huì)被忽視, 默認(rèn)值為5

訓(xùn)練模型

import jieba
from gensim.models import Word2Vec
# 獲取停用詞
file = open("../stop_words/cn_stopwords.txt", encoding="utf-8")
stop_word = set(file.read())
print("停用詞:", stop_word)  # 調(diào)試輸出
# 定義語料
content = [
    "長江是中國第一大河,干流全長6397公里(以沱沱河為源),一般稱6300公里。流域總面積一百八十余萬平方公里,年平均入海水量約九千六百余億立方米。以干流長度和入海水量論,長江均居世界第三位。",
    "黃河,中國古代也稱河,發(fā)源于中華人民共和國青海省巴顏喀拉山脈,流經(jīng)青海、四川、甘肅、寧夏、內(nèi)蒙古、陜西、山西、河南、山東9個(gè)省區(qū),最后于山東省東營墾利縣注入渤海。干流河道全長5464千米,僅次于長江,為中國第二長河。黃河還是世界第五長河。",
    "黃河,是中華民族的母親河。作為中華文明的發(fā)祥地,維系炎黃子孫的血脈.是中華民族民族精神與民族情感的象征。",
    "黃河被稱為中華文明的母親河。公元前2000多年華夏族在黃河領(lǐng)域的中原地區(qū)形成、繁衍。",
    "在蘭州的“黃河第一橋”內(nèi)蒙古托克托縣河口鎮(zhèn)以上的黃河河段為黃河上游。",
    "黃河上游根據(jù)河道特性的不同,又可分為河源段、峽谷段和沖積平原三部分。 ",
    "黃河,是中華民族的母親河。"
]
# 分詞
seg = [jieba.lcut(sentence) for sentence in content]
# 去除停用詞 & 標(biāo)點(diǎn)符號操作
tokenized = []
for sentence in seg:
    words = []
    for word in sentence:
        if word not in stop_word & {'(', ')'}:
            words.append(word)
    tokenized.append(words)
print(tokenized)  # 調(diào)試輸出
# 創(chuàng)建模型
model = Word2Vec(tokenized, sg=1, window=5, min_count=2, negative=1, sample=0.001, hs=1, workers=4)
# 保存模型
model.save("model")

輸出結(jié)果:

Building prefix dict from the default dictionary ...
Loading model from cache C:\Users\Windows\AppData\Local\Temp\jieba.cache
停用詞: {'它', '算', '比', '庶', '針', '乎', '相', '幸', '上', '慢', '叫', '儻', '時(shí)', '出', '爾', '吱', '著', '要', '身', '所', '大', '?', '是', '家', '介', '幾', '隨', '由', '況', '”', '像', '有', '兒', '歸', '果', '簡', '唷', '您', '啦', '間', '止', '僅', '啊', '喂', '步', '待', ' ', '豈', '料', '二', '或', '結(jié)', '乃', '竟', '人', '方', '若', '無', '3', '哼', '6', '鑒', '莫', '誰', '會(huì)', '們', '嗎', '呸', '讓', '根', '固', '惟', '致', '余', '就', '乘', '拿', '啐', '換', '循', '次', '哩', '代', '死', '類', '\n', '經(jīng)', '始', '問', '較', ':', '咧', '否', '令', '登', '首', '許', '云', '尚', '得', '這', '諸', '夫', '罷', '見', '多', '種', '嘿', '該', '然', '小', '除', '雖', '兩', '呀', '己', '極', '天', '前', '咦', '進(jìn)', '設(shè)', '望', '對', '彼', '徒', '反', '咚', '$', '哎', '唉', '呼', '噠', '受', '直', '據(jù)', '連', '體', '哇', '寧', '?', '遵', '言', '任', '今', '點(diǎn)', '憑', '緊', '俺', '獨(dú)', '如', '旦', '正', '哦', '下', '已', '打', '接', '呃', '》', '可', '在', '邊', '縱', '何', '叮', '矣', '每', '過', '沿', '則', '盡', '樣', '愿', '!', '全', '唄', '0', '值', '非', '《', '另', '轉(zhuǎn)', '給', '成', '年', '切', '特', '往', '恰', '5', '巴', '處', '依', '噯', '哪', '悉', '拘', '到', '些', '眨', '賴', '巧', '逐', '眼', '自', '2', '說', '此', '越', '基', '消', '哧', '至', '嘩', '很', '毋', '用', '省', '般', '借', '。', '還', '曰', '最', ',', '冒', '述', '誠', '光', '兼', '啥', '個(gè)', '呵', '別', '其', '免', '曾', '繼', '怎', '先', '甚', '使', '譬', '8', '嗚', '再', '鄙', '抑', '候', '了', '總', '以', '他', '都', '倘', '一', '截', '離', '作', '沖', '啪', '道', '分', '喻', '靠', '因', '等', '什', '達(dá)', '噓', '朝', '按', '句', '話', '者', '及', '管', '故', '關(guān)', '外', '嘍', '孰', '兮', '向', '限', '面', '沒', '加', '順', '咳', '賊', '么', '亦', '里', '奈', '各', '照', '嘔', '“', '之', '萬', '于', '似', '9', '我', '而', '7', '少', '從', '怕', '地', '論', '哉', ';', '去', '某', '又', '_', '4', '將', '把', '和', '能', '呢', '猶', '來', '也', '阿', '啷', '便', '與', '內(nèi)', '好', '本', '吧', '齊', '知', '單', '歟', '唯', '跟', '嚇', '喔', '第', '部', '喏', '卻', '嗡', '那', '為', '距', '嗬', '1', '起', '咋', '嘛', '被', '即', '并', '喲', '嗯', '、', '仍', '位', '嘻', '趁', '哈', '凡', '例', '騰', '烏', '焉', '替', '且', '假', '但', '漫', '辦', '同', '才', '中', '她', '舊', '真', '妨', '開', '既', '通', '難', '趕', '咱', '確', '看', '你', '綜', '期', '只', '臨', '具', '肯', '旁', '后', '嘎', '的', '當(dāng)', '不'}
Loading model cost 1.641 seconds.
Prefix dict has been built successfully.
[['長江', '是', '中國', '第一', '大河', ',', '干流', '全長', '6397', '公里', '(', '以', '沱沱河', '為源', ')', ',', '一般', '稱', '6300', '公里', '。', '流域', '總面積', '一百八十', '余萬平方公里', ',', '年', '平均', '入海', '水量', '約', '九千', '六百余', '億立方米', '。', '以', '干流', '長度', '和', '入海', '水量', '論', ',', '長江', '均', '居', '世界', '第三位', '。'], ['黃河', ',', '中國', '古代', '也', '稱河', ',', '發(fā)源', '于', '中華人民共和國', '青海省', '巴顏喀拉山', '脈', ',', '流經(jīng)', '青海', '、', '四川', '、', '甘肅', '、', '寧夏', '、', '內(nèi)蒙古', '、', '陜西', '、', '山西', '、', '河南', '、', '山東', '9', '個(gè)', '省區(qū)', ',', '最后', '于', '山東省', '東營', '墾利縣', '注入', '渤海', '。', '干流', '河道', '全長', '5464', '千米', ',', '僅次于', '長江', ',', '為', '中國', '第二', '長河', '。', '黃河', '還是', '世界', '第五', '長河', '。'], ['黃河', ',', '是', '中華民族', '的', '母親河', '。', '作為', '中華文明', '的', '發(fā)祥地', ',', '維系', '炎黃子孫', '的', '血脈', '.', '是', '中華民族', '民族', '精神', '與', '民族', '情感', '的', '象征', '。'], ['黃河', '被', '稱為', '中華文明', '的', '母親河', '。', '公元前', '2000', '多年', '華夏', '族', '在', '黃河', '領(lǐng)域', '的', '中原地區(qū)', '形成', '、', '繁衍', '。'], ['在', '蘭州', '的', '“', '黃河', '第一', '橋', '”', '內(nèi)蒙古', '托克托縣', '河口鎮(zhèn)', '以上', '的', '黃河', '河段', '為', '黃河', '上游', '。'], ['黃河', '上游', '根據(jù)', '河道', '特性', '的', '不同', ',', '又', '可', '分為', '河源', '段', '、', '峽谷', '段', '和', '沖積平原', '三', '部分', '。', ' '], ['黃河', ',', '是', '中華民族', '的', '母親河', '。']]

使用模型

from gensim.models import Word2Vec
# 加載模型
model = Word2Vec.load("model")
# 判斷相似度
sim1 = model.wv.similarity("黃河", "長江")
print(sim1)
sim2 = model.wv.similarity("黃河", "黃河")
print(sim2)
# 預(yù)測最接近的人
most_similar = model.wv.most_similar(positive=["黃河", "母親河"], negative=["長江"])
print(most_similar)

輸出結(jié)果:

0.20415045
0.99999994
[('公里', 0.15817636251449585), ('上游', 0.15374179184436798), ('入海', 0.15248821675777435), ('干流', 0.15130287408828735), ('的', 0.14548806846141815), ('是', 0.11208685487508774), ('段', 0.09545847028493881), ('為', 0.0872812420129776), ('于', 0.05294770747423172), ('長河', 0.02978350967168808)]

以上就是Python機(jī)器學(xué)習(xí)NLP自然語言處理基本操作詞向量模型的詳細(xì)內(nèi)容,更多關(guān)于NLP自然語言處理的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

最新評論