66 LOGINIT(
"WordSenseDisambiguator");
69 set<uint64_t> senseMembersIds;
70 int formerNbSenses = -1;
81 cerr <<
"Loading senses from " << sensesFile << endl;
82 ifs.open(sensesFile.c_str(), std::ifstream::binary);
84 LERROR <<
"File " << sensesFile <<
" not read" ;
87 }
else if ( ifs.fail() ) {
89 LWARN <<
" Probably file "<< sensesFile <<
" does not exist" ;
91 }
else if ( ifs.bad() ) {
94 LERROR <<
"(reason unknown)" ;
99 while (getline(ifs, s)) {
101 boost::split(strs, s, boost::is_any_of(
";"));
102 vector<string> members;
103 boost::split(members, strs.at(1), boost::is_any_of(
"*"));
104 for (vector<string>::iterator it = members.begin(); it != members.end(); it++)
106 if (lemma2Index.find(*it)!=lemma2Index.end())
108 senseMembersIds.insert(lemma2Index.find(*it)->second);
114 for (set<WordSenseUnit>::iterator itDebug =
m_senses.begin();
118 LDEBUG <<
"inserted : " << itDebug->senseId();
124 sensesFile = sensesPath+
"/"+
m_lemma+
".bin";
125 LINFO <<
"Opening file : " << sensesFile;
126 ifd = open(sensesFile.c_str(), O_RDONLY);
128 LERROR <<
"an error occured while opening file " << sensesFile;
134 LERROR <<
"too many files open ";
140 LERROR <<
"unrecognized error : impossible to open : "<< sensesFile;
146 if (read(ifd, &nbTotalElems,
sizeof(nbTotalElems)) == -1) {
147 LERROR <<
"Call to function read(...) failed";
150 LDEBUG <<
"NbTotalElements : "<< nbTotalElems ;
151 for (
int i = 0; i < nbTotalElems; i++) {
152 if (formerNbSenses!=
nbSenses && i !=0) {
156 senseMembersIds.clear();
160 if (read(ifd, &
id,
sizeof(
id)) == -1) {
161 LERROR <<
"Call to function read(...) failed";
165 LERROR <<
"Call to function read(...) failed";
171 if (searcher!=NULL) {
172 senseMembersIds.insert(searcher->
sys2Owner(
id));
176 if (index2Lemma.find(searcher->
sys2Owner(
id)) != index2Lemma.end())
178 s+= index2Lemma.find(searcher->
sys2Owner(
id))->second +
"|" ;