【问题标题】:word2vec for dictionary of wordsword2vec 用于单词字典
【发布时间】:2019-01-02 00:46:55
【问题描述】:

我需要为单词字典生成 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(',')

【问题讨论】:

    标签: python nlp gensim word2vec


    【解决方案1】:

    为什么不试试这个

    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)               
    

    我假设您需要列表中的所有向量

    【讨论】:

    • 感谢您的帮助!这就是我想要的,除了我只想要一行中的 1 个单词(同义词)并希望它在获得该向量后立即移动到下一行。你能帮我解决这个问题吗?
    猜你喜欢
    • 2016-06-13
    • 2019-10-09
    • 1970-01-01
    • 2019-07-07
    • 2019-02-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多