命名實(shí)體識別(NER)實(shí)戰(zhàn)demo-LSTM+CRF
命名實(shí)體識別(Named Entity Recognition,簡稱NER),又稱作“專名識別”,是指識別文本中具有特定意義的實(shí)體,主要包括人名、地名、機(jī)構(gòu)名、專有名詞等。
該篇面向的更多是開始做命名實(shí)體識別的小白,文末推薦幾篇對NER介紹非常詳細(xì)的文章~

一 簡介
最開始接觸知識圖譜的時候可能更多理解的是概念,對實(shí)戰(zhàn)沒有很多認(rèn)識,之后慢慢有開始學(xué)習(xí)知識圖譜的構(gòu)建。認(rèn)識到其實(shí)命名實(shí)體識別本質(zhì)是多分類任務(wù)(定義好實(shí)體類別后,對每個字詞進(jìn)行分類),具體的分類基于標(biāo)簽體系(常見的標(biāo)簽體系有IO,BIO,BMEWO,BMWEO+),一般標(biāo)簽體系越復(fù)雜,準(zhǔn)確性越高。
做命名實(shí)體識別時,網(wǎng)上找了大量資源,但最初的學(xué)習(xí)效果并不好,看了很多內(nèi)容還是不知道真正該怎么做。直到b站看到一個視頻TensorFlow:BERT框架項(xiàng)目實(shí)戰(zhàn),其中一節(jié)內(nèi)容是醫(yī)學(xué)糖尿病數(shù)據(jù)命名實(shí)體識別,詳細(xì)介紹了code和模型,讓我收獲很多。具體資源可以在自然語言處理實(shí)戰(zhàn)項(xiàng)目(基于深度學(xué)習(xí))找到,唐宇迪老師講的真的很清晰透徹!之前很多東西都是跟著老師視頻學(xué)的(PS:b站有很多視頻,因?yàn)橹苯淤I課程的話會比較貴)。
于是乎找到NER的code后拿來開始跑,但其中碰到了許多問題,最終解決后想把整個過程記錄下來,感興趣的uu可以一起學(xué)習(xí)呀~
二 項(xiàng)目資源
來自唐宇迪老師的項(xiàng)目資源(https://github.com/tangyudi/Ai-Learn/tree/master/NLP%E9%80%9A%E7%94%A8%E6%A1%86%E6%9E%B6BERT)
可以直接在百度網(wǎng)盤下載
鏈接: https://pan.baidu.com/s/13SrM1V08eeVeFfgRbqWe_w 提取碼: uphm
三 項(xiàng)目文件
用的是tensorflow,主要是keras做

四 代碼運(yùn)行過程中的問題
環(huán)境配置
TensorFlow 1.14.0 + Keras 2.2.5 on Python 3.6.
我用的IDE是Pycharm,用的是anaconda下新建的環(huán)境(也可以用已有的編譯器,但是相關(guān)庫的版本對應(yīng)問題可能不太好解決,對于NER任務(wù)的話,主要是python、tensorflow、keras版本)
1、對于版本對應(yīng)問題,可以看這篇文章tensorflow + python + keras 版本對應(yīng)關(guān)系?http://t.zoukankan.com/feiquan-p-13437014.html
2、對于pycharm中配置anaconda,可以看這篇文章 Anaconda+pycharm+tensorflow安裝和環(huán)境配置(win10)https://www.pythonheidong.com/blog/article/324861/61c4cb825d4f127dd41c/
1)cmd輸入conda create --name ner python=3.6創(chuàng)建一個環(huán)境,ner是環(huán)境名,名字起什么都可以,這里選擇的是python3.6
2)輸入conda info --envs看我們現(xiàn)有的環(huán)境(ner是否創(chuàng)建成功)
3)輸入activate ner激活環(huán)境
4)輸入pip install命令安裝相應(yīng)版本的tensorflow和keras
5)pycharm中新建project項(xiàng)目,選擇interpreter時選anaconda下的python.exe
3、需要下載CRF相關(guān)庫,這里直接根據(jù) keras-contrib : Keras community contributions 進(jìn)行即可,命令“pip install git+https://www.github.com/keras-team/keras-contrib.git”
https://github.com/keras-team/keras-contrib
這里需要注意要提前下載git,直接pip install會報錯,需要用conda install git
五 報錯及解決方法
1、TypeErmor: Tensors in list passed to ‘values’ of ‘ConcatV2’ 0p have types [bool,float32] that don’t all match.

解決方法:將mask_zero=True刪除?,因?yàn)橹挥械谝淮芜\(yùn)行會報這個錯誤,之后再運(yùn)行就不會了,所以第一次可以刪除后再恢復(fù)
2、importEPror: Failed to impont 'pydot '. Please install 'pydot '. For example with 'pip install pydot?

解決方法:
conda install graphviz?
conda install pydotplus?
pip install pydot
3、AttributeError: ‘str’ object has no attribute 'deco

找到對應(yīng)文件,例如下圖中所示的就是saving.py文件

找到所有的decode相關(guān)代碼,將decode改為encode即可,例如:
將query = query.decode(errors=‘replace’)改成query = query.encode(errors=‘replace’)
