【发布时间】:2018-06-03 16:16:12
【问题描述】:
我正在尝试按关键字对文档进行聚类。我正在使用以下代码制作tdidf-matrix:
from sklearn.feature_extraction.text import TfidfVectorizer
tfidf_vectorizer = TfidfVectorizer(max_df=.8, max_features=1000,
min_df=0.07, stop_words='english',
use_idf=True, tokenizer=tokenize_and_stem,
ngram_range=(1,2))
tfidf_matrix = tfidf_vectorizer.fit_transform(documents)
print(tfidf_matrix.shape)
返回(567, 209),表示有567个文档,每个文档都有scikit-learn TdidfVectorizer检测到的209个特征词的某种混合。
现在,我使用terms = tfidf_vectorizer.get_feature_names() 获取术语列表。运行print(len(terms)) 给出209
其中许多词对于任务来说是不必要的,它们会给聚类添加噪音。我手动浏览了列表并提取了有意义的特征名称,从而产生了一个新的terms 列表。现在,运行print(len(terms)) 会得到67
但是,运行 tfidf_vectorizer.fit_transform(documents) 仍然会给出 (567, 209) 的形状,这意味着 fit_transform(documents) 函数仍然使用 209 个术语的嘈杂列表,而不是手动选择的 67 个术语列表。
如何使用 67 个手动选择的术语列表运行 tfidf_vectorizer.fit_transform(documents) 函数?我在想,也许这需要我在我机器上的 Scikit-Learn 包中添加至少一个功能,对吗?
非常感谢任何帮助。谢谢!
【问题讨论】:
标签: python scikit-learn nlp