首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >tfidf w2v给出tfidf值

tfidf w2v给出tfidf值
EN

Stack Overflow用户
提问于 2018-07-28 03:48:04
回答 1查看 787关注 0票数 0

在对亚马逊精品食品数据集进行采样到100k数据点后,使用TFIDF Word2Vec在审查亚马逊精品食品数据集时给出NaN值,我在句子向量中获得了NaN值...我尝试了几乎所有的代码,但没有得到真正的价值。

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

代码语言:javascript
复制
[nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
 nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
 nan nan nan nan nan nan nan nan nan nan nan nan nan nan]
[nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
 nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
 nan nan nan nan nan nan nan nan nan nan nan nan nan nan]
[nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
 nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
 nan nan nan nan nan nan nan nan nan nan nan nan nan nan]
[nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
 nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
 nan nan nan nan nan nan nan nan nan nan nan nan nan nan]
[nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
 nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
 nan nan nan nan nan nan nan nan nan nan nan nan nan nan].....

代码如下:

代码语言:javascript
复制
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

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

EN

回答 1

Stack Overflow用户

发布于 2020-04-20 01:14:14

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

因为这里有uni gram和bi grams.so,所以没问题。

但关键部分是

“对于句子中的单词:”

假设sentence=是“This is good”

所以tf-idf特征是{ 'This ','is','good',‘This is','is good'}

现在在代码中添加一行

对于句子中的单词:

我们得到的输出是{‘T’,'h','i','s',所以no }我们得到单个字符

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

也就是说,更正应该是针对sentence.split中的word (“"):

票数 -2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51564639

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档