【发布时间】:2017-05-31 06:41:17
【问题描述】:
我有一个存储为 25 个列表的字典的大型语料库,我想使用 SKLearn 的 TfidfVectorizer 进行分析。每个列表包含许多字符串。现在,我关心整个语料库中的总词频 (tf) 和 25 个字符串 (idf) 的每个列表中最独特的词。问题是,我还没有找到将这种对象传递给 TfidfVectorizer 的方法。传递 dict 只是向量化键,传递值会产生一个 AttributeError: 'list' object has no attribute 'lower' (我猜它需要一个字符串。)
提前致谢。
更新:现在包括我的预处理步骤,它使用了 dict 的区域,ID 对称为 buckets
for area in buckets:
area_docs = []
for value in buckets[area]:
if 'filename_%s.txt' % value in os.listdir(directory):
fin = open(directory+'/filename_%s.txt' % value, 'r').read()
area_docs.append(fin)
buckets[area] = area_docs
corpus = buckets.values()
vectorizer = TfidfVectorizer(min_df=1, stop_words='english')
X = vectorizer.fit_transform(corpus)
idf = vectorizer.idf_
d = dict(zip(vectorizer.get_feature_names(), idf))
sorted_d = sorted(d.items(), key=operator.itemgetter(1))
sorted_d[:50]
【问题讨论】:
-
TfidfVectorizer用于“将原始文档集合转换为 TF-IDF 特征矩阵”。它需要一系列文档。您的字典似乎以某种方式被处理,因此不清楚您希望TfidfVectorizer做什么。 -
谢谢@juanpa.arrivillaga。编辑以反映列表项是多字字符串(在我的实际案例中,文档约为 2000 个字)。这些列表基本上是子语料库。实际上,我想知道给定子语料库(列表)中最有特色的词。
标签: python dictionary machine-learning scikit-learn tf-idf