我目前正在开发一个价格比较网站,为此我爬取了一些电子商务网站,并从它们的HTML页面中提取了一些数据,如价格、标题、元数据等。现在我需要确定从不同网站爬取的两个产品是否实际上是同一个产品,并为它们分配一个共同的标签。
例如,假设网站1的产品标题是以下字符串:
“Smartphone Samsung Galaxy S6 4G 32GB“
而网站2对同一产品的标题是这个字符串:
“Samsung Galaxy S6 White“
我如何确定这两个产品实际上是同一个产品,我希望在我的网站上将其标记为“三星Galaxy S6”?我考虑使用一些机器学习技术,如分类或聚类。然而,分类可能需要一组已经格式良好的产品标签(并且需要频繁更新)作为可能的类别,例如类别”Samsung Galaxy S6“,有这样的东西吗?而且有如此多的类别,这可能不可行。
我使用Apache Nutch进行爬取,使用Solr进行索引和搜索。如果有针对这些的特定库或工具,将非常有帮助,但我的问题不仅仅是针对这些,我很乐意阅读任何建议。
谢谢
回答:
我在我的项目中做过类似的事情,我们用ID标记人名,因此同一个人可以用全名、首字母缩写或仅用名字等方式列出,我们将其标记为同一个ID。
因此,对于你的情况,这将涉及为你的产品构建一个倒排索引,然后扫描标题字段以查找产品名称,并将它们标记为特定的产品ID。这样,所有三星Galaxy S6都会映射到同一个产品。
这不需要进行任何学习,你只需要有一个数据库来提取所有独特的产品,并在你的产品数据库发生变化时更新你的索引。
所有这些都可以在索引时通过为Solr编写一个更新处理器来完成。
实现有点复杂,无法在这里全部说明,所以我只是概述了可能对你有帮助的基本思路。