1. 程式人生 > >2 語言模型和詞向量 tensorflow詞向量

2 語言模型和詞向量 tensorflow詞向量

----------------------------大綱--------------------------

1 隨著模型不斷更新

2 直接使用預先訓練好的詞向量如word2vec, glove

3 測試檔案向量化

--------------------------------------------------------------

省去資料讀取以及預處理模組

1 隨著模型不斷更新

1.1 train檔案中輸入語句用index表示

#表示最長的句子長度max_document_length

max_document_length=max([len(x.split(" "))for xin x_text])

vocab_processor = learn.preprocessing.VocabularyProcessor(max_document_length)

#拿到句子中的index向量表示(注意這裡是詞的index)

x = list(vocab_processor.fit_transform(x_text))

1.2 模型檔案中index向量轉化為詞向量

self.input_x = tf.placeholder(tf.int32, [None, sequence_length],name="input_x")

with tf.name_scope("embedding"):

#tf.random_uniform([vocab_size, embedding_size], -1.0,1.0)詞向量採用均勻分佈作為初始化

# trainable=Ture表示模型中不斷迭代更新詞向量的值,如果trainable=False表示採用第三方預先訓練好的詞向量結果

self.W = tf.Variable(tf.random_uniform([vocab_size, embedding_size], -1.0,1.0),trainable=True, name="W")

self.embedded_x = tf.nn.embedding_lookup(self.W,self.input_x)

2 直接使用預先訓練好的詞向量如word2vec, glove

如下以glove為例,格式如下,詞以及其對應的詞向量


2.1 train檔案中

# 讀檔案獲取glove中的詞彙,以及其對應的詞向量

vocab, embd = data_helpers.loadGloVe(FLAGS.embedding_file, FLAGS.embedding_dim)

embedding = np.asarray(embd)

def tokenizer(iterator):

    for value in iterator:

        yield re.split(r'\s', value)

# 將glove檔案中的詞轉化為index

vocab_processor = learn.preprocessing.VocabularyProcessor(max_sequence_length, tokenizer_fn=tokenizer)

vocab_processor.fit(vocab)

#拿到句子中的index向量表示(注意這裡是詞的index)

x = list(vocab_processor.fit_transform(x_text))

2.2 model檔案中

#傳入glove的初始值的佔位符

self.embedding_placeholder = tf.placeholder(tf.float32, [self.vocab_size,self.embedding_size],

name="embedding")

self.input_x = tf.placeholder(tf.int32, [None, sequence_length],name="input_x")

with tf.variable_scope("embedding"):

#trainable=False的設定如1.2設定

       self.W = tf.Variable(tf.constant(0.0,shape=[self.vocab_size,self.embedding_size]),                     trainable=False, name="W")

# 把glove初始值給self.W

self.embedding_init = tf.assign(self.W,self.embedding_placeholder)

self.embedded_x = tf.nn.embedding_lookup(self.W,input_x )

3 測試的時候測試資料向量化

#讀取train時儲存的vocab檔案

vocab_path = os.path.join(FLAGS.checkpoint_dir, "..", "vocab")
vocab_processor = learn.preprocessing.VocabularyProcessor.restore(vocab_path)
x_combined_indexes = list(vocab_processor.transform(x_combined))


相關推薦

2 語言模型向量 tensorflow向量

----------------------------大綱-------------------------- 1 隨著模型不斷更新 2 直接使用預先訓練好的詞向量如word2vec, glove 3 測試檔案向量化 ---------------------

【中文分系列】 5. 基於語言模型的無監督分

轉載:https://spaces.ac.cn/archives/3956/ 迄今為止,前四篇文章已經介紹了分詞的若干思路,其中有基於最大概率的查詞典方法、基於HMM或LSTM的字標註方法等。這些都是已有的研究方法了,筆者所做的就只是總結工作而已。查詞典方法和字

語言模型RNN CS244n 大作業 Natural Language Processing

語言模型 語言模型能夠計算一段特定的字詞組合出現的頻率, 比如:”the cat is small” 和 “small the is cat”, 前者出現的頻率高 同樣的,根據前面所有的字詞序列資訊, 我們可以確定下一個位置某個特定詞出現的頻率, 豎線左邊表示下一個出現詞

【NLP】語言模型遷移學習

10.13 Update:最近新出了一個state-of-the-art預訓練模型,傳送門: 李入魔:【NLP】Google BERT詳解​ zhuanlan.zhihu.com 1. 簡介 長期以來,詞向量一直是NLP任務中的主要表徵技術。隨著2017年底以及2018年初的一系列技術突破,研究證實

語音識別語言模型拼音字典檔案製作

接我前面的文章,下載 pocketsphinx 和 中文模型檔案。 由於模型檔案格式有一些要求,所以建議對模型檔案的編輯都在Linux上完成。 準備中文語言檔案 建立一個文字檔案 my.txt,內容如下: 測試 直走 左轉 右轉 後退 開火 靠嘍 生成語音模型檔案和

Deep Learning in NLP (一)向量語言模型

                這篇部落格是我看了半年的論文後,自己對 Deep Learning 在 NLP 領域中應用的理解和總結,在此分享。其中必然有侷限性,歡迎各種交流,隨便拍。  Deep Learning 演算法已經在影象和音訊領域取得了驚人的成果,但是在 NLP 領域中尚未見到如此激動人心的結果

模型向量模型

在自然語言處理和文字分析的問題中,詞袋(Bag of Words, BOW)和詞向量(Word Embedding)是兩種最常用的模型。更準確地說,詞向量只能表徵單個詞,如果要表示文字,需要做一些額外的處理。下面就簡單聊一下兩種模型的應用。 所謂BOW,就是將文字/Query看作是一系列詞的集合

自然語言處理(四)神經網路語言模型向量

神經網路語言模型 用句子 S S S的概率

向量語言模型

一、詞向量詞向量(word embedding):詞的向量表徵。很多初識機器學習、深度學習等的同學,包括我,一定對詞向量比較迷惑,為什麼說前者之前都要提到詞向量?答案:為了將輸入資料表示成向量,在向量上進行數學建模。這樣把詞表示為計算機適合處理的方式。詞向量表示方法:1)on

NLP學習筆記(1)-向量語言模型

閱讀的第一篇詞向量相關的文獻是Tomas Mikolov 2013年的論文,其中提到了Bengio在2003的經典文章。經過一番努力,粗略的學習了這兩篇文獻,並查閱了相關的資料,現簡單整理如下: 1、詞向量 作為NLP的初學者,遇到的第一個難以理解的概念就是

Chisel 語言(Scala)學習 2 例項化模型向量操作

Chisel 語言學習 2 例項化模型和向量操作 系列文章主要用來記錄學習Chisel和scala過程中遇到的難點或知識點 例項化模型: 帶有進位的加法器 Chisel程式碼如下:

自然語言處理中傳統向量表示VS深度學習語言模型(三):word2vec向量

        在前面的部落格中,我們已經梳理過語言表示和語言模型,之所以將這兩部分內容進行梳理,主要是因為分散式的詞向量語言表示方式和使用神經網路語言模型來得到詞向量這兩部分,構成了後來的word2vec的發展,可以說是word2vec的基礎。1.什麼是詞向量       

使用Keras預訓練的向量訓練新聞文字分類模型

from __future__ import print_function import os import sys import numpy as np from keras.preprocessing.text import Tokenizer from keras.p

中文自然語言處理向量合集(字向量,拼音向量,向量,詞性向量,依存關係向量)

ChineseEmbedding Chinese Embedding collection incling token ,postag ,pinyin,dependency,word embedding.中文自然語言處理向量合集,包括字向量,拼音向量,詞向量,詞性向量,依存關係向量.共5

Python 自然語言處理(基於jieba分NLTK)

----------歡迎加入學習交流QQ群:657341423 自然語言處理是人工智慧的類別之一。自然語言處理主要有那些功能?我們以百度AI為例 從上述的例子可以看到,自然語言處理最基本的功能是詞法分析,詞法分析的功能主要有: 分詞分句 詞語標註 詞法時態

深度學習課程之文字預處理、模型、word2vec、語言模型(1.9)

詞向量和語言模型 深度學習其實最成功的應用是在影象上,有了 CNN 可以很好地提取影象上的特徵,這些特徵經過幾層的神經網路結構可以很好地組合成比較抽象的特徵。 NLP 常見任務 自動摘要:媒體需要的頭條通過 NLP 自動提取 機器翻譯 主題識別 文字分類

模型TF-IDF

from sklearn.feature_extraction.text import CountVectorizer,TfidfTransformer import os import re import jieba.posseg as pseg # 載入停用詞表 '''

概率語言模型方法

4.6  概率語言模型的分詞方法 從統計思想的角度來看,分詞問題的輸入是一個字串C=C1,C2,……,Cn,輸出是一個詞串S=W1,W2,……,Wm,其中m<=n。對於一個特定的字串C,會有多個切分方案S對應,分詞的任務就是在這些S中找出概率最大的一個切分方案,也就是

計算語言學概論複習筆記(分語言模型、隱馬爾科夫、POS、ML、DL、MT)

01(計算語言學概論) 計算語言學的應用 機器翻譯 人機對話 資訊檢索 資訊提取 自動文摘 文字分類 拼寫檢查 音字轉換 什麼是計算語言學? 計算語言學是通過建立形式化的計算模型來分 析、理解

轉:從頭開始編寫基於隱含馬爾可夫模型HMM的中文分

lan reverse single trim 地址 note str rip resources http://blog.csdn.net/guixunlong/article/details/8925990 從頭開始編寫基於隱含馬爾可夫模型HMM的中文分詞器之一 - 資