如何从产品名称中提取品牌

时间:2015-05-05 08:14:49

标签: python machine-learning nlp

我有两个网站,我手中有数据,现在我想用该数据进行分析

我有两个产品名称(品牌+产品名称)我想只提取品牌名称

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

2 个答案:

答案 0 :(得分:3)

您尝试获取的信息实际上并不存在。

如果你带两个字符串,两个字符串可能有任意数量的空格,并用空格将它们连接在一起,就不能再明确地告诉哪个空格正在连接这两个字符串,以及哪个空格是部分字符串。

所以,你有几个选择:

首先,每个产品中都没有 许多空格,因此您可以尝试所有可能性:品牌Brave和产品Soul Men's Swansea Jeans - Denim,然后品牌Brave Soul和产品Men's Swansea Jeans - Denim,然后是品牌Brave Soul Men's和产品Swansea Jeans - Denim,依此类推其他3种可能性。

其次,如果您可以从其他地方抓取所有品牌名称的列表并将其存储在set(或数据库表或其他任何内容)中,您可以预先过滤这些可能性,然后再对其进行全部尝试。对亚马逊的网络请求缓慢。例如,如果您有所有品牌的列表,只需检查BraveBrave SoulBrave Soul Men'sBrave Soul Men's Swansea等中的哪些是实际品牌,并且只测试那些。

与此同时,这仍然不会是完美的,因为几乎可以肯定有些模糊不清的案例。例如,有一个品牌Apple,还有一个品牌Apple Records,那么当您尝试拆分Apple Records Master Collection时会发生什么?你有两种有效的可能性,而不仅仅是一种。您所能做的就是设计代码以某种方式处理(以及您正确执行的单元测试)。

答案 1 :(得分:0)

我不会在这里尝试提出具体的算法,但我想指出,即使在无监督的情况下,拥有足够大的此类字符串数据库,也可以发现某些模式(即信息实际存在)。首先,品牌名称将以多个字符串重复,并且始终是字符串的前缀。这个假设将在分离的位置上提供强有力的先验。其次,可以通过学习潜在品牌假设和产品名称之间的关联来攻击模糊案例(苹果记录)(例如,只要苹果不产生记录,并且有一个强有力的假设,即苹果记录是一个品牌,因为它重复多次,这种歧义可以成功解决)。