Text_mining

Eleet31337

New member
26.03.2013
1
0
#1
Здравствуйте... Ребята, пожалуйста помогите объяснить данный пример .... как он работает ...... Спасибо...

#include <iostream>
#include <fstream>
#include <string> // getline()
#include <sstream> // istringstream


using namespace std;


// Declaration of grobal variables //
int nTotalLineIndex = 0;
int nTheNumberofPMID = 0;

// Lower case function //
void toLowerCaseSTD(std::string&s)
{
for (std::string::iterator i = s.begin(); i != s.end(); ++i)
*i = tolower(*i);
}

// Read file //
ifstream readData(string strFileName)
{
ifstream f_data(strFileName);
if (f_data.is_open()){ // f_filenaem.is_open() : check if a file stream was successful opening a file
cout <<"Reading data success!!"<< endl;
return f_data;
}
else{
cout<<"Reading data is failed!!"<<endl;
exit(0);
}
}
string readLine(ifstream &DataName)
{
string strLine_local;
getline(DataName,strLine_local); // getline(f_fileaname, stirng var) : extract characters from f_filename data by line
toLowerCaseSTD(strLine_local);
return strLine_local;
}

void chekingProcess(int nTheNumberofPMID)
{
if (nTheNumberofPMID % 1 == 0) cout << "The number of processed PMID : "<< nTheNumberofPMID<<endl;
}


string PMIDExtractor(string strLine, string strPreviousPMID)
{
int nPMIDChecker = strLine.find("pmid");
string strLocalPMID;
if (nPMIDChecker == 0){
strLocalPMID = strLine;
nTheNumberofPMID++;
chekingProcess(nTheNumberofPMID);
cout<<strLocalPMID<<endl;
}
else strLocalPMID = strPreviousPMID;
return strLocalPMID;
}
string manipulateGeneName(string strGeneToken)
{
strGeneToken.insert(strGeneToken.begin(),1,' ');
strGeneToken.insert(strGeneToken.end(),1,' ');
return strGeneToken;
}

int geneToeknMatching(istringstream &issGeneName, string strGeneToken, int nStandardGeneCheker,string strPubMedLine,ofstream &f_Results,string strPMID)
{
string strStandardGeneID;
while (getline(issGeneName,strGeneToken,'\t')){

// Searching standard gene //
nStandardGeneCheker++;
if (nStandardGeneCheker == 1) strStandardGeneID = strGeneToken;

strGeneToken = manipulateGeneName(strGeneToken); // manipulating gene name for exact matching. ex) 'pa010' ==> ' pa010 ' //

// Matching genes in PubMed sentence //
if (int(strPubMedLine.find(strGeneToken)) != -1 && (strGeneToken.length() > 5)){ // string.find("word") : return position of first matched word, if there exists matching event to word user definded in string, otherwise return -1

int nCompareState = 0;
string strSentenceToken;

// Sentence tokenization //
istringstream issPubMedLine(strPubMedLine);

if (f_Results.is_open()){

f_Results << strStandardGeneID<<'\t'<<strPMID<<'\n';

}
else cout<<"Unable to open result file!!"<<endl;
}
}
return 0;
}

int geneMatching(ifstream &f_GeneDic,string strPubMedLine,ofstream &f_Results,string strPMID)
{
string strGeneDictionaryLine;

while (f_GeneDic.good()){

string strStandardGeneID;
string strGeneToken;
int nStandardGeneCheker = 0;

// Reading gene dictionary by line //
strGeneDictionaryLine = readLine(f_GeneDic);

// Dictionary tokenization //
istringstream issGeneName(strGeneDictionaryLine);
geneToeknMatching(issGeneName,strGeneToken,nStandardGeneCheker,strPubMedLine,f_R
esults,strPMID);

if (f_GeneDic.eof() == 1){
f_GeneDic.clear();
f_GeneDic.seekg(0,ios::beg);
break;
}
}
return 0;
}

int readAbstract(string strLiteraturefile,string strGeneDicfile,string strOutputfile)
{
// Read dataset //
string strFileName_PubMedData = strLiteraturefile;
string strFileName_GeneDictionary = strGeneDicfile;

ifstream f_PubMedData = readData(strFileName_PubMedData);
ifstream f_GeneDic = readData(strFileName_GeneDictionary);

// Open result data //
ofstream f_Results (strOutputfile); // ofstream : stream class to write on files
f_Results<<"GeneName\tPMID\n" ;

string strPubMedLine;
string strPMID;
while (f_PubMedData.good()){ // f_filenaem.good() : check whether state of stream has error or not

// Reading PubMed data by line //
strPubMedLine = readLine(f_PubMedData);
nTotalLineIndex++;

// PMID Extraction //
strPMID = PMIDExtractor(strPubMedLine,strPMID);
geneMatching(f_GeneDic,strPubMedLine,f_Results,strPMID);

}

f_PubMedData.close();
f_GeneDic.close();
f_Results.close();
return 0;
}


int main ()
{
// Read dataset //
string strLiteraturefile = "Alzheimer_disease_Literature_test.txt";
string strGeneDicfile = "gene_disease_dictionary_test.txt";
string strOutputfile = "Alzheimer_table_test.txt";

readAbstract(strLiteraturefile,strGeneDicfile,strOutputfile);
}
 

Вложения

16.10.2013
4
0
#2
Здравствуйте... Ребята, пожалуйста помогите объяснить данный пример .... как он работает ...... Спасибо...
Никто не будет делать работу за тебя. Ты его сам объясни, а тебе его помогут подредактировать.