9

如果我有一个要矢量化的文本字符串,我应该如何处理其中的数字?或者,如果我用数字和单词输入神经网络,我怎样才能将数字保持为数字?

我正计划制作一本包含我所有单词的字典(如此处所建议的)。在这种情况下,所有字符串都将变成数字数组。我应该如何处理数字字符?如何输出不将单词索引与数字字符混合的向量?

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

4

3 回答 3

6

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

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

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

例如, 1相似度one得分为 0.17,2相似度two得分为0.23. 它们似乎表明它们的使用方式完全不同。

通过将数字视为另一个词,您并没有改变上下文,而是通过对这些数字进行任何其他转换,您不能保证它更好。所以,最好不要动它,把它当作另一个词。

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

于 2017-07-14T21:22:34.620 回答
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}
于 2017-07-02T07:56:16.193 回答
1

以下论文可能会有所帮助: http: //people.csail.mit.edu/mcollins/6864/slides/bikel.pdf

具体来说,第 7 页。

在他们使用<unknown>标签之前,他们会尝试用常见的模式名称标签替换字母数字符号组合,例如:

FourDigits (good for years)

我已经尝试实施它并取得了很好的效果。

于 2017-07-15T09:07:38.370 回答