对我来说,算是个坑。还好,百度搜索到了这个问题。
LTP及pyltp
LTP提供了一系列中文自然语言处理工具,用户可以使用这些工具对于中文文本进行分词、词性标注、句法分析等等工作。
pyltp 是 LTP 的 Python 封装,提供了分词,词性标注,命名实体识别,依存句法分析,语义角色标注的功能。
github网址:https://github.com/HIT-SCIR/pyltp
在线文档:https://pyltp.readthedocs.io/zh_CN/latest/api.html
源码安装
源码安装或whl打包,都有一个尴尬的地方,也就是python 3.7及以上之后,不受官方原始包支持,得改代码。
pyltp的安装,不推荐通过pip install pyltp==0.2.1这种方式安装。这样的安装方式,报错了也不能解决。所以我们需要从pypi下载源码,然后通过修改源码的方式安装(python 3.6不用更改源码,可以直接pip install安装)。
1, 从pypi下载源码
https://pypi.org/project/pyltp/#files
2, 解压软件包,然后进入目录安装
pip install setup.py
3, 如果Python版本为3.7及以上,可能会报如下错误:
patch/libs/python/src/converter/builtin_converters.cpp:51:64:
error:
invalid conversion from ‘const void*’ to ‘void*’ [-fpermissive]
return PyUnicode_Check(obj) ? _PyUnicode_AsString(obj) : 0;
error: command 'gcc' failed with exit status 1
这种出错,是c++和c的差别,c允许包括const void* 转换为void指针类型,但c++不让,所以就gcc报错了。
找到报错文件patch/libs/python/src/converter/builtin_converters.cpp,把51行加一个(void)类型转换。
截屏2020-07-13上午10.13.25.png
Whl打包及安装
为了不重复修改源码,方便之后的安装,根据源码生成一个whl文件是很有意义的。生成whl文件步骤如下:
1,同样下载及解压pyltp。
2,运行如下命令检查文件的完整性。
python setup.py check
3,运行如下命令会在dist目录下生成whl文件(如果提示报错,则按前面提到的方式修改源码,重新运行)。
python setup.py sdist bdist_wheel || true