跨评级机构协议phi,作为kripperndorfs alpha的替代方案,如https://github.com/alessandrocheco/agreement-phi所述

agreement-phi的Python项目详细描述


协议度量phi

跨等级协议度量phi的源代码。现场演示:http://agreement-measure.sheffield.ac.uk

要求

python 3+,pymc3 3.3+。请参阅Linux和OSX上测试工作版本的需求文件。

安装-带PIP

只需运行pip install agreement_phi。 这将提供一个模块和一个名为run_phi的命令行可执行文件。

安装-不带PIP

下载文件夹。

示例-来自命令行

准备一个csv文件(没有标题,每一行是一个文档,每一列是一个评分器),保留缺少的值为空。例如input.csv

1,2,,3
1,1,2,
4,3,2,1

从控制台执行。 运行run_phi --h获得的更多详细信息:

usage: agreement_phi.py [-h] -f FILE [-v] [-l val val]

Phi Agreement Measure

optional arguments:
  -h, --help                     show this help message and exit
  -f FILE, --file FILE           input FILE <REQUIRED>
  -v, --verbose                  print verbose messages
  -l val val, --limits val val   Set limits <RECOMMENDED> (two values separated by a space)

示例-来自python

输入是一个numpy二维数组,对于缺少的值使用nan,或者等价于一个python列表(其中每个列表是一个文档的评级集,长度相同,根据需要使用nan填充)。每一行代表不同的文档,每一列代表不同的评级。请注意,phi不考虑评分者的偏见,因此每个文档的评分顺序无关紧要。因此,只有当文档具有不同数量的分级时,才需要缺少值和稀疏表示。

输入示例

import numpy as np
m_random = np.random.randint(5, size=(5, 10)).tolist()
m_random[0][1]=np.nan

或等效

m_random = np.random.randint(5, size=(5, 10)).astype(float)
m_random[0][1]=np.nan

运行度量推断

from agreement_phi import run_phi
run_phi(data=m_random,limits=[0,4],keep_missing=True,fast=True,njobs=4,verbose=False,table=False,N=500)
  • data[non-optional]是输入列表的矩阵或列表(如果需要,所有长度相同且带有nan填充的列表)。
< H4>可选参数:
  • limits定义比例[默认情况下自动推断]。这是一个列表的最小和最大(包括)的规模。
  • keep_missing[默认情况下根据nans数自动推断]布尔值。如果有许多nan,则可能需要切换到false,
  • fast[默认为真]布尔值。是否使用快速推理技术。
  • N[默认1000]整数。迭代次数。如果convergence_test为false,则将其增加。
  • verbose[默认值为false]布尔值。如果为真,则显示更多信息
  • table[默认值为false]布尔值。如果为true,则以表的形式输出更详细。
  • njobs[默认1]整数。并行作业数。将其设置为可用CPU的数量。
  • binning[默认为真]布尔值。如果为False,请考虑非装箱比例边界中的值:这在使用离散比例时很有用,并且边界中的值应被视为符合限制,而不是在相应箱的中心。当边界的值具有很强的含义(例如[绝对不是,一位,中等,全部])时,这很有用,其中在刻度边界中的回答不在与刻度中的第二步接近的存储箱中。

请注意,代码将尝试推断比例的限制,但强烈建议包含这些限制(以防边界上的某些元素丢失)。对于本例,参数限制是limits=[0,4]

注意,keep_missing将被自动推断,但是对于高度不平衡的数据集(每个文档的评级分布数),可以通过手动设置此选项来覆盖它。

输出示例

{'agreement': 0.023088447111559884, 'computation_time': 58.108173847198486, 'convergence_test': True, 'interval': array([-0.03132854,  0.06889001])}

其中“间隔”表示95%的最高后密度间隔。 如果收敛性检验为假,建议增加n。

参考文献

如果您将其用于学术出版物,请引用论文:

Checco,A.,Roitero,A.,Maddalena,E.,Mizzaro,S.,和Demartini,G.(2017年)。让我们同意不同意见:为众包制定协议措施。第五届aaai人类计算和众包会议记录(hcomp-17)(第11-20页)。aaai出版社。

@inproceedings{checco2017let,
  title={Let’s Agree to Disagree: Fixing Agreement Measures for Crowdsourcing},
  author={Checco, A and Roitero, A and Maddalena, E and Mizzaro, S and Demartini, G},
  booktitle={Proceedings of the Fifth AAAI Conference on Human Computation and Crowdsourcing (HCOMP-17)},
  pages={11--20},
  year={2017},
  organization={AAAI Press}
}

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

推荐PyPI第三方库


热门话题
Java中是否有数字的默认类型   java调用一个类的方法来使用另一个类的实例   java HtmlUnit不适用于javascript处理   java需要帮助才能连接MongoDB   java如何从Maven中的src/main/resources复制文件?   java保存Int值(共享首选项)   从另一个类调用方法时,java Autowired组件出现空指针异常   java Spring JPA:PropertyAccessException 1:。。。MethodInvocationException:。'driverClassName'。。。org/postgresql/Driver:不支持的专业。次要版本52.0   java使用增强的JDO模型类在Eclipse中运行Junit测试   java如何使用eclipse IDE为junit创建可运行的jar文件   java如何在安卓中检测应用程序的启动和退出   java在其他线程可以访问静态映射时从数据库更新静态映射   java@Entitty和@EntityScan不起作用。我正在使用SpringBoot和jpa存储库,发生了很多次   java如何与google日历集成?