python - word2vec 用于单词字典
问题描述
我需要为单词字典生成 word2vec 数组。字典看起来像这样
test={0: 'tench, Tinca tinca',
1: 'goldfish, Carassius auratus',
2: 'great white shark, white shark, man-eater, man-eating shark, Carcharodon carcharias',
3: 'tiger shark, Galeocerdo cuvieri',
4: 'hammerhead, hammerhead shark'}
循环应该遍历每一行,检查模型中是否存在单词,如果存在则将向量存储在数组中,否则检查行中的下一个单词。如果 gensim 模型中不存在任何单词,则它不应该执行任何操作(数组初始化为零)但是,如果预训练模型中不存在单词,则会引发此异常:
KeyError:“词汇表中没有‘Galeocerdo cuvieri’这个词”
为了绕过引发的错误,理想的循环应该是什么?这是我的起始代码:
import gensim
model = gensim.models.KeyedVectors.load_word2vec_format('/home/shikhar /Downloads/GoogleNews-vectors-negative300.bin',binary=True)
array=np.zeros((4,300))
for i in test:
synonyms=test[i].split(',')
解决方案
为什么不试试这个
vectors= list()
for i in test:
flag=True
synonyms=test[i].split(',')
for k in synonyms:
try:
vectors.append(model[k]])
flag = False
break
except KeyError as e:
print(e)
continue
if flag:
vectors.append(# Insert your array with zeroes here)
我假设您需要列表中的所有向量
推荐阅读
- lightningchart - 更改 LightningChart 标题大小和颜色
- android - Android libgdx 无法识别 Facebook ShareDialog (Facebook SDK)
- node.js - MongoDB $pull 查询无法正常工作
- c# - 如何在不从外部更改实体的情况下对实体执行数学运算?
- sql-server - 为什么在引发除以零异常后执行插入语句
- ruby-on-rails - 使用 rails 6 active storage 不显示 PDF
- apollo-server - 是否可以为 Apollo Server 附带的 GraphQL Playground 定义 HTTP 标头?
- angular - 在编辑模式下打开表单时,Angular Reactive Form 发生变化
- python - 我需要使用 python 有效地分批将数据从 csv 文件导入到 postgresql 表中
- ksqldb - Windows下如何安装mongoDb连接器?