自然語言處理NLP學習筆記二:NLP實戰-開源工具tensorflow與jiagu使用


前言:

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM