将spacy令牌向量转换为文本

时间:2018-04-17 23:54:00

标签: python vector text nlp spacy

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

提前感谢, Harathi

2 个答案:

答案 0 :(得分:0)

无法从矢量→单词翻译。但是,您可以实例化第二个序列,该序列将令牌序列映射到整数序列,指示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']

答案 1 :(得分:0)

实际上,您可以使用.orth_方法直接从doc对象中获取字符串,该方法将返回令牌的字符串表示形式,而不是SpaCy令牌对象

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']