tfidf w2v给出NaN值。

问题描述 投票:0回答:1

当使用TFIDF的Word2Vec时,给出了 NaN 在对亚马逊精细食品数据集进行采样至10万个数据点后,我得到的值是 NaN 句子向量中的值...我几乎尝试了所有的代码,但没有得到真正的值...。

打印句子数组后,我得到的输出是这样的----。

[nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
 nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
 nan nan nan nan nan nan nan nan nan nan nan nan nan nan]
[nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
 nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
 nan nan nan nan nan nan nan nan nan nan nan nan nan nan]
[nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
 nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
 nan nan nan nan nan nan nan nan nan nan nan nan nan nan]
[nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
 nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
 nan nan nan nan nan nan nan nan nan nan nan nan nan nan]
[nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
 nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
 nan nan nan nan nan nan nan nan nan nan nan nan nan nan].....

代码如下:

from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.feature_extraction.text import TfidfTransformer
tfidf = TfidfVectorizer(ngram_range=(1,2), analyzer='word')
final_tfidf = tfidf.fit_transform(final_data['CleanedText'].values)
tfidf_feat = tfidf.get_feature_names()
tf_sent_vectors = []
row = 0

for sent in list_of_sent:
    sent_vec = np.zeros(50)  #initializiing the sent_vec
    weighted_sum = 0   #initializing the weightedsum
    for word in sent:
        try:
            vec = w2v_modelk.wv[word]
            tf_idf = final_tfidf[row, tfidf_feat.index(word)]   
            sent_vec += (vec * tf_idf)
            weighted_sum += tf_idf
        except:
            pass
    sent_vec /= weighted_sum
    print(sent_vec)
    row += 1

任何形式的帮助都将被感激!!

python word2vec tf-idf
1个回答
-2
投票

这里根据你的代码tf-idf特征可能是像{'hi','jik','this by'等}。

因为有单克和双克的关系,所以到现在为止还算正常。

但关键的部分是

"对于句子中的单词:"

假设如果句子=["这很好"]

所以,tf-idf feaures是{'This','is','good','This is','is good'}。

现在行代码

对于句子中的单词,我们得到的输出是{T',h',i',s',所以没有}。

我们得到的结果是{'T','h','i','s',等等,没有}我们得到的是单个字符。

所以这些单字符可能不在tf-idf中,也可能不在w2vec模型中。

即改正的是sentence.split(" ")中的单词。

© www.soinside.com 2019 - 2024. All rights reserved.