2 回答
TA贡献1836条经验 获得超13个赞
没有必要的理由来使用Word2Vec它。的要点Word2Vec是将单词映射到具有许多浮点坐标的多维“密集”向量。
尽管Word2Vec碰巧扫描了您的训练语料库中所有唯一单词,并为每个唯一单词在其内部数据结构中的整数位置,但您通常不会制作只有一维的模型 ( size=1),或者向模型询问单词的整数槽(内部实现细节)。
如果你只需要一个 (string word)->(int id) 映射,gensim 类Dictionary可以做到这一点。看:
https://radimrehurek.com/gensim/corpora/dictionary.html
from nltk.tokenize import word_tokenize
from gensim.corpora.dictionary import Dictionary
sometext = "hello how are you doing?"
tokens = word_tokenize(sometext)
my_vocab = Dictionary([tokens])
print(my_vocab.token2id['hello'])
现在,如果确实有一些正当的理由要使用Word2Vec——比如需要多维向量来获得更大的词汇量,在大量不同的文本上进行训练——并且你真正需要的是知道单词的内部整数槽,你可以访问那些通过内部wv属性的vocab字典:
print(model.wv.vocab['hello'].index)
TA贡献1829条经验 获得超6个赞
您可以使用 gensim corpora.Dictionary 为令牌创建字典和 id。
from gensim import corpora
dictionary = corpora.Dictionary([tokens])
print(dictionary)
Dictionary(6 unique tokens: ['?', 'are', 'doing', 'hello', 'how']...)
token2id
print(dictionary.token2id)
{'?': 0, 'are': 1, 'doing': 2, 'hello': 3, 'how': 4, 'you': 5}
dictionary.token2id['hello']
3
添加回答
举报