【问题标题】:converting spacy token vectors into text将 spacy 标记向量转换为文本
【发布时间】:2018-04-17 23:53:59
【问题描述】:

我正在使用 spacy 来创建句子的向量。如果句子是“我正在工作”,它会给我一个形状为 (3, 300) 的向量。有没有办法使用这些向量来取回句子中的文本?

提前致谢, 哈拉地语

【问题讨论】:

  • 你能说出你是如何创建句子向量的吗?
  • 我有一些句子,每个句子中的单词数不同。所以我将所有句子填充到 50 的长度。 nlp = spacy.load('en_core_web_lg') sent_embedded = np.zeros((50, 300), dtype=np.float32) tokens = nlp(sentence) for i,枚举中的令牌(令牌):sentence_embedded[i] = token.vector

标签: python vector text nlp spacy


【解决方案1】:

没有办法从向量→单词进行翻译。但是,您可以实例化第二个序列,将标记序列映射到整数序列,指示 spacy 模型词汇表中每个标记的 id。

sentence = 'I am working'
document = nlp(sentence)
id_sequence = map(lambda x: x.orth, [token for token in document])
text = map(lambda x: nlp.vocab[x].text, [id for id in id_sequence])
print(text)
['I', 'am', 'working']

【讨论】:

    【解决方案2】:

    其实你可以用.orth_方法直接从doc对象中获取字符串,它返回的是token的字符串表示,而不是SpaCy的token对象

    import en_core_web_sm
    nlp = en_core_web_sm.load()
    tokenizer = nlp.Defaults.create_tokenizer(nlp)
    text = 'I am working'
    tokens = [token.orth_ for token in tokenizer(text)]
    print(tokens)
    ['I', 'am', 'working']
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-02-25
      • 1970-01-01
      • 2012-08-09
      • 1970-01-01
      • 1970-01-01
      • 2020-12-14
      • 1970-01-01
      • 2014-04-21
      相关资源
      最近更新 更多