前言:
NLP工具有人推薦使用spacy,有人推薦使用tensorflow。
tensorflow:中文譯作:張量(超過3維的叫張量)詳細資料參考:http://www.tensorfly.cn/
Jiagu:甲骨,語言處理工具,源碼參考:https://github.com/ownthink/Jiagu
jiagu的中文分詞是基於 深度學習的方法的。看來甲骨的分詞還是比較先進的。分詞一般有3種,字典的,統計學的,深度學習的。
另:需要一點python知識,自行復習。
1. 環境准備
經過各種折騰,總結如下:TensorFlow運行環境需要使用Python3.5或以上,建議Python3.7.3,tensorflow 至少1.6,建議1.14版本。OS上的C運行庫Glibc版本至少2.23以上。
如果你已經准備好這些環境了,跳過此步。
1) Windows:
Python開發工具:pycharm 社區版
anaconda 集成了python編譯工具的管理工具
安裝參考:https://blog.csdn.net/z2858539804/article/details/81407456
2)Linux:
安裝參考:https://www.cnblogs.com/for-dream/p/9648115.html
2.1下載3.7安裝包:
wget https://www.python.org/ftp/python/3.7.3/Python-3.7.3.tar.xz
2.2 解壓:
tar -xvJf Python-3.7.3.tar.xz
2.3 安裝依賴包:
yum install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gcc make
yum install libffi-devel -y (如不安裝,會報ModuleNotFoundError: No module named '_ctypes錯誤)
2.4 編譯安裝:
./configure prefix=/usr/local/python3
make && make install
2.5 檢查效果以及設置Python2,3共存::
[]# python2 -V
Python 2.7.5
[]# python -V
Python 2.7.5
[]# ln -s /usr/local/python3/bin/python3 /usr/bin/python
ln: 無法創建符號鏈接"/usr/bin/python": 文件已存在
[]# mv /usr/bin/python /usr/bin/python22
[]# ln -s /usr/local/python3/bin/python3 /usr/bin/python
[]# python -V
Python 3.7.3
[]# ll python*
lrwxrwxrwx. 1 root root 30 7月 29 09:46 python -> /usr/local/python3/bin/python3
lrwxrwxrwx. 1 root root 9 12月 13 2017 python2 -> python2.7
lrwxrwxrwx. 1 root root 7 12月 13 2017 python22 -> python2
-rwxr-xr-x. 1 root root 7136 8月 4 2017 python2.7
-rwxr-xr-x. 1 root root 1835 8月 4 2017 python2.7-config
lrwxrwxrwx. 1 root root 16 3月 8 2018 python2-config -> python2.7-config
lrwxrwxrwx. 1 root root 14 3月 8 2018 python-config -> python2-config
2. 安裝tensorflow/Jiagu
pip install tensorflow
或:
pip install --target=e:\tensorflow tensorflow
conda create -n tf --target=e:\tensorflow tensorflow
pip install jiagu
注:
1.linux下如果報找不到pip命令,則需要先配置ln -s /usr/local/python3/bin/pip3 /usr/bin/pip
2.linux下直接安裝Jiagu,會自動關聯安裝上tensorflow,因此可以直接執行Jiagu安
3. 默認國外源下載非常慢,使用國內的下載比較快
pip install tensorflow==1.14.0 -i "https://pypi.doubanio.com/simple/"
pip install jiagu -i "https://pypi.doubanio.com/simple/"
4. 卸載TensorFlow:pip uninstall tensorflow
3. 中文分詞demo代碼
功能:用戶輸入一段話,一鍵進行分詞,關鍵詞提取,文本摘要等。
vi nlpdemo.py
# -*- coding: UTF-8 -*- import jiagu #獲取用戶輸入 text=input("請輸入你要分詞的內容:") words = jiagu.seg(text) # 分詞,可以用model選擇分詞模式,不填則默認,mmseg則使用mmseg算法。 print("---------------------分詞結果----------------------") print(words) print("---------------------詞性標注----------------------") pos = jiagu.pos(words) # 詞性標注 print(pos) print("----------------------實體識別----------------------") ner = jiagu.ner(text) # 命名實體識別 print(ner) print("----------------------關鍵詞----------------------") keywords = jiagu.keywords(text, 5) # 關鍵詞 print(keywords) print("----------------------知識抽取----------------------") knowledge = jiagu.knowledge(text) # 知識抽取 print(knowledge) print("----------------------摘要----------------------") summarize = jiagu.summarize(text, 1) # 摘要 print(summarize) print("----------------------知識圖譜----------------------") knowledge = jiagu.knowledge(text) print(knowledge)
python nlpdemo.py
運行效果圖:
-----------------------------------------------------------------------------------
FAQ:
1. 問題1:linux環境下啟動報錯`CXXABI_1.3.8' not found :
ImportError: /usr/lib64/libstdc++.so.6: version `CXXABI_1.3.8' not found (required by /usr/local/python3/lib/python3.7/site-packages/tensorflow/python/_pywrap_tensorflow_internal.so)
Failed to load the native TensorFlow runtime.
解決辦法:
先檢查一下: strings /usr/lib64/libstdc++.so.6|grep CXXABI
應該要有1.3.8,如果沒有,則需要重新安裝編譯GLIBC_*新版本
注:從其它環境 copy一個libstdc++.so.6到指定環境下,可能這個報錯不存在了,但會繼續報錯: version `GLIBC_2.23' not found
2. 問題2:ImportError: /lib64/libm.so.6: version `GLIBC_2.23' not found
(required by /usr/local/python3/lib/python3.7/site-packages/tensorflow/python/_pywrap_tensorflow_internal.so)
解決辦法:
先檢查下:strings /usr/lib64/libstdc++.so.6 | grep GLIBC_
參考:https://blog.csdn.net/chenvast/article/details/79103288 重新安裝新版本的glibc
安裝步驟:
wget https://ftp.gnu.org/gnu/glibc/glibc-2.23.tar.gz
tar -zxvf glibc-2.23.tar.gz
mkdir build
cd build
../configure --prefix=/usr --disable-profile --enable-add-ons --with-headers=/usr/include --with-binutils=/usr/bin
make && make install
如果安裝過程遇到亂七八糟的錯,如下:
錯誤:編譯過程如果報 /lib64/libc.so.6: version `GLIBC_2.14' not found,則需要下載GLIBC_2.17以上重新安裝
參考:https://www.cnblogs.com/bonelee/p/8310389.html
如果這過程,編譯的庫失敗導致出現系統連接不上等lib庫無法使用問題,則需要回退
LD_PRELOAD=/lib64/libc-2.14.so rm /lib64/libc.so.6
LD_PRELOAD=/lib64/libc-2.14.so ln -s /lib64/libc-2.14.so /lib64/libc.so.6
如果還報錯:ls: relocation error: /usr/lib64/libc.so.6: symbol _dl_starting_up, version GLIBC_PRIVATE not defined in file ld-linux-x86-64.so.2 with link time reference
[root@ lib64]# ls
ls: relocation error: /usr/lib64/libc.so.6: symbol _dl_starting_up, version GLIBC_PRIVATE not defined in file ld-linux-x86-64.so.2 with link time reference
[root@ lib64]# sln /usr/lib64/ld-2.17.so /usr/lib64/ld-linux-x86-64.so.2
[root@ lib64]# ls
如果還報錯:/lib64/libm.so.6: invalid ELF header
[root@localhost lib64]# find . -name "libm-2.17.so"
find: error while loading shared libraries: /lib64/libm.so.6: invalid ELF header
則需要指向新編譯的so文件
lrwxrwxrwx. 1 root root 12 6月 5 2017 /usr/lib64/libm.so.6 -> libm-2.17.so
[root@localhost lib64]# ll /lib64/libm.so.6
lrwxrwxrwx. 1 root root 12 6月 5 2017 /lib64/libm.so.6 -> libm-2.17.so
[root@localhost lib64]# ll libm-2.*
-rwxr-xr-x. 1 root root 141 7月 29 11:48 libm-2.17.so
-rwxr-xr-x. 1 root root 141 7月 31 12:41 libm-2.17.so.bak
-rwxr-xr-x. 1 root root 3571192 7月 31 12:26 libm-2.23.so
[root@localhost lib64]# rm libm.so.6
rm:是否刪除符號鏈接 "libm.so.6"?y
[root@localhost lib64]# sln /lib64/libm-2.23.so /lib64/libm.so.6
然后重新安裝glibc-2.23版本即可。
檢查glibc版本結果:
[root@ build]# ldd --version
ldd (GNU libc) 2.23
問題3:執行py腳本時報錯: 非法指令(吐核)
解決辦法:
tensorflow版本太新而服務器太舊cpu識別不了導致。安裝tensorflow版本是1.14。
需要減低到tensorflow 1.5版本。 但向Jiagu開源人確認,至少得安裝tensorflow 1.6版本。
問題4: 運行tensorflow報錯SQLite 3.8.3 or later is required
如果報:django.core.exceptions.ImproperlyConfigured: SQLite 3.8.3 or later is required (found 3.7.17).
說明環境上默認的3.7.17版本太低,需要安裝新版
參考這個升級處理:https://www.jianshu.com/p/cdacf4b74646
---------------------------------------------------------------------------
linux上已安裝Python3.7,同時安裝Python3.6版本的步驟:
1.獲取安裝包安裝
2.ln -s /usr/local/python3.6/bin/python3.6 /usr/bin/python3.6
ln -s /usr/local/python3.6/bin/pip3 /usr/bin/pip3.6
3. 安裝 tensorflow 1.5
pip3.6 install tensorflow==1.5.0 -i "https://pypi.doubanio.com/simple/"
pip3.6 install jiagu
pip3.6 install django
4.安裝目錄在:/usr/local/python3.6/lib/python3.6/site-packages
cd /usr/local/python3.6/lib/python3.6/site-packages/django/bin
5.新建並啟動項目
python3.6 django-admin.py startproject jiaguweb
python3.6 manage.py runserver 127.0.0.1:8000
python3.6 manage.py runserver 183.232.65.76:8000