Keras标记化(适合文本)

时间:2019-02-14 12:54:33

标签: machine-learning keras tokenize keras-layer stringtokenizer

当我运行此脚本时->

tokenizer.fit_on_texts(df['text'].values)
sequences = tokenizer.texts_to_sequences(df['text'].values)
word_index = tokenizer.word_index
print('Found %s unique tokens.' % len(word_index))

我收到此错误

AttributeError                            Traceback (most recent call 
last)
<ipython-input-4-7c08b89b116a> in <module>()
  ----> 1 tokenizer.fit_on_texts(df['text'].values)
        2 sequences = tokenizer.texts_to_sequences(df['text'].values)
        3 word_index = tokenizer.word_index
        4 print('Found %s unique tokens.' % len(word_index))

 /opt/conda/lib/python3.6/site-packages/keras_preprocessing/text.py in 
 fit_on_texts(self, texts)
     220                                             self.filters,
     221                                             self.lower,
 --> 222                                             self.split)
     223             for w in seq:
     224                 if w in self.word_counts:

 /opt/conda/lib/python3.6/site-packages/keras_preprocessing/text.py in 
 text_to_word_sequence(text, filters, lower, split)
      41     """
      42     if lower:
 ---> 43         text = text.lower()
      44 
      45     if sys.version_info < (3,):

 AttributeError: 'float' object has no attribute 'lower'

当我减小CSV文件的大小时,我的CSV文件大小为6970963,是否存在keras Tokenizer的大小限制,或者我做错了事

3 个答案:

答案 0 :(得分:0)

我认为文件大小不是问题,请尝试使用try块并查看正在传递的数据。用这样的东西代替行

#instead of this
tokenizer.fit_on_texts(df['text'].values)

#use this to look at the data when it is causing that error.
try:
   tokenizer.fit_on_texts(df['text'].values)
except Exception as e:
   print("exceiption is", e)
   print("data passedin ", df['text'].values)

然后,您可以相应地修复所得到的错误。

答案 1 :(得分:0)

检查适合标记器的文本的数据类型。它认为它是浮点数而不是字符串。您需要先将其转换为字符串,然后再为其添加标记符。 尝试这样的事情:     train_x = [str_x中的x的str(x [1])]

答案 2 :(得分:0)

虽然它是一个旧线程,但仍然可以回答。

您的数据可能具有nan,它被解释为浮点数而不是nan。要么将类型强制为str(word)要么使用data.fillna('empty')删除nan