歐式距離和余弦相似度的方法是無法表達單詞之間的語義相似度
歸為one-hot方式無法表達單詞間的語義相似度
one-hot的表達方式,如果詞典大小是指數級的,那麼乙個句子的向量表示中,只有少數字置是1,其他位置都是0
這就導致了向量稀疏
歸結one-hot缺點:1、無法表達語義相似度,2、稀疏問題
分布式表示法
每個單詞表示的向量維度不再是等於詞典長度,而是自定義的
向量中每個位置都有乙個非0數值
歐式距離的方式在分布式表示方法中可以來比較單詞之間的相似度
詞向量只是分布式表示法中的一種
分布式表示法的容量空間遠大於one-hot表示法,100維one-hot最多只能表示100個單詞,
分布式表示法可表示的單詞無限個,即使限定每個位置是0或1,也能表示2的100次方個單詞
訓練詞向量需要將所有文章或者句子拼接成乙個很長的字串作為輸入
這個字串要保證大量的資料
將字串送入模型訓練,得到詞向量這種分布式的表示
模型有:skip-gram
glowe\cbow、rnn/lstm、mf等
模型中最重要的引數是dim,也就是訓練出來的詞向量維度,一般不超過300維
但是訓練100b這種量級的詞是很有挑戰性的,所有我們一般是使用一些機構訓練出來的詞向量結果
當然不同的領域,比如金融醫療領域,則需要蒐集出這麼乙個語料庫去訓練出詞向量
詞向量從某種意義上理解為詞的意思
我們希望訓練出來的詞向量,相近意思的詞在空間中是聚集在一起的。
當我們訓練完之後,就可以將這些詞向量放在乙個二維空間看一下,如果可以看出效果則繼續使用研究
如果效果不好則需要調整模型訓練。
one-hot是達不到這種效果的,只有詞向量才能這樣檢視
句子向量是由詞向量得來的
第一種方法可以使用平均法則
將句子中的詞向量先做加法,然後平均,得到的向量作為句子向量
這樣我就可以通過歐式距離,余弦相似度計算句子之間的相似度
第二種方法是lstm/rnn
採用句子相似度匹配的方式來進行知識問答,首先比較輸入的句子和詞庫中第乙個句子的相似度,然後比較下乙個句子
如此複雜度就是o(n)*每次相似度比較的複雜度
如果知識庫中有10的5次方這種量級的句子,那這種問答系統顯然是不符合實際應用需要的。
當得到乙個輸入的問題後,不急於去比較知識庫中句子相似度,而是先通過過濾器進行過濾,最終得到乙個小量級的句子集
然後在這些少量的問題中通過余弦相似度比較得到最好的匹配問題。
之所以是層次過濾,是因為要保證過濾的複雜度是遞增的。
過濾器1複雜度小於過濾器2,小於余弦相似度的複雜度,只有這樣才算降低了複雜度,層次過濾起到了效果
搜尋引擎中的核心架構就是倒排表
從所有文件中進行統計,得到每個單詞存在於哪個文件這樣乙個倒排表
這樣,使用者在輸入後不再需要到所有文件去查詢單詞,只需要搜尋倒排表,返回單詞所在文件即可
如果是輸入的兩個詞沒有同時存在於乙個文件,那麼就把出現兩個單詞的文件都返回
然後將返回的文件進行相似度計算,根據相似度來返回搜尋結果給使用者
NLP(四)詞向量
關於word2vec的原理網上很詳細了 本文 共2種詞向量轉換方式 1 獨熱編碼 2 word2vec from sklearn.preprocessing import labelencoder one hot labelencoder 輸入為列表好像也可以 word vector one hot...
NLP 如何評估詞向量
目前詞向量的評估一般分為兩大類 extrinsic evaluation和 intrinsic evaluation。即內部評估和外部評估。內部評估直接衡量單詞之間的句法和語義關係。這些任務通常涉及一組預先選擇的查詢術語和語義相關的目標詞彙,我們將其稱為query inventory。當前絕大部分工...
nlp期末複習 詞向量
1 不能體現詞的含義進行編碼 one hot 2 單詞按照含義進行編碼成向量的方式稱為word embedding word embedding word2vec cbow skip gram glove 3 從word embedding到bert模型 無法解決詞的多義問題 缺點 word emb...