python - 将字符串标记转换为整数
问题描述
我正在尝试将句子标记转换为整数。但它给了我花车。
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]
我希望这是一个正整数。
解决方案
没有必要的理由来使用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)
推荐阅读
- python - 我在此 Python 代码中找不到的错误在哪里?
- ruby-on-rails - 比较 2 个大型 ActiveRecord 关系进行排序
- r - 并排数据的Ggplot条形图未显示为堆叠
- r - RSelenium RemoteDriver 未连接到端口 4445L
- discord.py - discord.py - 使用异步清理功能卸载 Cogs
- ignite - apache 点燃堆上和堆外内存
- ios - 在代理删除失败后更新选择器 aws
- javascript - 调整大小和删除侧栏时如何使画布改变大小?
- python - 抓取雅虎财务时出现不合理的错误
- mysql - 为派生表指定别名会产生错误