创建TFIDF向量可输出较小维度的矩阵

时间:2019-05-16 13:29:58

标签: python feature-extraction feature-selection

目标:在具有单个文本列的数据帧上使用TFIDF

我正在研究定额问题相似性问题。

我遇到以下问题:

  1. 我正在将大小为(198102,1)的数据帧传递给tfidfvectorizer,并返回大小为(1,1)的数组,这是其中包含所有文本的列。
cq1 =pd.DataFrame(columns=['q1'])
cq1 = pd.DataFrame(X_v_trn['question1'])
print(cq1.shape,type(cq1))
tfidfq1 = TfidfVectorizer()
X_q1 = tfidfq1.fit_transform(cq1)
print(type(X_q1),X_q1.shape,X_q1.toarray())
print(tfidfq1)

输出

(198102, 1) <class 'pandas.core.frame.DataFrame'>
<class 'scipy.sparse.csr.csr_matrix'> (1, 1) [[1.]]
TfidfVectorizer(analyzer='word', binary=False, decode_error='strict',
        dtype=<class 'numpy.float64'>, encoding='utf-8', input='content',
        lowercase=True, max_df=1.0, max_features=None, min_df=1,
        ngram_range=(1, 1), norm='l2', preprocessor=None, smooth_idf=True,
        stop_words=None, strip_accents=None, sublinear_tf=False,
        token_pattern='(?u)\\b\\w\\w+\\b', tokenizer=None, use_idf=True,
        vocabulary=None)

我得到的实际输出是(1,1)数组,而我希望有198102行的稀疏矩阵

1 个答案:

答案 0 :(得分:0)

有两行缺少值,我使用fillna('0')。这没有用。 起作用的是将其更改为fillna(“这很糟糕”)。更改之后,TFIDF矢量化器将返回正确的输出。