首页 > 解决方案 > 将字符串标记转换为整数

问题描述

我正在尝试将句子标记转换为整数。但它给了我花车。

from nltk.tokenize import word_tokenize
from gensim.models import Word2Vec

sometext = "hello how are you doing?"

tokens = word_tokenize(sometext)
model = Word2Vec([tokens], min_count=1, size=1)

当我做,

print(model["hello"])

它给了我,

[-0.3843384]

我希望这是一个正整数。

标签: pythonpython-3.xnltkgensimword2vec

解决方案


没有必要的理由来使用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)

推荐阅读