from sklearn.feature_extraction.text import countvectorizer
countvec = countvectorizer(min_df=2) #兩個以上文件出現的才保留
#文件的詞與詞之間用空格分隔
x = countvec.fit_transform(['我們 都愛 大 資料','資料 科學 技術部 經濟'])
type(x)
scipy.sparse.csr.csr_matrix
x.todense() #將稀疏矩陣直接轉換為標準格式矩陣
matrix([[1],
[1]], dtype=int64)
#只存了非零的地方
countvec.get_feature_names()
[『資料』]
countvec = countvectorizer()
x = countvec.fit_transform(['我們 都愛 大 資料','資料 科學 技術部 經濟'])
x.todense()
matrix([[1, 0, 1, 0, 0, 1],
[0, 1, 1, 1, 1, 0]], dtype=int64)
countvec.get_feature_names()
[『我們』, 『技術部』, 『資料』, 『科學』, 『經濟』, 『都愛』]
countvec.vocabulary_
步驟一:建立字典
class gensim.dorpora.dictionary.dictionary(
documents = none : 若干個被拆成單詞集合的文件的集合,一般以list in list 形式出現
prune_at=2000000 : 字典中的最大詞條數量
)
import gensim
from gensim.corpora import dictionary
texts = [['湖北','武漢','welcome','everyone'],
['hello','world','hello','bigdata','welcome','everyone']]
dct = dictionary(texts)
dct.token2id #檢視詞彙編號結果
dct.dfs #檢視每個詞彙出現的次數
dct.num_pos #檢視處理過的詞彙數量
dct.num_nnz #與num_pos類似
#增加詞條
dct.add_documents([['cat','dog','cute'],['貓','狗','可愛']])
dct.token2id
#查詢詞彙在字典中的編碼
dct.doc2idx(['this','is','a','cute','cat'])
[-1, -1, -1, 9, 8]
轉換為bow稀疏向量
dct.doc2bow(#轉換為bow格式:list of (token_id,token_count)
document : 用於轉化的詞條list
allow_update = false : 是否直接更新所用的字典
return_missing = false : 是否返回新出現的(不在字典中的)詞
)輸出結果:
[(0,2),(1,2)]:表示在文件中id為0,1的詞彙各出現了2次,至於其他詞彙則沒有出現
return_missing = true時,輸出list of (int,int),dict of (str,int)
dct.doc2bow(['this','is','a','cute','cat','cat','and','dog'])
[(8, 2), (10, 1), (17, 1)]
dct.doc2bow(['this','is','a','very','smart','dog'],return_missing=true)
([(10, 1)], )
dct.doc2bow(['this','is','a','very','smart','dog'],
return_missing=true,
allow_update=true)
([(10, 1), (14, 1), (15, 1), (16, 1), (17, 1), (18, 1)],
)
dct.token2id
然後再執行一次,結果就不同了
dct.doc2bow(['this','is','a','very','smart','dog'],return_missing=true)
([(10, 1), (14, 1), (15, 1), (16, 1), (17, 1), (18, 1)], {}) 文字向量化
table of contents概述 word2vec nnlm c wcbow and skip gram doc2vec str2vec 文字表示是自然語言處理中的基礎工作,文字表示的好壞直接影響到整個自然語言處理系統的效能。文字向量化就是將文字表示成一系列能夠表達文字語義的向量,是文字表示的...
文字向量化
文字向量化,就是把文字轉化為向量形式。這裡用兩種方式實現本文向量,一種是tf方式,一種是tf idf方式,且這裡向量的長度就是字典的長度。計算兩個向量余弦相似度import math defcount cos similarity vec 1,vec 2 if len vec 1 len vec 2...
文字向量化筆記(二)
神經網路語言模型是經典的三層前饋神經網路結構,其中包括三層 輸入層 隱藏層和輸出層。為解決詞袋模型資料稀疏問題,輸入層的輸入為低維度的 緊密的詞向量,輸入層的操作就是將詞序列中 的每個詞向量按順序拼接,在輸入層得到式 7.2 的x 後,將x 輸入隱藏層得到h 再將h 接人輸出層得到最後的輸出變數y ...