文字資訊向量化

2021-09-29 21:50:35 字數 2690 閱讀 2877

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 ...