将字符串标记转换为整数

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


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]

我希望这是一个正整数。


慕桂英4014372
浏览 164回答 2
2回答

开心每一天1111

没有必要的理由来使用Word2Vec它。的要点Word2Vec是将单词映射到具有许多浮点坐标的多维“密集”向量。尽管Word2Vec碰巧扫描了您的训练语料库中所有唯一单词,并为每个唯一单词在其内部数据结构中的整数位置,但您通常不会制作只有一维的模型 ( size=1),或者向模型询问单词的整数槽(内部实现细节)。如果你只需要一个 (string word)->(int id) 映射,gensim 类Dictionary可以做到这一点。看:https://radimrehurek.com/gensim/corpora/dictionary.htmlfrom nltk.tokenize import word_tokenizefrom gensim.corpora.dictionary import Dictionarysometext = "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)

肥皂起泡泡

您可以使用 gensim corpora.Dictionary 为令牌创建字典和 id。from gensim import corporadictionary = corpora.Dictionary([tokens])print(dictionary)Dictionary(6 unique tokens: ['?', 'are', 'doing', 'hello', 'how']...)token2idprint(dictionary.token2id){'?': 0, 'are': 1, 'doing': 2, 'hello': 3, 'how': 4, 'you': 5}dictionary.token2id['hello']3 
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python