基于gensim训练的低资源词嵌入模型评价方法

gensim-evaluations的Python项目详细描述


gensim评估

此库提供了评估使用gensim加载的单词嵌入模型的方法。目前,它实现了两种专门为评估低资源模型而设计的方法。该代码允许用户用Wikidata支持的581种语言自动创建自定义测试集,然后使用OddOneOut和{}方法对其进行评估。在

基本用法

安装

PyPi安装

$ pip install gensim-evaluations

加载模型

这些方法是为评估通过Gensim加载的嵌入模型而设计的。 作为一个例子,我们首先从Mikolov et. al加载著名的预训练word2vec模型。在

^{pr2}$

通过gensim可以找到一个完整的预先训练模型列表here。当然,您可以始终使用gensim来训练和加载您自己的模型。在

生成特定于语言的自定义测试集

除了一个模型,OddOneOutTopk还需要一个类别的自定义测试集。每个类别都包含属于它的单词列表。 我们可以通过从Wikidata中选择一些相关项来轻松生成自定义测试集。 例如,我们可以选择

  • 藏传佛教寺院-Q54074585
  • 通讯社-Q192283
  • 算法-Q8366
  • 定理-Q65943
  • 数学概念-Q24034552
  • 人类圣经人物-Q20643955
  • 大写-Q5119
  • 国家-Q6256
  • 神话人物-Q4271324
  • 情感-Q9415
  • 消极情绪-Q60539481

如您所见,这些classes中的每一个都在Wikidata知识库中有一个关联的代码。这些类通过某些properties与知识库中的其他items相关。其中最重要的一个是instance of属性P31,它将类的特定示例项链接到该类。在

For example, Wikinews is an instance of Q192283 and Chuzang is an instance of Q54074585

按照这个基本思想,我们可以生成由Wikidata中属于这些类别的所有单词组成的测试集,这些单词使用项目支持的任何语言。在

from gensim_evaluations import wikiqueries

categories = ['Q54074585','Q192283','Q8366','Q65943','Q24034552','Q20643955',
           'Q5119','Q6256','Q4271324','Q9415','Q60539481']

langs = ['en','la']
wikiqueries.generate_test_set(items=categories,languages=langs,filename='test_set')

generate_test_set函数只需要一个Wikidata项目列表和一个语言代码列表。测试集将作为.txt文件保存在filename参数指定的位置。相应的语言代码会自动附加到相应的filename。在

这里有一些有用的链接,可以帮助确定可用的语言和类别。在

还应注意的是,类别大小会有所不同。特别是像human (Q5)这样的大类别包含8255736个实例,这些实例太大,无法作为单个类别使用。建议您使用SQID筛选出具有合理数量条目的类别,或者在Wikidata Query Service上测试查询以确保在将其用作类别之前运行。在

使用Topk和OddOneOut进行评估

我们现在可以使用TopkOddOneOut在这些新生成的测试集上评估word2vec模型(我们之前加载的)

from gensim_evaluations import methods

topk_result = methods.Topk(cat_file='test_set_en.txt',model=model, k=3, allow_oov=True)
odd_out_result = methods.OddOneOut(cat_file='test_set_en.txt',model=model, k_in=3, allow_oov=True, sample_size=1000)

print('topk_result=', topk_result)
print('odd_out_result=', odd_out_result)

TopkOddOneOut函数都返回一个5元组,其中包含:

  1. 总体精度
  2. 类别精度(每个类别的浮动精度)
  3. 跳过类别列表
  4. 总原始分数(正确比较的总数)
  5. 类别原始分数(每个类别的正确比较数)

联系人

请随时联系n8stringham@gmail.com提出任何问题。在

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java如何在href中将struts2文本字段的值作为参数传递?   java检查对象属性是否为空的最佳方法是什么?   java通过Maven使用Junit类别运行Cucumber测试   java如何在selenium Webdriver(Mac)中使用Robot类上传多个文件?   如何用python绘制图形或将python转换为java和Matlab?   java Osgi捆绑包更新和ResourceBundle   java使用流api将流<@Nullable T>转换为流<@NonNull T>   java中EXCEL的平台无关连接字符串   JavaFX中的java表   java Jetty线程池和sun。HttpServer会话   JPA存储库bean的java Spring注入无法工作NullPointerException   java从另一个Kubernetes作业触发Kubernetes   我的java netbeans抽奖计划需要帮助吗   泛型中的java有界类型无法扩展另一个有界类型   如果混合使用全局构建和概要文件构建,java cxfcodegenplugin会生成错误代码   封装SQL平台之间差异的java策略?