微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

字符串映射/分类算法

如何解决字符串映射/分类算法

我不确定这个问题的标题是否正确。如果我知道它叫什么,我想我会更成功地寻找它。这是我想要做的:我有许多字符串,每个字符串都可以是零、一个或多个组的一部分。字符串和组的数量是有限的并且是先验已知的。我需要一个系统来知道哪个字符串属于哪个组。从理论上讲,我可以简单地通过在 JSON、YAML(或等价)中列出所有组及其字符串来做到这一点,如下所示:

ab3fxc:
- orange
- apple
- cucumber
...
2dythef9:
- apple # this appears in two groups
- carrot
...
xsh76s2ntrx:
- broccoli
- celery
- soj
...

但是,我必须处理大小限制,使这种方法不切实际。所以,另一种想法是这样的:

  1. 假设有一个函数 f,它将一个组内的所有字符串映射到一个唯一的字符串,该字符串可以用作该组的键(例如 ab3fxc、{{ 1}} 等)。请注意,我没有使用上面的“水果”或“蔬菜”之类的术语,而是使用组的抽象字符序列。我不在乎这些组键是什么,只要它们是唯一的。不过,理想情况下,组密钥应尽可能短(但不能更短)。

    f([strings]) -> 组键

  2. 假设有一个逆算法2dythef9,它将给定的字符串和组键映射到一个布尔值,指示给定的字符串是否是组的一部分

    g(string,group-key) -> true|false

在这里认为 g 可以通过一个神经网络来实现,该网络正在使用给定组的所有字符串进行训练。也许每个组都有一个单独的网络。然后,组密钥可以是该网络神经元权重的表示。 f 可能只是该神经网络的应用。更大的组和/或具有更高熵的组(其中字符串的同质性较差)可能需要更大的网络,从而导致更长的组密钥。只要将根据组键检查字符串的所有信息都嵌入在后者中就可以了。

然而,神经网络只是一个想法。也许这也可能是多项式函数?也就是说,组密钥由多项式的系数 a、b、c、d 等组成。或者它可以是有损音频压缩中使用的多个正弦波的系数。

注意:

  • 字符串和组的数量是有限的并且是先验已知的,我确切地知道哪个字符串是哪个组的一部分。这与机器学习无关,因为算法需要能够将以前未知的新字符串分类一个或多个组。
  • 如果我稍后将字符串添加到组中,则组键可能会或可能不会更改,具体取决于 g 生成的组键是否正确分类字符串。同样,如果有三个组 A、B 和 C,并且如果我将字符串 S 添加到组 B(其中 S 不属于 A 或 C),则所有三个组的组键可能会更改以正确分类 S作为 B 的一部分,而不是其他两组。
  • 在实践中,大概有 15 个组和 300 个字符串。字符串长度在 10 到 40 个字符之间。组密钥的长度是次要的,但它们应该至少比我在上面的示例中简单地列出组的所有成员时短一个数量级。
  • 这需要“无损”;我需要 100% 的可靠性。也就是说,在 99% 的情况下都能做到这一点的算法(或神经网络)毫无用处。
  • 我不是神经网络专家;我在机器学习方面的经验已经有几十年的历史了,所以我上面的一些术语可能是错误的。

简而言之,我的问题是:任何地方都有现有技术吗?有这个名字吗?我凭空想出了这个想法,但似乎有人在我之前解决了类似的问题。我应该读什么?还是我在花园小径上?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。