将 nl 字符串转换为向量或一些等效的数字

Convert nl string to vector or some numeric equivalent

我正在尝试将字符串转换为等效的数字,这样我就可以训练神经网络来 class 化字符串。我尝试了 ascii 值的总和,但这只会导致更大的数字与更小的数字。

例如,我可以用德语编写一个短字符串,然后将其放入英语 class,因为用于训练的英语单词很短且数值很小。

我正在研究 Google 的 word2vec,它似乎应该有效。但我想在客户端执行此操作。我找到了一个 node.js implementation, here,但它只是运行命令行工具。

如何将字符串转换为数字,也许是 js 中的向量?

我相信您已经考虑过为遇到的每个新单词分配一个整数。您必须在某个地方跟踪,但这是一种选择。

你也可以使用 js 内置的任何哈希方法。

如果您不介意一些哈希冲突,并且结果整数的大小无关紧要,我可以推荐一个我以前用过几次的技巧。

所以,e = 2t=3a=5,等等,这给了我们:

2       e
3       t
5       a
7       o
11      i
13      n
17      s
19      h
23      r
29      d
31      l
37      c
41      u
43      m
47      w
53      f
59      g
61      y
67      p
71      b
73      v   
79      k
83      j
89      x
97      q
101     z
  • 将单词中每个字母对应的值相乘

所以,value73*5*31*41*2corresponding37*7*23*23...。每个独特的集合给出了独特的答案。它与变位词发生冲突,因此我们不小心构建了变位词检测器。

不过,实际上并没有一种语言上合理的方法来做到这一点。我怀疑 word2vec 只是将任意整数分配给字符串。