我正在做一些研究,我正在玩Apache Mahout 0.6
我的目的是建立一个系统,根据用户输入命名不同类别的文档。这些文件不是事先知道的,我不知道在收集这些文件时我也有哪些类别。但我知道,模型中的所有文档都应该属于预定义类别之一。
例如: 假设我收集了N个文档,这些文档属于3个不同的组:
我不知道哪个文档属于哪个类别,但我知道我的N个文档中的每一个都属于这些类别中的一个(例如,没有关于这些N个文档中的篮球的文档)
所以,我提出了以下想法:
应用mahout聚类(例如k-mean,其中k = 3) 这应该将N个文件分成3组。这应该是我学习的模型。我仍然不知道哪个文档真正属于哪个组,但至少文档现在按组聚集
要求用户在网上找到任何关于“麦当娜”的文件(我不能向用户显示我的N个文件,这是一个限制)。然后我想测量本文档和3组中的每一组的“相似性”。 我希望看到模型中的user_doc与Madonna组中的文档之间的相似性测量值将高于user_doc与政治文档之间的相似性。
我已经设法使用“Mahout in Action”一书制作了一系列文档。 但是我不明白我应该如何使用Mahout来衡量“准备好”的文档集群和一个给定文档之间的相似性。
我想重新运行具有相同质心的N + 1个文件的k = 3的群集(就k均值聚类而言)并查看新文档在哪里落下,但也许还有其他方法可以做到这一点?
是否可以使用Mahout或我的想法在概念上是错误的? (关于Mahout API的例子非常好)
非常感谢并抱歉提出了一个很长的问题(无法更好地描述)
非常感谢任何帮助
P.S。这不是一个家庭工作项目:))
答案 0 :(得分:2)
这可能是可能的,但更简单的解决方案(恕我直言)将手工标记每个类别的一些文件,然后使用它们来引导k-means。即,计算手标政治/麦当娜/科幻文件的质心,让k-means从那里拿出来。
(用花哨的术语来说,你会做semisupervised nearest centroids classification。)