tfidf w2v给出NaN值。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了tfidf w2v给出NaN值。相关的知识,希望对你有一定的参考价值。

当使用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

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

答案

这里根据你的代码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(" ")中的单词。

以上是关于tfidf w2v给出NaN值。的主要内容,如果未能解决你的问题,请参考以下文章

Gridsearch 给出 AUC 分数的 nan 值

TFIDF Vectorizer 给出错误

将具有多个 nan 值的 pandas 系列减少到一个集合会给出多个 nan 值

Svd Armadillo 给出一些 NaN 值

SelectKBest 将分数作为 nan 值

当我使用 javascript 在 html 中获取 p-tag 的值时,我尝试向该值添加一个特定的数字,但输出给出 NaN