tfidf w2v给出NaN值

时间:2018-07-27 19:48:04

标签: python word2vec tf-idf

在使用TFIDF Word2Vec将Amazon精美食品数据集采样到100k数据点后给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 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

任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:-2)

在这里,根据您的代码,tf-idf的功能可能类似于{'hi','jik','this by'等}。

因为用单克和双克,所以到这里都可以

但是关键部分是

“句子中的单词:”

假设句子= [“这很好”]

因此tf-idf的功能应为{'This','is','good','This is','is good'}

现在代码行

句子中的单词:

我们得到的输出为{'T','h','i','s,所以没有},我们得到的是单个字符

因此这些单个字符可能不在tf-idf中,也可能不在w2vec模型中

即更正将针对句子.split(“”)中的单词: