如果我有一个要矢量化的文本字符串,我应该如何处理其中的数字?或者,如果我向神经网络提供数字和单词,我如何才能将数字保持为数字?
我正计划为我所有的单词做一本词典(as suggested here)。在这种情况下,所有字符串都将成为数字数组。我应该如何处理数字字符?如何输出一个不混合单词索引和数字字符的向量?
将数字转换为字符串会削弱我提供给网络的信息吗?
发布于 2017-07-15 05:22:35
使用@user1735003扩展您的讨论-让我们考虑表示数字的两种方式:
第二个改变了上下文吗?为了验证它,我们可以使用word2vec找到两个表示的相似性。如果他们有相似的上下文,分数将会很高。
例如,1和one的相似性得分为0.17,2和two的相似性得分为0.23。他们似乎表明,如何使用它们的上下文是完全不同的。
通过将数字视为另一个单词,您不会改变上下文,但通过对这些数字进行任何其他转换,您不能保证它会变得更好。所以,最好不要碰它,把它当作另一个词来对待。
注意:word-2-vec和glove都是通过将数字视为字符串进行训练的(情况1)。
发布于 2017-07-02 15:56:16
您提供的链接表明,从.split(' ')得到的所有内容都被编入了索引--单词,但也包括数字,可能还有表情符号。(我仍然会注意标点符号)。除非你对你的数据或你的问题有更多的先验知识,否则你可以从这个开始。
编辑
字面上使用您的字符串及其代码的示例:
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-15 17:07:38
以下论文可能对您有所帮助:http://people.csail.mit.edu/mcollins/6864/slides/bikel.pdf
具体来说,第7页。
在使用<unknown>标记之前,他们会尝试将字母数字符号组合替换为常见的模式名称标记,例如:
FourDigits (good for years)我试着去实现它,并给出了很好的结果。
https://stackoverflow.com/questions/44865840
复制相似问题