如果源词在目标句子中没有出现(或者反过来),AlignedSent 将完全无法显示:
AlignedSent
_repr_svg_
TypeError: list indices must be integers or slices, not NoneType
__str__
TypeError: %d format: a number is required, not NoneType
1szpjjfi1#
感谢您报告此问题。您能否提供一个示例和抛出错误的代码?
j2cgzkjk2#
从ibm1测试脚本开始:nltk/nltk/test/unit/translate/test_ibm1.py第48行 640d39a| | def test_prob_t_a_given_s(self): |可以看到,None 在源语言侧是有效的,而UNUSED 在目标语言侧是有效的。所以:
None
UNUSED
print(Alignment([(0, 0), (None, 1)])) >>> TypeError: unorderable types: int() > NoneType() print(Alignment([(0, 0), (1, 1), (2, 'UNUSED')])) >>> TypeError: %d format: a number is required, not str
但是也可以
print(Alignment([(0, 0), (1, None)])) >>> TypeError: %d format: a number is required, not NoneType
对于其他函数:
als = AlignedSent('i remember'.split(), 'ich errinere mich'.split(), Alignment([(0, 0), (1, 1), (None, 2)])) >>> TypeError: unorderable types: int() > NoneType() als = AlignedSent('ich errinere mich'.split(), 'i remember'.split(), Alignment([(0, 0), (1, 1), (2, None)])) als._repr_svg_() >>> TypeError: list indices must be integers or slices, not NoneType
2izufjch3#
这将需要对Alignment和AlignSent对象进行一些重大更改,以包括NoneMap。但是,如果我们查看pharaoh规范,就没有必要添加它们。所以当你有
Alignment
AlignSent
Alignment([(0, 0), (None, 1)])
时,你可以简单地做:
Alignment([(0, 0)])
非Map将是隐式的。这不是Pythonic,但这是在使用MGIZA++、Pharaoh和Moses工具集时的规范。
yb3bgrhw4#
是的,这些将会正确显示。
4条答案
按热度按时间1szpjjfi1#
感谢您报告此问题。
您能否提供一个示例和抛出错误的代码?
j2cgzkjk2#
从ibm1测试脚本开始:
nltk/nltk/test/unit/translate/test_ibm1.py
第48行 640d39a
| | def test_prob_t_a_given_s(self): |
可以看到,
None
在源语言侧是有效的,而UNUSED
在目标语言侧是有效的。所以:但是也可以
对于其他函数:
2izufjch3#
这将需要对
Alignment
和AlignSent
对象进行一些重大更改,以包括None
Map。但是,如果我们查看pharaoh规范,就没有必要添加它们。所以当你有
时,你可以简单地做:
非Map将是隐式的。这不是Pythonic,但这是在使用MGIZA++、Pharaoh和Moses工具集时的规范。
yb3bgrhw4#
是的,这些将会正确显示。