您可能希望查看“相似性度量”或“距离度量”的类别(在数据挖掘术语中,这与“分类”不同。)
基本上,相似性度量是一种数学方法,您可以:
- 获取两组数据(在您的情况下是单词)
- 做一些计算/方程/算法
- 结果是您有一些数字可以告诉您该数据有多“相似”。
对于相似性度量,这个数字是一个介于 0 和 1 之间的数字,其中“0”表示“完全不匹配”,“1”表示“相同”
因此,您实际上可以将您的句子视为一个向量——句子中的每个单词都代表该向量的一个元素。每个类别的关键字列表也是如此。
然后您可以做一些非常简单的事情:使用“cosine similarity”或“Jaccard index”(取决于您如何构建数据。)
这两个指标的作用是获取两个向量(您的输入句子和您的“关键字”列表)并给您一个数字。如果您对所有类别执行此操作,您可以对这些数字进行排名,以查看哪个匹配项具有最大的相似系数。
举个例子:
根据您的问题:
客户交易:存款,
存款、客户、账户、账户
所以你可以构造一个包含 5 个元素的向量:(1, 1, 1, 1, 1)。这意味着,对于“客户交易”关键字,您有 5 个单词,并且(这听起来很明显,但是)这些单词中的每一个都出现在您的搜索字符串中。跟着我。
所以现在你的句子:
系统应将存款应用于
客户指定的帐户。
这有来自“客户交易”集中的 2 个词:{deposits, account, customer}
(实际上,这说明了另一个细微差别:您实际上有“客户”。这是否等同于“客户”?)
句子的向量可能是 (1, 0, 1, 1, 0)
这个向量中的 1 与第一个向量中的 1 的位置相同 - 因为这些词是相同的。
所以我们可以说:这些向量相差多少次?比较一下:
(1,1,1,1,1)
(1,0,1,1,0)
嗯。它们有 3 次相同的“位”——在第 1、第 3 和第 4 位。它们仅相差 2 位。因此,假设当我们比较这两个向量时,我们的“距离”为 2。恭喜,我们刚刚计算了 Hamming distance!汉明距离越小,数据就越“相似”。
(“相似性”度量和“距离”度量之间的区别在于前者是标准化的 - 它为您提供 0 到 1 之间的值。距离是任意数字,因此它只为您提供相对值.)
无论如何,这可能不是进行自然语言处理的最佳方式,但就您的目的而言,它是最简单的,并且实际上可能非常适合您的应用程序,或者至少作为一个起点。
(PS:“分类”-正如您在标题中所说的那样-将回答“如果您接受我的句子,它最有可能属于哪个类别?”这与说“多少我的句子与类别 1 比类别 2 更相似?”这似乎是您所追求的。)
祝你好运!