向量化单词时如何处理文本字符串中的数字?

Rik*_*ard 6 nlp word2vec tensorflow word-embedding

如果我有一个要矢量化的文本字符串,我应该如何处理其中的数字?或者,如果我向神经网络提供数字和单词,我如何将数字保存为数字?

我打算制作一本关于我所有单词的字典(如此处所示).在这种情况下,所有字符串都将成为数字数组.我该如何处理数字字符?如何输出不将单词索引与数字字符混合的向量?

将数字转换为字符串会削弱我为网络提供的信息吗?

vij*_*y m 5

与@user1735003 展开讨论 - 让我们考虑两种表示数字的方式:

  1. 将其视为字符串,将其视为另一个单词,并在形成字典时为其分配一个 ID。或者
  2. 将数字转换为实际单词:“1”变为“一”,“2”变为“二”,依此类推。

无论如何,第二个会改变上下文吗?为了验证它,我们可以使用 找到两个表示的相似性word2vec。如果他们有相似的背景,分数会很高。

例如, 1one具有0.17的相似性得分,2two具有的相似性得分0.23。它们似乎表明它们使用方式的上下文完全不同。

通过将数字视为另一个词,您并没有改变上下文,但是通过对这些数字进行任何其他转换,您不能保证它会更好。因此,最好保持原样并将其视为另一个词。

注意word-2-vecglove都是通过将数字视为字符串来训练的(案例 1)。


P-G*_*-Gn 2

您提供的链接表明,a 产生的所有内容.split(' ')都已索引 - 单词,还有数字,可能是笑脸,aso。(我仍然会照顾标点符号)。除非您对数据或问题有更多的先验知识,否则您可以从那里开始。

编辑

从字面上使用您的字符串及其代码的示例:

corpus = {'my car number 3'}
dictionary = {}
i = 1
for tweet in corpus:
  for word in tweet.split(" "):
    if word not in dictionary: dictionary[word] = i
    i += 1
print(dictionary)
# {'my': 1, '3': 4, 'car': 2, 'number': 3}
Run Code Online (Sandbox Code Playgroud)