Python+机器学习:字符串匹配问题

Python+机器学习:字符串匹配问题,python,machine-learning,nlp,string-matching,Python,Machine Learning,Nlp,String Matching,我有一个问题要解决: 问题解释如下: 该公司保存了一个数据集,用于记录目前销售的近4500种产品的规格。现在,每位客户都会分享他/她想从公司购买的产品的详细名称、数量、品牌等。现在,客户在其数据集中输入详细信息时可能会拼写错误的产品名称。此外,在公司数据集中,产品可以通过多种不同的方式引用。例如:红辣椒可以被称为guntur辣椒、全红辣椒、带茎红辣椒、无茎红辣椒等 我完全不知道如何处理这个问题。我应该使用任何基于机器学习的技术吗?如果是,请告诉我该怎么做。或者,如果不需要机器学习就可以解决这个问

我有一个问题要解决:

问题解释如下:

该公司保存了一个数据集,用于记录目前销售的近4500种产品的规格。现在,每位客户都会分享他/她想从公司购买的产品的详细名称、数量、品牌等。现在,客户在其数据集中输入详细信息时可能会拼写错误的产品名称。此外,在公司数据集中,产品可以通过多种不同的方式引用。例如:红辣椒可以被称为guntur辣椒、全红辣椒、带茎红辣椒、无茎红辣椒等

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

挑战:客户可以通过多种方式参考产品,而公司也可以通过多种方式存储单个产品,并提供不同规格的产品,如名称、数量、,计量单位等。通过标记数据集,我可以发现客户输入的红牛能量饮料数据是红牛标签,客户输入的红牛也是红牛。但是找到这个标签有什么用呢?因为在我的公司里,红牛在很多方面都存在。再次,我必须找到红牛在公司数据集中的所有不同名称

我的做法: 我将准备一本Python字典,如下所示:

{
"red chilly" : ['red chilly', 'guntur chilly', 'red chilly with stem'],
"red bull" : ['red bull energy drink', 'red bull']
}
词典中的每个条目都是产品。其键是产品的干名称,值是产品的所有可能名称。现在,客户输入一个产品名称,称为红牛能量饮料。每把钥匙我都要查字典。如果该关键点的任何值相匹配,那么我会理解该产品实际上是红牛,它可以被称为红牛和红牛能量饮料,在公司数据集中都是如此。这种方法如何?

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

基于搜索引擎的解决方案 假设您无法访问同义词,但可以访问产品的详细英文描述,那么您可以在描述中搜索用户输入的名称。可以使用搜索引擎,比如ApacheSolr,它使用基于TFIDF的反向索引。SOLR作为顶级结果返回的文档将是相应的产品。简而言之,将文档描述索引到solr中,并在solr中搜索用户输入的产品名称。请记住,它是基于词汇的,而不是基于语义的,但基于词汇的就足够了,只要用户不会将香蕉称为黄色圆筒形水果

基于ML的
这些是良好的分布式向量表示word2vec,称为嵌入。嵌入的重要性在于相关词之间的距离很小。然而,这些向量对你不好,因为你拥有的是短语而不是单词red是单词red chilly是短语。在开源软件中没有很好的预训练短语到向量的嵌入。如果您想使用基于向量相似性的模型,那么您必须构建自己的phrase2vec模型。因此,假设您能够构建一个phrase2vec模型,您必须找到对应于产品的向量,该向量与客户键入的产品名称向量非常接近

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