推荐系统中的命名实体识别:把产品匹配到不同的性别

点击上方“AI公园”,关注公众号,选择加“星标“或“置顶”


作者:Dimitris Apostolopoulos

编译:ronghuaiyang

导读

通过命名实体识别,把商品归类到不同的性别上。

推荐系统中的命名实体识别:把产品匹配到不同的性别

什么是命名实体识别?

命名实体识别是指我们在非结构化文本中寻找和识别信息单元,并将其划分为预定义的类别(包括人员、组织、日期-时间表达式、位置等)的过程。

背后的故事

当我着手建立最新、最快的产品推荐系统时,尽管我的初衷是好的,但我无法预见某些方面。

其中一个是命名实体识别,这是路上的第二个坑。

在第一部分推荐系统和第二部分产品聚类,我们已经这样做过了,现在是第三个部分。

在本文中,我们将讨论在产品聚类方面可以做的改进。

我们的主要问题是,使用当前的聚类技术,对于不同的性别,我们聚类出来的产品是一样的。

当说到社交,性别是把人们分成不同类别的变量之一。

这是我们目前正在实现的推荐引擎所做的,因为我们试图识别类似的客户。因此,这些信息非常重要。

但是在我们继续之前,我需要再次指出,除了产品交互之外,我们没有关于客户的任何信息。

命名实体识别:处理来自产品的数据

就产品本身而言,我们可以使用的唯一数据是产品标题。这意味着所有的命名实体提取只能通过文本完成。

推荐系统中的命名实体识别:把产品匹配到不同的性别

在命名实体识别中,最常见的可识别元素是:

  • 公司

  • 名字

  • 品牌

  • 产地

因此,我们使用解析器分析和提取文本中选择的实体。

我们可以从产品名称中识别出哪些实体呢

在我们的例子中,值得识别的命名实体是品牌名,因此我们需要在产品聚类的过程中排除它。

这意味着其余的保持不变。

但是,产品名称太短,大多数品牌名称没有合适的格式,因此通过解析器(用于语法分析)进行命名实体识别将无法正常工作。

因此,我们需要另一个过程来进行识别。

作为 Moosend 的员工,我可以访问它的数据库,其中包含了很多数据,包括一个最大的品牌列表。

拥有一个大的品牌列表意味着你可以简单地通过正则表达式从产品中删除你标识过的品牌。

第二个被认可的命名实体是产品的性别,考虑到它最终会送到消费者手上。因此,我们需要创建 4 类产品:男性女性儿童中性

在为你的客户设计产品推荐系统时,你需要预先定义什么属于什么类别,可能是性别,可能是年龄,文化等等。

我们继续创建一些硬编码的规则来确定男性、女性和儿童的产品。

有些规则可以是文字中的“Men”、“Women”、“Kids”。

不能从标题中单独分类的产品或男女通用的产品,属于“中性”类别。

推荐系统中的命名实体识别:把产品匹配到不同的性别

命名实体识别:识别客户的兴趣

我们可以根据客户的兴趣对他们进行分类,在我们的用例中,也可以根据他们接触最多的性别类别对他们进行分类。

使用与产品分类相同的类别对客户分类:

  • 孩子

  • 中性

当我们完成产品分类的过程时,我们开始计算与每个用户交互的产品性别的百分比。

下一步是设置一个阈值百分比。那些百分比高于阈值的,我们将其归类为对应的性别类别。

对于这些步骤,我建议阈值在0.8-0.9之间,具体取决于你在前一个流程中识别的产品。

下面,我们展示了来自这个流程的 4 行数据示例:

推荐系统中的命名实体识别:把产品匹配到不同的性别

James 和 Nick 都是男性,但他们对不同的产品类别感兴趣。

事实上,詹姆斯 95%的互动发生在“男性”产品上**,有 5%的互动发生在中性产品上,或者我们无法确定性别的产品上**,所以我们明确地将詹姆斯归类为男性

另一方面,尼克 2%与女性产品互动,7%与中性产品互动,1%与儿童产品的互动。

随后,我们确定,尼克最感兴趣的是女性产品因此,我们把他归类为女性。

客户和产品之间的永恒循环

我们将把所有的东西都输入到算法中,看看结果如何。

这个过程的一个问题是,在许多情况下,产品的产品名称不是性别类别的描述性度量。

并非每一款产品都被方便地命名为“MEN’S SHAVING CREAM”。有些只是被命名为“SHAVING CREAM”,而其他的则被命名为“DREAM CREAM”或“VENUS LEGS”。

因此,这导致了大量的产品最终进入中性类别。

为了减少产品在中性类别中的分发,在流程的最后一步,我们在产品和客户之间创建了一个“exchange loop”。

更具体地说,一旦我们从产品客户获得了大部分数据,我们就必须合并信息。

我们用性别产品交互来表示所有被认可的客户,为每个客户设置一个向量,然后我们将几乎完全分类的客户归入性别类别(超过 98%)。

命名实体识别的例子:

让我们假设 Jane 买了一支口红,一条裙子,一条裙子和一个包。

我们将每个产品放入一个向量中(如下图所示),并将识别出的产品按性别分类,然后计算属于同一类别的产品的百分比。

具体来说:

Jane 购买的产品中有 98%输入女性,2%是中性**,所以我们认为她是女性**,因为她主要对“女性”产品感兴趣。

![img](Named Entity Recognition Matching Products to Genders.assets/1_a52o08Ees4HP6LfJr8W8WQ.png)

现在,我们只有产品性别类别,介于女性和中性之间。

这就导致了这样一种假设,即中性产品可能会被归类到与其他产品相同的性别类别中。

如果我们多次检测同一产品的相同模式(包含该模式的数据的 90%),我们将该产品归类为性别类别

简单一点说

如果有人购买了四件“女性”物品,我们会“故意”假设第五件也是“女性”物品。

相应地,当我们看到类似购买模式的“副本”时,我们也会假定它们是其中之一,并因此将它们赋予相应的属性。

在我们对所有我们能识别的产品进行分类之后,我们用新的数据重新对客户分类,重复这个过程,直到我们不能识别其他产品和客户。

推荐系统中的命名实体识别:把产品匹配到不同的性别

总结

在我的下一篇文章中,我将带你回到[产品推荐系统](https://medium.com/moosend-engineering-data-science/the- the- to- referensystems-d6bb79bd169d "产品推荐系统")的第 1 部分,只是这次我们将重新看看上次没有工作的所有东西。

实际上,在应用了全新的产品聚类和全新的命名实体识别之后,我们将监视推荐引擎的性能。

推荐系统中的命名实体识别:把产品匹配到不同的性别

END

英文原文:https://medium.com/moosend-engineering-data-science/named-entity-recognition-matching-products-to-genders-a91fb466e3a3

推荐系统中的命名实体识别:把产品匹配到不同的性别

请长按或扫描二维码关注本公众号

喜欢的话,请给我个好看吧推荐系统中的命名实体识别:把产品匹配到不同的性别