如果我有一个要矢量化的文本字符串,我应该如何处理其中的数字?或者,如果我用数字和单词输入神经网络,我怎样才能将数字保持为数字?
我正计划制作一本包含我所有单词的字典(如此处所建议的)。在这种情况下,所有字符串都将变成数字数组。我应该如何处理数字字符?如何输出不将单词索引与数字字符混合的向量?
将数字转换为字符串会削弱我提供给网络的信息吗?
如果我有一个要矢量化的文本字符串,我应该如何处理其中的数字?或者,如果我用数字和单词输入神经网络,我怎样才能将数字保持为数字?
我正计划制作一本包含我所有单词的字典(如此处所建议的)。在这种情况下,所有字符串都将变成数字数组。我应该如何处理数字字符?如何输出不将单词索引与数字字符混合的向量?
将数字转换为字符串会削弱我提供给网络的信息吗?
扩大与@user1735003 的讨论 - 让我们考虑两种表示数字的方式:
无论如何,第二个会改变上下文吗?为了验证它,我们可以使用 找到两个表示的相似性word2vec
。如果他们有相似的上下文,分数会很高。
例如,
1
相似度one
得分为 0.17,2
相似度two
得分为0.23
. 它们似乎表明它们的使用方式完全不同。
通过将数字视为另一个词,您并没有改变上下文,而是通过对这些数字进行任何其他转换,您不能保证它更好。所以,最好不要动它,把它当作另一个词。
注意:两者都是通过将数字视为字符串来训练的(案例 1)word-2-vec
。glove
您提供的链接表明由 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}
以下论文可能会有所帮助: http: //people.csail.mit.edu/mcollins/6864/slides/bikel.pdf
具体来说,第 7 页。
在他们使用<unknown>
标签之前,他们会尝试用常见的模式名称标签替换字母数字符号组合,例如:
FourDigits (good for years)
我已经尝试实施它并取得了很好的效果。