repaired lemmatizer
This commit is contained in:
parent
3c575cd596
commit
dea4308618
@ -1,6 +1,9 @@
|
||||
#include "socket_lemmatizer.hpp"
|
||||
|
||||
#include <time.h>
|
||||
|
||||
#include "config.hpp"
|
||||
|
||||
#include <boost/lexical_cast.hpp>
|
||||
|
||||
SocketLemmatizer::SocketLemmatizer(int port) throw(ConcordiaException) :
|
||||
@ -79,20 +82,38 @@ bool SocketLemmatizer::_send_data(std::string data)
|
||||
std::string SocketLemmatizer::_receive(int size=512)
|
||||
{
|
||||
char buffer[size];
|
||||
std::string reply;
|
||||
std::string reply = "";
|
||||
|
||||
//Receive a reply from the server
|
||||
if(recv(_sock , buffer , sizeof(buffer) , 0) < 0) {
|
||||
throw ConcordiaException("Receive failed");
|
||||
bool dataAvailable = true;
|
||||
while (dataAvailable) {
|
||||
int amountReceived = recv(_sock , buffer , sizeof(buffer) , 0);
|
||||
if (amountReceived < 0) {
|
||||
throw ConcordiaException("Lemmatizer: recv failed");
|
||||
} else if (amountReceived == 0) {
|
||||
dataAvailable = false;
|
||||
} else {
|
||||
buffer[amountReceived] = '\0';
|
||||
reply += buffer;
|
||||
}
|
||||
}
|
||||
reply = buffer;
|
||||
return reply;
|
||||
}
|
||||
|
||||
std::string SocketLemmatizer::lemmatizeSentence(std::string languageCode, std::string sentence) {
|
||||
for (int i=0;i<5;i++) {
|
||||
try {
|
||||
_connect();
|
||||
_send_data(languageCode+sentence+LEMMATIZER_DELIMITER);
|
||||
std::string reply = _receive(512);
|
||||
_disconnect();
|
||||
return reply.substr(0,reply.find(LEMMATIZER_DELIMITER));
|
||||
} catch (std::exception & e) {
|
||||
_logger.logString("Problem with lemmatization of the sentence", sentence);
|
||||
_logger.log("Waiting 2 seconds and retrying...");
|
||||
sleep(2);
|
||||
}
|
||||
}
|
||||
|
||||
throw ConcordiaException("Can not lemmatize sentence: "+sentence);
|
||||
}
|
||||
|
@ -9,6 +9,7 @@
|
||||
|
||||
#include <concordia/concordia_exception.hpp>
|
||||
|
||||
#include "logger.hpp"
|
||||
|
||||
class SocketLemmatizer {
|
||||
public:
|
||||
@ -34,6 +35,8 @@ private:
|
||||
int _sock;
|
||||
|
||||
struct sockaddr_in _server;
|
||||
|
||||
Logger _logger;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
Loading…
Reference in New Issue
Block a user