一个用于比较经过训练的嵌入模型的包。
repcomp的Python项目详细描述
重复计算
repcomp
(表示比较的缩写)是一个用于比较经过训练的嵌入模型的包。您可以使用它来比较深层神经网络、矩阵分解模型、图形嵌入、单词嵌入等。
repcomp
支持以下嵌入比较方法:
- 近邻:根据嵌入距离取每个实体的近邻集,并将模型A的近邻集与模型B的近邻集进行比较。
- 典型相关:将嵌入分量视为随机变量的观测值,并计算模型A和模型B之间的典型相关。
- 单元匹配:在模型A的嵌入组件和模型B的嵌入组件之间形成单元到单元的匹配,并测量匹配单元的相关性。
比较随机嵌入的一个简单示例:
fromrepcomp.comparisonimportCCAComparisonimportnumpyasnp# Generate random embedding matricesnum_samples=100num_components=10embedding_1=np.random.random((num_samples,num_components))embedding_2=embedding_1+0.5*np.random.random((num_samples,num_components))# Run the comparisoncomparator=CCAComparison()sim=comparator.run_comparison(embedding_1,embedding_2)print("The canonical correlation similarity is {}".format(sim["similarity"]))
比较单词嵌入的一个更复杂的示例:
importgensim.downloaderasapiimportnumpyasnpfromrepcomp.comparisonimportNeighborsComparison# Load word vectors from gensimglove_wiki_50=api.load("glove-wiki-gigaword-50")glove_twitter_50=api.load("glove-twitter-50")# Build the embedding matrices over the shared vocabulariesshared_vocab=set(glove_wiki_50.vocab.keys()).intersection(set(glove_twitter_50.vocab.keys()))glove_wiki_50_vectors=np.vstack([glove_wiki_50.get_vector(word)forwordinshared_vocab])glove_twitter_50_vectors=np.vstack([glove_twitter_50.get_vector(word)forwordinshared_vocab])# Run the comparisoncomparator=NeighborsComparison()print("The neighbors similarity between glove-wiki-gigaword-50 and glove-twitter-50 is {}".format(comparator.run_comparison(glove_wiki_50_vectors,glove_twitter_50_vectors)["similarity"]))