Hi Alexander
The server still had a stupid/broken assumption that the MultiModel
phrase table would be first in the config. I updated the code that it is
now specified by name by the client. This call should work for you (with
the newest moses commit):
translate(['i have a dream'],server,[0.1,0.2], PhraseDictionaryMultiModel0)
On a related note: the phrase table format has recently changed (the
constant phrase penalty was removed from the table and is now a separate
feature function). This broke some assumptions in the MultiModel code,
and it has now been fixed. This may lead to different results if someone
wants to use the newest decoder, but has phrase tables with the phrase
penalty (5 features instead of 4). To restore the original results, they
need to modify their config file as follows:
add PhrasePenalty to the [feature] section and modify the weight section
as follows:
before:
[weight]
PhraseDictionaryMultiModel0= 0.00402447059454402 0.0685647475075862
0.294089113124688 0.0328320356515851 -0.0426081987467227
after:
[weight]
PhrasePenalty0= -0.0426081987467227
PhraseDictionaryMultiModel0= 0.00402447059454402 0.0685647475075862
0.294089113124688 0.0328320356515851 0
best wishes,
Rico
On 27.12.2013 12:02, Калинин Александр wrote:
Hello, Rico
I am using version 95a41c44facbfe49962b2b28234d0d0a08183032.
Previously there were not any messages, but after i rebooted the server it
started to respond with the following:
~/mosesdecoder/contrib/server$ sudo python ./client_multimodel.py
Traceback (most recent call last):
File ./client_multimodel.py, line 78, in module
translate(['i have a dream'],server,[0.1,0.9])
File ./client_multimodel.py, line 27, in translate
print server.translate(params)
File /usr/lib/python2.7/xmlrpclib.py, line 1224, in __call__
return self.__send(self.__name, args)
File /usr/lib/python2.7/xmlrpclib.py, line 1578, in __request
verbose=self.__verbose
File /usr/lib/python2.7/xmlrpclib.py, line 1264, in request
return self.single_request(host, handler, request_body, verbose)
File /usr/lib/python2.7/xmlrpclib.py, line 1297, in single_request
return self.parse_response(response)
File /usr/lib/python2.7/xmlrpclib.py, line 1473, in parse_response
return u.close()
File /usr/lib/python2.7/xmlrpclib.py, line 793, in close
raise Fault(**self._stack[0])
xmlrpclib.Fault: Fault -500: 'Unexpected error executing code for particular
method, detected by Xmlrpc-c method registry code. Method did not fail;
rather, it did not complete at all. boost::lock_error'
In case when no weights are given, everything is ok.
PS The OS is Ubuntu 12.04.2 LTS
Best regards!
25.12.2013, 19:07, Rico Sennrich rico.sennr...@gmx.ch:
I can't immediately see anything wrong with your config. Can you tell me
which version (git commit) of Moses you're using, and if there is an
error message on the side of the moses server?
It's conceivable that the new phrase table format (with the phrase
penalty being a separate feature function) doesn't yet work well with
the MultiModel phrase table; I'll do some tests early next year.
best wishes,
Rico
On 24.12.2013 09:46, Калинин Александр wrote:
Sorry, I provided you with wrong example:
When I launch function with string parameter ( translate(['i have a
dream'],server,'0.1,0.2') ), it returns an error like that:
Method did not fail; rather, it did not complete at all. Not array
type. See type() method'
But if i use list of floats ( translate(['i have a
dream'],server,[0.1,0.2]) ), it remains silent, reporting no error and
giving no translation as well.
When I interrupt the script, it returns such log:
Traceback (most recent call last):
File client_multimodel.py, line 78, in module
translate(['i have a dream'],server,[0.2,0.2])
File client_multimodel.py, line 27, in translate
print server.translate(params)
File /usr/lib/python2.7/xmlrpclib.py, line 1224, in __call__
return self.__send(self.__name, args)
File /usr/lib/python2.7/xmlrpclib.py, line 1578, in __request
verbose=self.__verbose
File /usr/lib/python2.7/xmlrpclib.py, line 1264, in request
return self.single_request(host, handler, request_body, verbose)
File /usr/lib/python2.7/xmlrpclib.py, line 1294, in single_request
response = h.getresponse(buffering=True)
File /usr/lib/python2.7/httplib.py, line 1030, in getresponse
response.begin()
File /usr/lib/python2.7/httplib.py, line 407, in begin
version, status, reason = self._read_status()
File /usr/lib/python2.7/httplib.py, line 365, in _read_status
line = self.fp.readline()
File /usr/lib/python2.7/socket.py, line 447, in readline
data = self._sock.recv(self._rbufsize)
Can you please advice upon where the problem could be?
Kind regards,
Alexander Kalinin.