詞向量嵌入需要高效率處理大規模文字語料庫。 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中文網其他相關文章!

Python更易學且易用,C 則更強大但複雜。 1.Python語法簡潔,適合初學者,動態類型和自動內存管理使其易用,但可能導致運行時錯誤。 2.C 提供低級控制和高級特性,適合高性能應用,但學習門檻高,需手動管理內存和類型安全。

Python和C 在内存管理和控制方面的差异显著。1.Python使用自动内存管理,基于引用计数和垃圾回收,简化了程序员的工作。2.C 则要求手动管理内存,提供更多控制权但增加了复杂性和出错风险。选择哪种语言应基于项目需求和团队技术栈。

Python在科學計算中的應用包括數據分析、機器學習、數值模擬和可視化。 1.Numpy提供高效的多維數組和數學函數。 2.SciPy擴展Numpy功能,提供優化和線性代數工具。 3.Pandas用於數據處理和分析。 4.Matplotlib用於生成各種圖表和可視化結果。

選擇Python還是C 取決於項目需求:1)Python適合快速開發、數據科學和腳本編寫,因其簡潔語法和豐富庫;2)C 適用於需要高性能和底層控制的場景,如係統編程和遊戲開發,因其編譯型和手動內存管理。

Python在數據科學和機器學習中的應用廣泛,主要依賴於其簡潔性和強大的庫生態系統。 1)Pandas用於數據處理和分析,2)Numpy提供高效的數值計算,3)Scikit-learn用於機器學習模型構建和優化,這些庫讓Python成為數據科學和機器學習的理想工具。

每天學習Python兩個小時是否足夠?這取決於你的目標和學習方法。 1)制定清晰的學習計劃,2)選擇合適的學習資源和方法,3)動手實踐和復習鞏固,可以在這段時間內逐步掌握Python的基本知識和高級功能。

Python在Web開發中的關鍵應用包括使用Django和Flask框架、API開發、數據分析與可視化、機器學習與AI、以及性能優化。 1.Django和Flask框架:Django適合快速開發複雜應用,Flask適用於小型或高度自定義項目。 2.API開發:使用Flask或DjangoRESTFramework構建RESTfulAPI。 3.數據分析與可視化:利用Python處理數據並通過Web界面展示。 4.機器學習與AI:Python用於構建智能Web應用。 5.性能優化:通過異步編程、緩存和代碼優

Python在開發效率上優於C ,但C 在執行性能上更高。 1.Python的簡潔語法和豐富庫提高開發效率。 2.C 的編譯型特性和硬件控制提升執行性能。選擇時需根據項目需求權衡開發速度與執行效率。


熱AI工具

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

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

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

DVWA
Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中

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

SublimeText3 英文版
推薦:為Win版本,支援程式碼提示!

ZendStudio 13.5.1 Mac
強大的PHP整合開發環境

PhpStorm Mac 版本
最新(2018.2.1 )專業的PHP整合開發工具