概述
做特征,生成一个新的训练集
힘차게 날개를 펴고 하늘끝 까지 날아 보자
1. Word2Vec
w2v = Word2Vec(sentences, vector_size = 32, window = 3, min_count=5, sg = 0, hs = 1, seed = 2022)
参数解释
- hs: 0指negative sampling(负采样); 1指hierarchical softmax
- sg: 0指CBOW;1指skip-gram
w2v.wv
Word2Vec的wv属性是一个类,可以理解成词典,返回单词的词向量。如w2v.wv['word']
array([-2.8439574 ,
0.37443072, -1.6063052 , -0.27896085, -0.8155813 ,
-0.47845536, -3.3467898 , -1.196234
, -0.02756584, -0.84733725,
-0.10579707,
0.05163246, -0.7186295 ,
2.228457
, -0.43014076,
-0.0309663 ,
1.1990297 ,
1.2765676 , -0.10919553,
3.130947
,
-0.53630906,
0.1699601 , -0.5888935 ,
1.9249583 ,
1.736609
,
1.2155844 ,
1.204229
,
0.85753125,
0.61615366, -0.19909358,
-0.3958432 , -0.27853402], dtype=float32)
特征
返回句向量的平均值作为特征
def get_w2v_mean(sentence):
# 传入的sentence是
'msg1 n msg2 n msg3'格式的字符串, 每个msg又是由单词加空格组成的
emb_matrix = list()
vec = list()
for w in sentence.split():
if w in w2v.wv: # 如果w被词向量化
vec.append(w2v.wv[w])
if len(vec) > 0:
emb_matrix.append(np.mean(vec, axis = 0))
# 求平均
由n * m维向量,变为1* m维。n指样本数,m指特征数
else:
emb_matrix.append([0] * 32)
return emb_matrix
2. tf-idf
tfidf指逆向文本频率。一个词语在一篇文章中出现次数越多, 同时在所有文档中出现次数越少, 越能够代表该文章,相应的tfidf越大。tfidf越大,说明该词越能代表该文章。
T
f
w
=
文
章
中
w
出
现
次
数
文
章
总
次
数
Tf_{w} = frac{文章中w出现次数}{文章总次数}
Tfw=文章总次数文章中w出现次数
I
D
F
w
=
语
料
库
中
文
档
总
数
包
含
w
的
文
档
数
+
1
IDF_{w} = frac{语料库中文档总数}{包含w的文档数+1}
IDFw=包含w的文档数+1语料库中文档总数
t
f
i
d
f
=
T
f
∗
I
D
F
tfidf = Tf * IDF
tfidf=Tf∗IDF
TfidfVectorizer
根据词频进行的另一种词向量化手段,包含在sklearn.feature_extraction.text
下。例如三篇文档d1, d2,d3,含五个词w1,w2,w3,w4,w5
w1 | w2 | w3 | w4 | w5 | |
---|---|---|---|---|---|
d1 | |||||
d2 | |||||
d3 |
经过TfidfVectorizer操作生成上面表格形式的VSM(Vector Space Matrix)。可以通过tv_transformed.toarray()
查看生成的向量空间矩阵;tv.get_features_name()
查看选择进行向量化的特征名。
模型参数
X = list(tmp['text'].values)
# 由msg组成的字符串列表
tfv = TfidfVectorizer(ngram_range=(1, 3), min_df=5, max_features=50000)
- ngram_range: 决定一个关键词可以由几个词组成。例如,(1, 3)指可以生成’correctable’, ‘correctable ecc’, ‘correctable ecc asserted’;如果是(1, 2)只能生成’correctable’, ‘correctable ecc’;如果是(1, 1)只能生成’correctable’
- min_df: min_df = 5表示“忽略少于5个文档中出现的术语”.
- max_features: 对所有关键词的词频进行排序,注意不是所有词的词频,只取前max_feaures个作为关键词集(决定向量空间的列数)
特征
X = list(tmp['text'].values)
# 由msg组成的字符串列表
tfv = TfidfVectorizer(ngram_range=(1, 3), min_df=5, max_features=50000)
tfv.fit(X)
X_tfidf = tfv.transform(X)
# 每一行一个文档;把这个X计数矩阵转换成tf-idf表示并归一化
svd = TruncatedSVD(n_components=16)
svd.fit(X_tfidf)
def get_tfidf_svd(sentence, n_components=16):
X_tfidf = tfv.transform(sentence)
X_svd = svd.transform(X_tfidf)
return np.mean(X_svd, axis = 0)
最后
以上就是帅气板凳为你收集整理的tfidf特征和word2vec特征1. Word2Vec2. tf-idf的全部内容,希望文章能够帮你解决tfidf特征和word2vec特征1. Word2Vec2. tf-idf所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复