我有两个网站,我手上有数据,现在我想用这些数据进行分析。
我有两个产品名称(品牌+产品名称),我只想提取品牌名称
http://www.thehut.com/jeans-clothing/men/clothing/brave-soul-men-s-cardiff-jeans-denim/10741907.html在上面的网站中,产品名称是
Brave Soul Men's Swansea Jeans - Denim品牌名称是
Brave Soul所以我只想
Brave Soul亚马逊网络链接
http://www.amazon.in/gp/product/B00L8WT2UI类似地,在上面的网站中,产品名称是
Apple iPhone 5c (White, 8GB)品牌名称是
Apple所以我想要输出
Brave Soul
Apple发布于 2015-05-05 08:21:03
你想要得到的信息其实并不存在。
如果您使用两个字符串,这两个字符串都可能有任意数量的空格,并将它们与一个空格连接在一起,那么就不可能清楚地知道哪个空间正在连接这两个字符串,以及哪个空间是字符串的一部分。
所以,你有几个选择:
首先,每个产品中没有太多的空间,所以您可以尝试所有的可能性:品牌Brave和ProductSoul Men's Swansea Jeans - Denim,然后是Brave Soul和ProductMen's Swansea Jeans - Denim,然后是品牌Brave Soul Men's和ProductSwansea Jeans - Denim,等等。
其次,如果你能从其他地方抓取所有品牌名称的列表,并将它们存储在set (或数据库表或其他任何东西)中,你可以预先筛选这些可能性,然后再在相对缓慢的网络请求中尝试所有这些可能性。例如,如果您有所有品牌的列表,只需检查Brave、Brave Soul、Brave Soul Men's、Brave Soul Men's Swansea等中哪些是实际的品牌,并只测试这些品牌。
同时,这仍然不是完美的,因为几乎可以肯定有一些情况是模棱两可的。例如,有一个品牌Apple,也有一个品牌Apple Records,那么当您试图拆分Apple Records Master Collection时会发生什么呢?你有两种有效的可能性,不仅仅是一种。您所能做的就是设计您的代码,以某种方式处理它(以及您正确地进行的单元测试)。
发布于 2015-05-07 21:55:30
我不打算在这里提出具体的算法,但我只想指出,即使在一个没有监督的情况下,拥有足够大的这样的字符串数据库,也可以发现某些模式(即实际存在的信息)。首先,品牌名称将在多个字符串中重复,并且始终是字符串的前缀。这一假设将为分离的位置提供一个强有力的先验条件。其次,模糊案例(苹果记录)可以通过学习潜在品牌假设与产品名称之间的关联来攻击(例如,只要苹果不产生记录,而且有一个强有力的假设,即苹果记录是一个品牌,因为它多次重复,这种模糊性就可以成功地解决)。
https://stackoverflow.com/questions/30047569
复制相似问题