【问题标题】:Python + Machine Learning : String matching problem [duplicate]Python +机器学习:字符串匹配问题[重复]
【发布时间】:2019-03-17 19:23:26
【问题描述】:

我有一个问题要解决:

问题解释如下:

该公司为其销售的所有产品(目前近 4,500 种)的规格维护一个数据集。现在每个客户都分享了他/她想从公司购买的产品的详细信息(名称、数量、品牌等)。现在,客户在他/她的数据集中输入详细信息时可能会错误地拼写产品名称。此外,可以通过公司数据集中的许多不同方式引用产品。示例:红辣椒可称为guntur chilly、全红辣椒、有茎红辣椒、无茎红辣椒等。

我完全不知道如何解决这个问题。我应该使用任何基于机器学习的技术吗?如果是,那么请解释我该怎么做。或者,如果可以在没有机器学习的情况下解决这个问题,那么还要解释你的方法。我正在使用 Python。

挑战:客户可以通过多种方式引用产品,而公司还可以通过多种方式存储具有不同规格(例如名称、数量、测量单位等)的单一产品。标记数据集我可以发现红牛能量饮料(客户输入的数据)是红牛(标签),红牛(客户输入)也是红牛。但是找到这个标签有什么用呢?因为在我公司的数据集中,红牛也以多种方式出现。再次,我必须找到它们在公司数据集中出现的所有不同的红牛名称。

我的方法: 我将准备一个这样的 Python 字典:

{
"red chilly" : ['red chilly', 'guntur chilly', 'red chilly with stem'],
"red bull" : ['red bull energy drink', 'red bull']
}

字典中的每个条目都是一个产品。其键是产品的词干名称,值是产品的所有可能名称。现在客户输入产品名称,例如红牛能量饮料。我将在字典中检查每个键。如果该键的任何值匹配,那么我将理解该产品实际上是红牛,它可以在公司数据集中被称为红牛和红牛能量饮料。这个方法怎么样?

【问题讨论】:

  • 您打算如何构建产品的所有可能名称。您会为所有 4500 种产品手动执行此操作吗?
  • 是的,我没有其他办法。公司会为我提供所有的同义词。你还有什么建议吗?
  • 根据程序员的经验进行静态查找很烦人,可能无法解决您的问题。这就是机器学习的优势所在。

标签: python machine-learning nlp string-matching


【解决方案1】:

最好的情况

如果您可以访问产品的所有可能使用名称,那将是最好的情况,您所要做的就是检查用户输入的名称是否属于同义词。 5000 个产品,比如 10 个同义词,每个都有一个很好的模式,应该很容易被一个强大的数据库系统处理。

基于搜索引擎的解决方案

假设您无法访问同义词,但可以访问产品的详细英文描述,那么您可以在描述中搜索用户输入的名称。可以使用像 Apache Solr 这样的搜索引擎,它使用基于 TFIDF 的倒排索引。 SOLR 作为顶部结果返回的文件将是相应的产品。简而言之,将您的文档描述索引到 solr 中,并在 solr 中搜索用户输入的产品名称。请注意,它是基于词典而不是基于语义,但基于词典对您来说就足够了,只要您的用户不会将香蕉称为“黄色圆柱状水果”

基于机器学习

有很好的分布式向量表示(word2vec、glove),称为嵌入。嵌入的重要意义在于相关词之间的距离会很小。但是,这些向量对您不利,因为您拥有的是短语而不是单词(红色是单词,而 red chilly 是短语)。开源中没有好的预训练短语到向量嵌入。如果您想使用基于向量相似性的模型,那么您将必须构建自己的短语 2vec 模型。因此,假设您能够构建一个短语 2vec 模型,您必须找到与您的客户键入的产品名称的向量接近的向量(对应于产品)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-20
    • 2012-08-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-14
    • 1970-01-01
    • 2020-06-28
    相关资源
    最近更新 更多