【问题标题】:Tokenizer doesn't work properly in torchtextTokenizer 在torchtext 中无法正常工作
【发布时间】:2023-03-26 08:24:01
【问题描述】:

我在 torchtext 中遇到了问题,并且为此苦苦挣扎了很长时间。我试图使用 torchtext 和 spacy 对文本进行标记和数字化。我将我的标记器定义为:

def Sp_Tokenizer(text): 
    return [tok.text for tok in spacy_en.tokenizer(text)]

效果很好:

Sp_Tokenizer('How are you today')

['How', 'are', 'you', 'today']

然后我将这个分词器传递给torchtext:

TEXT = data.Field(sequential=True, tokenize=Sp_Tokenizer, lower=False)

并构建了词汇:

corps = ['How are you', 'I am good today', 'He is not well']
TEXT.build_vocab(corps, vectors="glove.6B.100d")

然后我尝试了

TEXT.numericalize('How are you today')

我以为我应该得到一个有 4 个数字(单词级别)的张量,但是,我得到的是 char 级别:

tensor([[ 6,  3, 10,  2,  4, 17,  5,  2, 11,  3, 19,  2,  9,  3,  7,  4, 11]])

这有什么问题?有什么我可以解决的吗?谢谢!

【问题讨论】:

    标签: python nlp pytorch spacy torchtext


    【解决方案1】:

    根据文档here numericize 接受预先标记的输入,因此您不能只传递一个字符串。您想要一个示例:

    TEXT.preprocess("Hello, how are you today?")
    

    或者这个批量:

    TEXT.process(["Hello, how are you today?"])
    

    【讨论】:

      猜你喜欢
      • 2021-08-04
      • 2016-12-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-03-14
      • 2021-04-08
      • 2018-07-14
      相关资源
      最近更新 更多