天天看点

哈工大自然语言处理ltp在windows10下的源代码安装时builtin_converters.cpp报错

安装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的语义角色标注模型。