正在开发一个系统来存储产品及其属性。供应商可能会收到具有相同含义属性的商品,但我们已经从数据库中获得了属性列表,我们需要定义含义相似的属性。例如属性,例如:
Цвет товара, Цвет
其中Цвет товара
与 的含义相同Цвет
。或者例如:
Ножи какие-то туристические, Туристические ножи
这些短语的含义应该被识别为相同,并且应该应用我需要从数据库中获取的值,这样产品属性就不会在数据库中重复。你如何在 C# 中测试这个?有什么模式或算法吗?也许锐器的功能?
如果您的预测数据是静态的,则可以将任务交给神经网络。但是这种方法有一个缺点,即数据,因为它们越多,它们越准确,神经网络的工作就越好。
让我们展示使用 ML.Net 的最简单选项,我们甚至不必编写代码。
数据。让我们创建一个简单的文本文件,我们将在其中逐行写入我们得到的内容以及它是什么,好吧,我们将使用特定符号将其分隔:
如您所见,一个简单的盘子,带有一定的测试数据轮廓。
模型创建。
右键单击工作室中的项目,添加,将有“ML.Net”或现代“机器学习模型”中的任何内容
应该打开一个选择场景的窗口,我们对“数据分类”感兴趣。
接下来,他会问在哪台机器上进行计算(我会选择我的)。
在下一阶段,它会要求分析数据,在那里选择我们准备好的文本文件,确保一切都在盘中,并选择“要预测的列” - 神经元应该预测的列。
下一步是开始学习过程。这种机制将循环使用相同的数据,但使用不同的算法,选择能够提供最准确结果的数据。时间——越多越好,但也取决于数据文件的大小。我会亲自运行 30 秒,因为文件只有几行。注意“最佳准确性”的值——数据越干净,数据越多,越精确,这个指标就越好,因此结果就越好。我的数据给出了所有的
0.49
鹦鹉,但我认为这对测试来说已经足够了。在下一步中,您已经可以通过在此处写入输入值来尝试您的模型。
好吧,在最后阶段,他将提出创建一个控制台项目,他将在其中放置您经过训练的模型并展示如何处理它。
编码。现在让我们试试我们的模型。在创建的控制台项目中,我们可以随心所欲地更改我们想要的一切,但现在我们只对查看结果感兴趣。让我们编写这样一个简单的代码,运行它,看看它说了什么:
执行结果:
如您所见,即使是微不足道
0.49
的“鹦鹉”也给出了如此相对好的结果。椅子与桌子分开,他甚至可以通过整句话猜出它指的是什么,吞下错误,错别字。顺便说一句,注意他为“颜色”取了“权重”——这清楚地表明模型会提取数据,因为在我的文本文档中,权重只有 2 个值。因此,数据量、质量和其他指标对于神经元来说非常重要!但即使是这种形式,对于我来说,它已经比 Levenshtein 距离更好,虽然谁知道......我会用半自动和半手动的方法来解决这个问题。
更确切地说:
之后,创建一个分析器来计算数据库中不在表中的新产品,以便它们也将被手动重新检查,以避免将来数据库补充时出错
我将从评论中复制到Levenshtein的链接
可以在此处查看使用 Excel 或 CSV