将 nl 字符串转换为向量或一些等效的数字
Convert nl string to vector or some numeric equivalent
我正在尝试将字符串转换为等效的数字,这样我就可以训练神经网络来 class 化字符串。我尝试了 ascii 值的总和,但这只会导致更大的数字与更小的数字。
例如,我可以用德语编写一个短字符串,然后将其放入英语 class,因为用于训练的英语单词很短且数值很小。
我正在研究 Google 的 word2vec,它似乎应该有效。但我想在客户端执行此操作。我找到了一个 node.js implementation, here,但它只是运行命令行工具。
如何将字符串转换为数字,也许是 js 中的向量?
我相信您已经考虑过为遇到的每个新单词分配一个整数。您必须在某个地方跟踪,但这是一种选择。
你也可以使用 js 内置的任何哈希方法。
如果您不介意一些哈希冲突,并且结果整数的大小无关紧要,我可以推荐一个我以前用过几次的技巧。
- 分配每个字母 a prime number based on its frequency:
所以,e = 2
、t=3
、a=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
- 将单词中每个字母对应的值相乘
所以,value
是 73*5*31*41*2
。 corresponding
是 37*7*23*23...
。每个独特的集合给出了独特的答案。它与变位词发生冲突,因此我们不小心构建了变位词检测器。
不过,实际上并没有一种语言上合理的方法来做到这一点。我怀疑 word2vec
只是将任意整数分配给字符串。
我正在尝试将字符串转换为等效的数字,这样我就可以训练神经网络来 class 化字符串。我尝试了 ascii 值的总和,但这只会导致更大的数字与更小的数字。
例如,我可以用德语编写一个短字符串,然后将其放入英语 class,因为用于训练的英语单词很短且数值很小。
我正在研究 Google 的 word2vec,它似乎应该有效。但我想在客户端执行此操作。我找到了一个 node.js implementation, here,但它只是运行命令行工具。
如何将字符串转换为数字,也许是 js 中的向量?
我相信您已经考虑过为遇到的每个新单词分配一个整数。您必须在某个地方跟踪,但这是一种选择。
你也可以使用 js 内置的任何哈希方法。
如果您不介意一些哈希冲突,并且结果整数的大小无关紧要,我可以推荐一个我以前用过几次的技巧。
- 分配每个字母 a prime number based on its frequency:
所以,e = 2
、t=3
、a=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
- 将单词中每个字母对应的值相乘
所以,value
是 73*5*31*41*2
。 corresponding
是 37*7*23*23...
。每个独特的集合给出了独特的答案。它与变位词发生冲突,因此我们不小心构建了变位词检测器。
不过,实际上并没有一种语言上合理的方法来做到这一点。我怀疑 word2vec
只是将任意整数分配给字符串。