安装LTP的环境要求比较复杂,首先cmake,VS2010等等。今天要说的时编译过程中出现的一个坑,python setup.py install,编译到后面会报错。直接上错误代码:
patch\libs\python\src\converter\builtin_converters.cpp(51): error C2440: “return”: 无法从“const char *”转换为“void *”
patch\libs\python\src\converter\builtin_converters.cpp(51): note: 转换丢失限定符
patch\libs\python\src\converter\builtin_converters.cpp(443): warning C4244: “初始化”: 从“Py_ssize_t”转换到“int”,可能丢失数据
error: command 'D:\\Program Files (x86)\\Microsoft Visual Studio 14.0\\VC\\BIN\\x86_amd64\\cl.exe' failed with exit status 2
错误说的很清楚,就是类型转换出错。51行加 (void*),使用强制转换暴力解决即可:
// Python String.
#if PY_VERSION_HEX < 0x03000000
void* convert_to_cstring(PyObject* obj)
{
return PyString_Check(obj) ? PyString_AsString(obj) : 0;
}
#else
void* convert_to_cstring(PyObject* obj)
{
return PyUnicode_Check(obj) ? (void*) _PyUnicode_AsString(obj) : 0;
}
#endif
语义角色标准过程中如果出现以下错误:
labeller.load(srl_model_path) # 加载模型
RuntimeError: incompatible native format - size of long
那多半是你的模型库没有加载正确,win10下面的模型库需要的是pisrl_win.model。文档http://ltp.ai/download.html里面写的很明确。
当前版本:3.4.0
在你的平台上下载 LTP 源码或预编译安装包,然后即可马上进行开发。注:3.4.0 版本 SRL模型 pisrl.model 如在windows系统下不可用,可以到 此链接 下载支持windows的语义角色标注模型。