【发布时间】:2012-06-17 10:00:15
【问题描述】:
我正在使用 k-means 聚类对一组新闻项目进行分组。我使用词袋模型来表示文档,更具体地说,每个文档都表示为词频向量。
我的问题:如何添加新文档而无需重新计算所有术语频率向量(看到包含所有文档的所有术语的词汇表会改变)?
【问题讨论】:
标签: machine-learning nlp data-mining cluster-analysis
我正在使用 k-means 聚类对一组新闻项目进行分组。我使用词袋模型来表示文档,更具体地说,每个文档都表示为词频向量。
我的问题:如何添加新文档而无需重新计算所有术语频率向量(看到包含所有文档的所有术语的词汇表会改变)?
【问题讨论】:
标签: machine-learning nlp data-mining cluster-analysis
简单的解决方案是使用您已经看过的文档中的词汇,忽略任何新术语;这是文档分类的惯例。
近年来流行的另一种解决方案是完全放弃词汇并使用feature hashing。
第三种可能性是在特征向量中为将来的术语保留空间。例如,假设您正在对一组具有大小为 N 的词汇表的文档进行向量化,然后您实际上将它们转换为大小为 N + K 的向量em>,最后的 K 最初设置为零,因此您以后最多可以将 K 个术语添加到词汇表中。
(直接在哈希表上计算点积、均值等可能不是解决方案。这将是最灵活的方法,但通常非常很慢。)
【讨论】:
TfidfVectorizer.transform 所做的;功能散列是您真正的work in progress;不直接支持第三种可能性。