詞向量嵌入的實例詳解
詞向量嵌入需要高效率處理大規模文字語料庫。 word2vec。簡單方式,將詞送入獨熱編碼(one-hot encoding)學習系統,長度為詞彙表長度的向量,詞語對應位置元素為1,其餘元素為0。向量維數很高,無法刻畫不同字詞的語意關聯。共生關係(co-occurrence)表示單詞,解決語義關聯,遍歷大規模文本語料庫,統計每個單詞一定距離範圍內的周圍詞彙,用附近詞彙規範化數量表示每個詞語。類似語境中詞語語義相似。用PCA或類似方法降維出現向量(occurrence vector),得到更稠密表示。性能好,追蹤所有詞彙共生矩陣,寬度、高度為詞彙表長度。 2013年,Mikolov、Tomas等提出上下文計算詞表示方法,《Efficient estimation of word representations in vector space》(arXiv preprint arXiv:1301.3781(2013))。 skip-gram模型,從隨機表示開始,依據當前詞語預測上下文詞語簡單分類器,誤差透過分類器權值和詞表示傳播,對兩者調整減少預測誤差。大規模語料庫訓練模型表示收債量逼近壓縮後共生向量。
資料集, 英文維基百科轉儲檔案包含所有頁面完整修訂歷史,目前頁面版本100GB,。
下載轉儲文件,提取頁面詞語。統計詞語出現次數,建構常見詞彙表。用詞彙表對擷取頁面編碼。逐行讀取文件,結果立即寫入磁碟。在不同步驟間保存檢查點,避免程式崩潰重來。
__iter__遍歷詞語索引清單頁面。 encode取得字串詞語詞彙索引。 decode依據詞彙索引傳回字串字詞。 _read_pages從維基百科轉儲文件(壓縮XML)提取單詞,儲存到頁面文件,每個頁面一行空格分隔的單字。 bz2模組open函數讀取檔案。中間結果壓縮處理。正規表示式可捕捉任意連續字母序列或單獨特殊字母。 _build_vocabulary統計頁面檔案單字數,出現頻率高字寫入檔案。獨熱編碼需要詞彙表。詞彙表索引編碼。移除拼字錯誤、極不常見詞語,詞彙表只包含vocabulary_size - 1個最常見詞語。所有不在詞彙表詞語
動態形成訓練樣本,組織到大批數據,分類器不佔大量記憶體。 skip-gram模型預測當前詞語的上下文詞語。遍歷文本,當前詞語數據,周圍詞語目標,創建訓練樣本。上下文尺寸R,每個字生成2R樣本,當前字左右各R個字。語意上下文,距離近重要,盡量少創建遠上下文詞語訓練樣本,範圍[1,D=10]隨機選擇詞上下文尺寸。依據skip-gram模型形成訓練對。 Numpy數組產生數值流批資料。
初始,單字表示為隨機向量。分類器根據中層表示預測上下文單字目前表示。傳播誤差,微調權值、輸入單字表示。 MomentumOptimizer 模型最佳化,智能不足,效率高。
分類器是模型核心。噪音對比估計損失(noisecontrastive estimation loss)性能優異。 softmax分類器建模。 tf.nn.nce_loss 新隨機向量負樣本(對照樣本),近似softmax分類器。
訓練模型結束,最終詞向量寫入檔案。維基百科語料庫子集,普通CPU訓練5小時,得到NumPy數組嵌入表示。完整語料庫: 。 AttrDict類別等價Python dict,鍵可屬性存取。
import bz2
導入集合
導入 os
導入 re
from lxml import etree
from helpers import download#nm iki class '[A-Za-z]+|[!?.:,()]')
def __init__(self, url, cache_dir,vocabulary_size=10000):## 系統(cache_dir)
self._pages_path = os.path.join(self._cache_dir, 'pages.bz2')
sel ). z2')
若不是os.path.isfile(self._pages_path):
print('閱讀頁面')## page page 順 如果不是os.path.isfile(self._vocabulary_path):
print('建構字彙表')
self._build_vocab. , 'rt') 作為字彙表:
print('讀字表')
self._vocabulary = [x.strip() for x invocabulary]
. def __iter__(self) :
with bz2.open(self._pages_path, 'rt') 作為頁面:
page split()
words = [self .encode(x) ) 對於單字中的x]
產生單字
@property## f._vocabulary)
defencode(self, word):
return self._indices.get(word, 0)
def 解碼(self, index):
. f, url):
wikipedia_path = download(url , self._cache_dir)
withbz2.open(wikipedia_path) 作為維基百科, \
: cp. for _, etree. iterparse(wikipedia) 中的元素, tag='{*}page'):
如果element.find('./{*}redirect') 不是None:## 如果element.find('./{*}redirect') 不是None:## 如果element.find('./{*}redirect') 不是None:## page = element.findtext ('./{* }revision/{*}text')
Words = self._tokenize(page)
element .clear()
def _build_vocabulary(self,vocabulary_size):
counter = coll,頁:
頁中的頁:
的話語= pag.strip()。 common = [x [x [0 ] 對於x 的共通點]
以bz2.open(self._vocabulary_path, 'wt') 作為字彙表:
vocabulary.write( word + '\n')
@類別方法
def _tokenize(cls, page):
Words = cls.TOKEN_REGEX.findall(page)
張量流as tf
import numpy as np
class EmbeddingModel:
問題 def __init__(self data f.data = data
self .目標= 目標
self.params = params
self.embeddings
sel self.embeddings
@lazy_property
def embeddings(self):
初始= tf . random_uniform(
[self.params.vocabulary_size, self.params.embedding_size],
.embedding_size],
. return tf.Variable(initial)
@lazy_property
def 最佳化(自我) :
優化器= tf.train.MomentumOptimizer(
self. ize(self.cost)
@lazy_property
def cost( self):
嵌入= tf.nn.embedding_lookup(self.embeddings, self.data)
[self.params.vocabulary_size, self.params 。 target = tf. expand_dims( self.target,1)
返回tf.reduce_mean(tf.nn.n.nce_loss(
重量,偏見,偏見,嵌入式,target,
self.params.contrastive_examples,
self.params.params.params.vocabulary_size))
導入集合
導入tensorflow as tf
導入numpy as np
from batched import batched
from EmbeddingModel import EmbeddingModel#fimgram Wikipedia
from helpers import AttrDict
WIKI_DOWNLOAD_DIR = './wikipedia'
params = AttrDict(
vocabulary_size=10000,# _ ize=200,
contrastive_examples=100,
Learning_rate=0.5,
動量=0.5,
batch_size=1000,
)
data = 1.placeer(tfplace.) int32, [無])
模型= EmbeddingModel(資料、目標、參數)
語料庫= 維基百科(
'https://dumps.wikimedia.org/enwiki/20160501/'#wikimedia.org/enwiki/20160501/'#wikimedia.org/enN#20160501/'#wiki 。 params.max_context)
批次=批量(例如,params.batch_size)
sess = tf.Session()
sess.run(tf.initialize_all_variables())
average = collections.deque(maxlen=100) 批次為# max 列舉(批次):
feed_dict = {資料:batch[0],目標:batch[1]}
cost,_ = sess.run([model.cost,model.optimize],feed_dict)
average.append(cost)
print('{}: {:5.1f}'.format(index + 1, sum(average) / len(aver age)))
100000:
break
# embeddings = sess.run(model.embeddings)
np.save(WIKI_DOWNLOAD_DIR + '/embeddbe .npypy#
以上是詞向量嵌入的實例詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

小紅書筆記怎麼刪除?在小紅書APP中是可以編輯筆記的,多數的用戶不知道小紅書筆記如何的刪除,接下來就是小編為用戶帶來的小紅書筆記刪除方法圖文教程,有興趣的用戶快來一起看看吧!小紅書使用教學小紅書筆記怎麼刪除1、先打開小紅書APP進入到主頁面,選擇右下角【我】進入到專區;2、之後在我的專區,點擊下圖所示的筆記頁面,選擇要刪除的筆記;3、進入到筆記頁面,右上角【三個點】;4、最後下方會展開功能欄,點選【刪除】即可完成。

不再需要pip?快來學習如何有效卸載pip!引言:pip是Python的套件管理工具之一,它可以方便地安裝、升級和卸載Python套件。然而,有時候我們可能需要卸載pip,可能是因為我們希望使用其他的套件管理工具,或者因為我們需要完全清除Python環境。本文將介紹如何有效地卸載pip,並提供具體的程式碼範例。一、卸載pip的方法下面將介紹兩種常見的卸載pip的方法

作為一名小紅書的用戶,我們都曾經遇到過發布過的筆記突然不見了的情況,這無疑讓人感到困惑和擔憂。在這種情況下,我們該怎麼辦呢?本文將圍繞著「小紅書發布過的筆記不見了怎麼辦」這個主題,為你詳細解答。一、小紅書發布過的筆記不見了怎麼辦?首先,不要驚慌。如果你發現筆記不見了,保持冷靜是關鍵,不要慌張。這可能是由於平台系統故障或操作失誤引起的。檢查發布記錄很簡單。只要打開小紅書App,點擊“我”→“發布”→“所有發布”,就可以查看自己的發布記錄。在這裡,你可以輕鬆找到之前發布的筆記。 3.重新發布。如果找到了之

小紅書怎麼在筆記中添加商品連結?在小紅書這款app中用戶不僅可以瀏覽各種內容還可以進行購物,所以這款app中關於購物推薦、好物分享的內容是非常多的,如果小夥伴在這款app也是一個達人的話,也可以分享一些購物經驗,找到商家進行合作,在筆記中添加連結之類的,很多人都願意使用這款app購物,因為不僅方便,而且有很多達人會進行一些推薦,可以一邊瀏覽有趣內容,一邊看看有沒有適合自己的衣服商品。一起看看如何在筆記中添加商品連結吧!小紅書筆記添加商品連結方法 在手機桌面上開啟app。 在app首頁點擊

深入學習matplotlib顏色表,需要具體程式碼範例一、引言matplotlib是一個功能強大的Python繪圖庫,它提供了豐富的繪圖函數和工具,可以用於創建各種類型的圖表。而顏色表(colormap)是matplotlib中一個重要的概念,它決定了圖表的配色。深入學習matplotlib色表,將幫助我們更好地掌握matplotlib的繪圖功能,使繪

從零開始學習Pygame:完整的安裝和配置教程,需要具體程式碼範例引言:Pygame是一個使用Python程式語言開發的開源遊戲開發庫,它提供了豐富的功能和工具,使得開發者可以輕鬆創建各種類型的遊戲。本文將帶您從零開始學習Pygame,並提供完整的安裝和配置教程,以及具體的程式碼範例,讓您快速入門。第一部分:安裝Python和Pygame首先,確保您的電腦上已

學習C語言的魅力:解鎖程式設計師的潛力隨著科技的不斷發展,電腦程式設計已經成為了一個備受關注的領域。在眾多程式語言中,C語言一直以來都備受程式設計師的喜愛。它的簡單、高效以及廣泛應用的特點,使得學習C語言成為了許多人進入程式設計領域的第一步。本文將討論學習C語言的魅力,以及如何透過學習C語言來解鎖程式設計師的潛力。首先,學習C語言的魅力在於其簡潔性。相較於其他程式語言而言,C語

在word編輯文字內容時,有時會需要輸入公式符號。有的小夥子們不知道在word根號輸入的方法,小面就讓小編跟小夥伴們一起分享下word根號輸入的方法教學。希望對小夥伴們有幫助。首先,開啟電腦上的Word軟體,然後開啟要編輯的文件,並將遊標移到需要插入根號的位置,參考下方的圖片範例。 2.選擇【插入】,再選擇符號裡的【公式】。如下方圖片紅色圈的部分內容所示:3.接著選擇下方的【插入新公式】。如下方圖片紅色圈的部分內容所示:4.選擇【根式】,再選擇適當的根號。如下方圖片紅色圈的部分內容所示:
