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

时间:2017-07-01 22:16:01

标签: tensorflow nlp word2vec word-embedding

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

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

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

3 个答案:

答案 0 :(得分:2)

您提供的链接表明,.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}

答案 1 :(得分:2)

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

  1. 将其视为字符串并将其视为另一个字,并在形成字典时为其指定ID。或
  2. 将数字转换为实际单词:'1'变为'one','2'变为'two',依此类推。
  3. 第二个是否会改变上下文?为了验证它,我们可以使用word2vec找到两个表示的相似性。如果他们有相似的背景,那么得分会很高。

    例如,       1one的相似度得分为0.17,2two的相似度得分为0.23。他们似乎认为使用它们的背景完全不同。

      

    将数字视为另一个词,你不会改变   上下文,但通过对这些数字进行任何其他转换,你   不能保证它更好。所以,最好不要接触它,把它当作另一个词。

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

答案 2 :(得分:1)

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

具体而言,第7页。

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

FourDigits (good for years)

我试图实施它并且效果很好。