同时聚类结构化(数字)和文本数据

时间:2013-01-30 16:54:13

标签: cluster-analysis mahout

民间, 我有一堆文件(大约200k),有标题和摘要。还有其他元数据可用于每个文档,例如类别 - (只有烹饪,健康,运动等),流派 - (只有幽默,动作,愤怒等)。元数据结构良好,所有这些都是可用的在MySql DB中。

我需要在我们的网站上阅读其中一个文档时向我们的用户显示相关文档。我需要为产品经理提供标题,摘要和元数据的权重年龄来试验这项服务。

我计划在这些数据之上运行聚类,但是由于所有Mahout聚类示例都使用在数字之上制定的 DenseVectors 基于Lucene的文本向量化这一事实而受到阻碍即可。

示例仅为数字数据或仅为文本数据。以前有没有人解决过这种问题。我一直在阅读Mahout in Action书和Mahout Wiki,但没有取得多大成功。

我可以从第一个原则做到这一点 - 将所有标题和摘要提取到数据库中,计算TFIDF& LLR,将每个单词视为一个维度,并通过大量代码编写来完成此实验。这似乎是解决方案的一种长期方式。

简而言之,就是我被困的地方 - 我注定了第一原则,或者存在我不知何故错过的工具/方法。我很乐意听到那些解决了类似问题的人们。

提前致谢

2 个答案:

答案 0 :(得分:0)

这里有文字相似性问题,我认为你正确地思考它。只需按照任何有关文字的例子。这真的是很多代码吗?一旦你计算了文档中的单词,你就完成了。然后将其提供给您想要的任何聚类器。术语提取不是你用Mahout做的事情,虽然肯定有很好的图书馆和工具。

答案 1 :(得分:0)

我实际上在做类似的事情,但不需要在数字和文本字段之间进行区分。

我决定使用semanticvectors包来完成有关tfidf,语义空间向量构建和相似性搜索的所有部分。它使用lucene索引。

请注意,如果语义向导不适合你,你也可以使用s-space包(当然,如果你走的那条路)。

我面对这种方法的唯一警告是索引部分不能迭代。每次添加新文档或修改旧文档时,我都必须索引所有内容。使用语义向量的人说他们有很好的索引时间。但我不知道他们的语料库有多大。我将使用维基百科转储来测试这些问题,看看它有多快。