安装过程
1. crf安装并指定路径
这里下载
https://taku910.github.io/crfpp/#download
tar -xzf CRF++-0.58.tar.gz
cd CRF++-0.58
./configure
sudo make
sudo make install
cd python/
sudo python setup.py build
sudo python setup.py install
# 重新加载一下
sudo rm -f /etc/ld.so.cache
sudo ldconfig
在运行之后报错
在uwsgi中的日志显示是这样的
info 2021-09-06T11:18:11.229216+08:00 l - libcrfpp.so.0: cannot open shared object file: No such file or directory
实际上这个libcrfpp.so.0 是有的,在
/usr/local/lib/libcrfpp.so.0
这个是因为库只是在/usr/lib/
下寻找,所以创建个软连接就可以了
ln -s /usr/local/lib/libcrfpp.so.0 /usr/lib/
2.安装kenlm
在安装完crf之后,之前应该就ok了的,后来发现是kenlm需要安装,之前只是执行了sudo pip install kenlm
,这个实际上是不够的,还需要一些其他操作。需要在服务器上编译安装kenlm库。
2.1 在安装kenlm之前需要安装一些别的库
这里参考
1. 安装boost
yum install boost-devel boost-test boost
# 如果boost的依赖包没有安装完整,安装过程中可能会出现以下错误
# /usr/share/cmake/Modules/FindBoost.cmake:1138 (message): Unable to find the requested Boost libraries
2. 安装 zlib、bzip2和xz
yum install zlib bzip2 xz
3. 安装cmake和make
yum install cmake make
# 我这里安装的cmake 版本过低,还要升级才能编译kenlm
4. 升级cmake
sudo yum remove cmake -y
wget https://cmake.org/files/v3.6/cmake-3.6.2.tar.gz
tar -zxvf cmake-3.6.2.tar.gz
cd cmake-3.6.2
sudo ./bootstrap --prefix=/usr/local
sudo make
sudo make install
vi ~/.bash_profile
PATH=/usr/local/bin:$PATH:$HOME/bin
# 测试
cmake --version
# 显示
cmake version 3.6.2
which cmake
/usr/local/bin/cmake
2.2 安装
wget https://github.com/kpu/kenlm/archive/master.zip
unzip master.zip
cd kenlm
mkdir build
cd build
cmake ..
make -j 4
然后执行
sudo pip install kenlm
或者
pip install https://github.com/kpu/kenlm/archive/master.zip
这里不要用
python setup.py install
安装的目录好像有问题
最终要达到的效果是
sudo find / -name 'kenlm*'
/usr/lib64/python2.7/site-packages/kenlm.so
/usr/lib64/python2.7/site-packages/kenlm-0.0.0-py2.7.egg-info
有这两个库才是正常的,中间因为编译的权限问题,叠加了使用python setup.py install
来安装的,报错是
kenlm [Errno 13] Permission denied: '/root/.cache/Python-Eggs'
这个错报的很奇怪,后来通过重装kenlm解决了