好吧,我有一个2000多个文本文档的语料库,我正试图用最优雅的方式用pandas数据帧制作一个矩阵。矩阵如下所示:
df=pd.DataFrame(index=['Doc1_name','Doc2_name','Doc3_name','...','Doc2000_name']
, columns=['word1','word2','word3','...','word50956'])
df.iloc[:,:] = 'count_word'
print(df)
我已经在一个名为“文本”的列表中找到了所有的全文文档 我不知道我的问题是否足够清楚。在
对于任何不小的文本语料库,我强烈建议使用
scikit-learn
的CountVectorizer。在简单到:
它并没有为您提供所需结构中的dataframe,但是使用
count_vectorizer
的vocabulary_
属性来构造它,该属性包含了该项到结果矩阵中其索引的映射。在使用sklearn的CountVectorizer:
如果语料库足够小,可以放入您的内存(2000+足够小),您可以将稀疏矩阵转换为pandas数据帧,如下所示:
^{pr2}$df_res
是您想要的结果:如果您得到一个
MemoryError
,您可以减少单词的词汇表,以考虑使用CountVectorizer
的不同参数:stop_words='english'
设置为忽略英文非字词(如the
和`and)min_df
和{CountVectorizer
根据文档频率忽略一些单词(太频繁或很少出现的单词,这可能是无用的)max_features
,只使用最常见的n
单词。在相关问题 更多 >
编程相关推荐