您可能希望查看“相似性度量”或“距离度量”的类别(在数据挖掘术语中,这与“分类”不同。)
基本上,相似性度量是一种数学方法,您可以:
- 取两组数据(在你的情况下,单词)
- 做一些计算/方程/算法
- 结果是您有一些数字可以告诉您该数据有多“相似”。
使用相似性度量时,此数字是 0 到 1 之间的数字,其中“0”表示“完全不匹配”,“1”表示“相同”
因此,您实际上可以将您的句子视为一个向量——句子中的每个单词都代表该向量的一个元素。对于每个类别的关键字列表也是如此。
然后您可以做一些非常简单的事情:采用“余弦相似度”或“ Jaccard 索引”(取决于您如何构建数据。)
这两个指标的作用是它们采用两个向量(您的输入句子和您的“关键字”列表)并给您一个数字。如果您在所有类别中执行此操作,您可以对这些数字进行排名,以查看哪个匹配项具有最大的相似系数。
举个例子:
从你的问题:
客户交易:存款、存款、客户、账户、账户
所以你可以构造一个包含 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。恭喜,我们刚刚计算了汉明距离!汉明距离越低,数据就越“相似”。
(“相似性”度量和“距离”度量之间的区别在于前者是标准化的——它给你一个介于 0 和 1 之间的值。距离是任意数字,所以它只给你一个相对值。)
无论如何,这可能不是进行自然语言处理的最佳方式,但就您的目的而言,它是最简单的,并且实际上可能非常适合您的应用程序,或者至少作为一个起点。
(PS:“分类”-正如您在标题中所说的那样-将回答“如果您接受我的句子,它最有可能属于哪个类别?”这与说“相似程度有多少?”有点不同我对第 1 类的判决比对第 2 类的判决?”这似乎是你所追求的。)
祝你好运!