为了账号安全,请及时绑定邮箱和手机立即绑定

将字符串标记转换为整数

将字符串标记转换为整数

慕桂英4014372 2022-03-09 21:26:21
我正在尝试将句子标记转换为整数。但它给了我花车。from nltk.tokenize import word_tokenizefrom gensim.models import Word2Vecsometext = "hello how are you doing?"tokens = word_tokenize(sometext)model = Word2Vec([tokens], min_count=1, size=1)当我做,print(model["hello"])它给了我,[-0.3843384]我希望这是一个正整数。
查看完整描述

2 回答

?
开心每一天1111

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)


查看完整回答
反对 回复 2022-03-09
?
肥皂起泡泡

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


查看完整回答
反对 回复 2022-03-09
  • 2 回答
  • 0 关注
  • 163 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信