如何使用词袋方法对文档进行排名

数据挖掘 聚类 算法 爪哇 信息检索
2022-02-25 10:29:09

我想使用词袋模型对我为 Google 学者搜索获得的文档进行聚类。我想使用 Java 作为语言。

假设关键字k,谷歌学者给了我 50 个结果。如果我有一组预定义的单词w1、w2、w3...wn,我如何对包含预定义单词集最多的文档进行排名?我如何为此应用词袋模型?我需要像 k-means 这样的聚类算法吗?我还需要执行 NLP 技术吗?

假设单词w1有几个同义词。我如何考虑这些同义词以及文档排名?我是否必须为此创建一个包含所有缩写、同义词等的语料库?

有没有什么好的教程可用?由于大多数资源(Ex - Scikit)都在 Python 中,因此选择 Java 而不是 Python 会是一个劣势吗?

2个回答

如果您只是想根据单词 w1,..,wn 包含的出现次数对文档进行排名,那么通常不需要聚类或机器学习:聚类 50 个结果将使您将这些结果划分为聚类包含彼此相似但与其他集群中的结果不同的结果。

如果您只需要按单词 occ 进行排名,只需计算您的单词在每个文档中出现的频率(包括同义词,如果您愿意,可以自动从 Wordnet 中获取)并总结它们。

如果您只是想对文档进行排名,@Sharon 答案就是您所需要的 (+1)。

在对它们进行排序之后,下一个合乎逻辑的步骤是对文档进行聚类,找出其中哪些相似。特别是,如果您的单词列表是异构的,则排名本身可能无法为您提供非常清晰的信息。这很好python notebook,一切都保持简单,但同时它解释了您应该遵循的所有步骤。

Python中的文档聚类

如果您只是想检测文档的主题(即没有您的单词列表),这是一个很好的SO 答案,其中包括资源链接。

至于你关于 Java v. Python 的问题,我不能肯定地告诉你 Java 会是一个劣势。尽管我提供的所有链接都在 python 中,但我确信nlJava 中有相当多的资源。但是我不太了解他们,我无法比较。