如何统一来自电子商务网站的大量爬行物品?

时间:2016-12-16 13:36:56

标签: java machine-learning artificial-intelligence e-commerce text-mining

我正在建立一个新网站,从一些电子商务网站导入/抓取数据。

每组项目称为产品,其名称为所有分组项目的父项。

例如:iphone 6s plus 128iphone 7 32是一个项目,但iphone 6siphone 7是产品。

我面临的问题是在一个产品下统一被抓取的项目,这是一个例子:

Item 1: Fiat 128

Item 2: Iphone 6 128

两者在同一产品下统一,因为两个文本都包含“128”作为子字符串。

我想要实现的目标是将项目iphone 6 128放在其自己的群组中,而不是与Fiat 128位于同一群组中,以便我们更准确地对项目进行分组。

注意:它们只是相关的,因为它们都包含“128”子字符串。

任何帮助将不胜感激

1 个答案:

答案 0 :(得分:0)

我从您的问题中了解到,您希望根据类型对项目进行聚类,并且属于同一产品的所有项目应该组合在一起。因此,您应首先定义产品列表。如果您没有产品清单,那么很难将其准确分组。

您可以考虑做的一件事是 - 根据名称对项目进行集群,但只考虑文本部分,跳过数字部分。它应该给你合理的聚类。

如果你想要超越这个,那么你可以考虑NLP技术。例如,您的所有商品'名字是名词短语,你可以使用Collins Head Finder Rule(使用Stanford CoreNLP)找到头字,然后在项目之间进行比较。

private String getMentionHeadUsingCollinsRule(String phrase) {
    String mentionHead = null;
    Annotation annotation = pipeline.process(phrase);
    for (CoreMap sentence : annotation.get(CoreAnnotations.SentencesAnnotation.class)) {
        Tree tree = sentence.get(TreeCoreAnnotations.TreeAnnotation.class);
        ModCollinsHeadFinder headFinder = new ModCollinsHeadFinder();
        mentionHead = tree.headTerminal(headFinder, tree).toString();
    }
    return mentionHead;
}

更高级:您可以使用依赖项解析来查找名词短语的头部,但这将是错综复杂的!

相关问题