我想构建一个网络应用程序,允许用户上传文档、视频、图片、音乐,然后提供搜索这些文件的功能。可以把它想象成Dropbox + 语义搜索的结合。
当用户上传一个新文件,例如Document1.docx,我如何根据文件内容自动生成标签?换句话说,不需要用户输入来确定文件的主题。假设Document1.docx是一篇关于数据挖掘的研究论文,那么当用户搜索数据挖掘、研究论文或document1时,该文件应该出现在搜索结果中,因为数据挖掘和研究论文很可能是该文档的潜在自动生成标签。
1. 您推荐哪些算法来解决这个问题?
2. 是否有自然语言处理库可以帮我完成这个任务?
3. 我应该研究哪些机器学习技术来提高标记的精确度?
4. 如何将这种方法扩展到视频和图片的自动标记?
提前感谢!
回答:
这种任务最常用的无监督机器学习模型是潜在 Dirichlet 分配(LDA)。该模型根据文档中的词语自动推断出一组文档集合的主题。运行LDA在你的文档集上会将词语以概率分配到某些主题,当你搜索这些词语时,你可以检索出与该词语最相关概率最高的文档。
对于图片和音乐也有了一些扩展,参见http://cseweb.ucsd.edu/~dhu/docs/research_exam09.pdf。
LDA在多种语言中有几种高效的实现:
- 来自原始研究者的多种实现
- http://mallet.cs.umass.edu/,用Java编写,受到SO上其他人的推荐
- PLDA:一个快速的、并行化的C++实现