⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tool.cpp

📁 用于计算人工标注语料时
💻 CPP
字号:
// Tool.cpp: implementation of the Tool class.
//
//////////////////////////////////////////////////////////////////////
#pragma warning(disable:4786)

#include "stdafx.h"
#include "Kap.h"
#include "Tool.h"
#include <map>
#include <string>
#include <vector>
#include <utility>
#include <algorithm>
using namespace std;

#pragma warning(disable:4786)
#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif
#pragma warning(disable:4786)
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

Tool::Tool()
{

}

Tool::~Tool()
{

}

void Tool::Compute()
{
	int zhao1,zhao2,zhao3,zhao4;
	int Liu1, Liu2, Liu3,Liu4;
	zhao1=zhao2=zhao3=zhao4=0;
    Liu1=Liu2=Liu3=Liu4=0;
	CStdioFile fOut("nonRes.txt",CFile::modeCreate|CFile::modeReadWrite);
	CStdioFile fLi("li_labeled.txt",CFile::modeRead);
	CStdioFile fLiu("liu_labeled.txt",CFile::modeRead);
	CStdioFile fZhao("zhao_labeled.txt",CFile::modeRead);
	map<string,string> map_li;
	map<string,string> map_liu;
	map<string,string> map_zhao;
	CString strLine;
	while(fLi.ReadString(strLine))
	{
      int nIndex=strLine.Find(" ");
	  nIndex=strLine.Find(" ",nIndex+1);
	  string s_strKey=(LPCTSTR)strLine.Left(nIndex);
	  string s_strV=(LPCTSTR)strLine.Mid(nIndex+1,1);
	  map_li.insert(make_pair(s_strKey,s_strV));
	}
	while(fLiu.ReadString(strLine))
	{
		int nIndex=strLine.Find(" ");
		nIndex=strLine.Find(" ",nIndex+1);
		string s_strKey=(LPCTSTR)strLine.Left(nIndex);
		string s_strV=(LPCTSTR)strLine.Mid(nIndex+1,1);
		int nV=atoi(s_strV.c_str());
		switch(nV) {
		case 1:
		    Liu1++;
			break;
		case 2:
		    Liu2++;
			break;
		case 3:
			Liu3++;
			break;
		case 4:
			Liu4++;
			break;
		}
		map_liu.insert(make_pair(s_strKey,s_strV));
	}
	while(fZhao.ReadString(strLine))
	{
		int nIndex=strLine.Find(" ");
		nIndex=strLine.Find(" ",nIndex+1);
		string s_strKey=(LPCTSTR)strLine.Left(nIndex);
		string s_strV=(LPCTSTR)strLine.Mid(nIndex+1,1);
		int nV=atoi(s_strV.c_str());
		switch(nV) {
		case 1:
			zhao1++;
			break;
		case 2:
			zhao2++;
			break;
		case 3:
			zhao3++;
			break;
		case 4:
			zhao4++;
			break;
	}
		map_zhao.insert(make_pair(s_strKey,s_strV));
	}
	map<string,string>::iterator iter_li=map_li.begin();
    map<string,string>::iterator iter_liu=map_liu.begin();
	map<string,string>::iterator iter_zhao=map_zhao.begin();
	//mod
	vector<pair<string,string> > vecLi;
	vector<pair<string, string> > vecLiu;
	vector<pair<string, string> > vecZhao;
/*
	int nCount=0;
	for(;iter_li!=map_li.end();iter_li++,iter_liu++,iter_zhao++)
	{
		if((iter_li->first!=iter_zhao->first)||(iter_li->first!=iter_liu->first)||(iter_zhao->first!=iter_liu->first))
		    AfxMessageBox("bAD");
	    if((iter_li->second==iter_liu->second)&&(iter_liu->second==iter_zhao->second))
			nCount++;
	
	}
	
	CString strCount;
	strCount.Format("%d",nCount);
	AfxMessageBox(strCount);
	*/
	for(;iter_li!=map_li.end();iter_li++,iter_liu++,iter_zhao++)
	{
	    vecLi.push_back(*iter_li);
		vecLiu.push_back(*iter_liu);
		vecZhao.push_back(*iter_zhao);
	}
	
	sort(vecLi.begin(),vecLi.end());
	sort(vecLiu.begin(),vecLiu.end());
	sort(vecZhao.begin(),vecZhao.end());
	
	vector<pair<string,string> >::iterator iterLi=vecLi.begin();
    vector<pair<string,string> >::iterator iterLiu=vecLiu.begin();
	vector<pair<string,string> >::iterator iterZhao=vecZhao.begin();
	int nCount=0;
	for(;iterLi!=vecLi.end();iterLi++,iterLiu++,iterZhao++)
	{
		if((iterLi->first!=iterZhao->first)||(iterLi->first!=iterLiu->first)||(iterZhao->first!=iterLiu->first))
			AfxMessageBox("bAD");
		if((iterLiu->second==iterZhao->second))
			nCount++;
		
		else
		{
			CString strOut="";
			CString strTemp=(iterZhao->first).c_str();
			strOut=strOut+strTemp+":";
			CString strZhao="";
			CString strLiu="";
			strZhao=(iterZhao->second).c_str();
			strLiu=(iterLiu->second).c_str();
			strOut=strOut+"Zhao "+strZhao+"|";
			strOut=strOut+"Liu "+strLiu+"\n";
			fOut.WriteString(strOut);
		
		}
	
	}


	float Pe=((float)(zhao1+Liu1)/(2*300))*((float)(zhao1+Liu1)/(2*300))+((float)(zhao2+Liu2)/(2*300))*((float)(zhao2+Liu2)/(2*300))\
		+((float)(zhao3+Liu3)/(2*300))*((float)(zhao3+Liu3)/(2*300))+((float)(zhao4+Liu4)/(2*300))*((float)(zhao4+Liu4)/(2*300));
    float k=(((float)nCount/300)-Pe)/(1-Pe);
	CString strCount;
	strCount.Format("%d",nCount);
	CString strResultOut="Count:"+strCount;
	strCount.Format("%f",Pe);
	strResultOut=strResultOut+" Pe:"+strCount;
	strCount.Format("%f",k);
	strResultOut=strResultOut+" K:"+strCount;
	AfxMessageBox(strResultOut);

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -