【问题标题】:What is the difference between giving a string and a list of string(s) to keras tokenizer?将字符串和字符串列表提供给 keras 标记器有什么区别?
【发布时间】:2020-09-08 18:29:50
【问题描述】:

我正在使用keras.preprocessing 来标记句子,我在keras.preprocessing.text.Tokenize 遇到了一个意外情况。当我给它字符串时,word_index 的输出是单个字符及其索引的字典,但对于列表,word_index 的输出是单词字典(由空格分隔)。
为什么会发生这种情况?
分词器输入字符串:

from keras.preprocessing.text import Tokenizer

text = "Keras is a deep learning and neural networks API by François Chollet" 
tokenizer = Tokenizer()
tokenizer.fit_on_texts(text) #input of tokenizer as string

print(tokenizer.word_index)

>>> {'e': 1, 'a': 2, 'n': 3, 'r': 4, 's': 5, 'i': 6, 'l': 7, 'o': 8, 'k': 9, 'd': 10, 'p': 11, 't': 12, 'g': 13,
     'u': 14, 'w': 15, 'b': 16, 'y': 17, 'f': 18, 'ç': 19, 'c': 20, 'h': 21}

分词器输入列表:

from keras.preprocessing.text import Tokenizer

text = ["Keras is a deep learning and neural networks API by François Chollet"] 
tokenizer = Tokenizer()
tokenizer.fit_on_texts(text) #input of tokenizer as list

print(tokenizer.word_index)

>>> {'keras': 1, 'is': 2, 'a': 3, 'deep': 4, 'learning': 5, 'and': 6, 'neural': 7, 'networks': 8,
     'api': 9, 'by': 10, 'françois': 11, 'chollet': 12}

【问题讨论】:

    标签: python keras nlp tokenize


    【解决方案1】:

    文档声明使用字符串列表或字符串列表。没有提及是否允许您将字符串作为输入传递,因此您正在做的可能是未定义的行为,没有被捕获。

    当您将字符串作为输入传递时,Keras 似乎将其解释为字符级标记化。无论哪种方式,如果您想执行字符级标记化,最好在实例化 Tokenizer 类时传递 char_level=True

    TL;DR:不要传递字符串。 docs 没有将其作为法律论据提及。存在执行字符级标记化的合法方式。

    【讨论】:

      猜你喜欢
      • 2021-07-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-26
      • 1970-01-01
      • 2011-03-19
      • 2010-09-17
      相关资源
      最近更新 更多