亚洲熟女综合色一区二区三区,亚洲精品中文字幕无码蜜桃,亚洲va欧美va日韩va成人网,亚洲av无码国产一区二区三区,亚洲精品无码久久久久久久

「Python實(shí)戰(zhàn)項(xiàng)目」針對(duì)醫(yī)療數(shù)據(jù)進(jìn)行命名實(shí)體識(shí)別

一.什么是命名實(shí)體識(shí)別

二.基于NLTK的命名實(shí)體識(shí)別

三.基于Stanford的NER

四.【實(shí)戰(zhàn)案例】醫(yī)學(xué)糖尿病數(shù)據(jù)命名實(shí)體識(shí)別

一 、什么是命名實(shí)體識(shí)別?

命名實(shí)體識(shí)別(Named Entity Recognition,簡(jiǎn)稱NER),又稱作“專名識(shí)別”,是指識(shí)別文本中具有特定意義的實(shí)體,主要包括人名、地名、機(jī)構(gòu)名、專有名詞等。通常包括兩部分:(1)實(shí)體邊界識(shí)別;(2) 確定實(shí)體類別(人名、地名、機(jī)構(gòu)名或其他)。

命名實(shí)體識(shí)別通常是知識(shí)挖掘、信息抽取的第一步,被廣泛應(yīng)用在自然語(yǔ)言處理領(lǐng)域。接下來(lái),我們將介紹常用的兩種命名實(shí)體識(shí)別的方法。

二 、基于NLTK的命名實(shí)體識(shí)別:

NLTK:由賓夕法尼亞大學(xué)計(jì)算機(jī)和信息科學(xué)使用python語(yǔ)言實(shí)現(xiàn)的一種自然語(yǔ)言工具包,其收集的大量公開(kāi)數(shù)據(jù)集、模型上提供了全面、易用的接口,涵蓋了分詞、詞性標(biāo)注(Part-Of-Speech tag, POS-tag)、命名實(shí)體識(shí)別(Named Entity Recognition, NER)、句法分析(Syntactic Parse)等各項(xiàng)NLP領(lǐng)域的功能。

使用前需要先下載NLTK,下載地址為:http://pypi.python.org/pypi/nltk,安裝完成后,在python環(huán)境下輸入import nltk測(cè)試是否安裝成功,然后輸入nltk.download()下載nltk所需要的數(shù)據(jù)包,完成安裝。

Python代碼實(shí)現(xiàn)(注意文件的編碼格式為utf-8無(wú)BOM格式):

-- coding: utf-8 --

import sys

reload(sys)

sys.setdefaultencoding(‘utf8’) #讓cmd識(shí)別正確的編碼

import nltk

newfile = open(‘news.txt’)

text = newfile.read() #讀取文件

tokens = nltk.word_tokenize(text) #分詞

tagged = nltk.pos_tag(tokens) #詞性標(biāo)注

entities = nltk.chunk.ne_chunk(tagged) #命名實(shí)體識(shí)別

a1=str(entities) #將文件轉(zhuǎn)換為字符串

file_object = open(‘out.txt’, ‘w’)

file_object.write(a1) #寫(xiě)入到文件中

file_object.close( )

print entities

具體的方法可參考NLTK官網(wǎng)介紹:http://www.nltk.org/,輸出的結(jié)果為:

>>> entities = nltk.chunk.ne_chunk(tagged)

>>> entities

Tree(‘S’, [(‘At’, ‘IN’), (‘eight’, ‘CD’), (“o’clock”, ‘JJ’),

(‘on’, ‘IN’), (‘Thursday’, ‘NNP’), (‘morning’, ‘NN’),

Tree(‘PERSON’, [(‘Arthur’, ‘NNP’)]),

(‘did’, ‘VBD’), (“n’t”, ‘RB’), (‘feel’, ‘VB’),

(‘very’, ‘RB’), (‘good’, ‘JJ’), (‘.’, ‘.’)])

當(dāng)然為了方便查看,我們可以以樹(shù)結(jié)構(gòu)的形式把結(jié)果繪制出來(lái):

>>> from nltk.corpus import treebank

>>> t = treebank.parsed_sents(‘wsj_0001.mrg’)[0]

>>> t.draw()

三 、基于Stanford的NER:

Stanford Named Entity Recognizer (NER)是斯坦福大學(xué)自然語(yǔ)言研究小組發(fā)布的成果之一,主頁(yè)是:http://nlp.stanford.edu/software/CRF-NER.shtml。Stanford NER 是一個(gè)Java實(shí)現(xiàn)的命名實(shí)體識(shí)別(以下簡(jiǎn)稱NER))程序。NER將文本中的實(shí)體按類標(biāo)記出來(lái),例如人名,公司名,地區(qū),基因和蛋白質(zhì)的名字等。

NER基于一個(gè)訓(xùn)練而得的Model(模型可識(shí)別出 Time, Location, Organization, Person, Money, Percent, Date)七類屬性,其用于訓(xùn)練的數(shù)據(jù)即大量人工標(biāo)記好的文本,理論上用于訓(xùn)練的數(shù)據(jù)量越大,NER的識(shí)別效果就越好。

因?yàn)樵嫉腘ER是基于java實(shí)現(xiàn)的,所以在使用Python編程之前,要確保自己電腦上已經(jīng)安裝了jar1.8的環(huán)境(否則會(huì)報(bào)關(guān)于Socket的錯(cuò)誤)。

然后我們使用Pyner使用python語(yǔ)言實(shí)現(xiàn)命名實(shí)體識(shí)別。下載地址為:https://github.com/dat/pyner

安裝Pyner:解壓下載的Pyner,命令行中將工作目錄切換到Pyner文件夾下, 輸入命令 :python setup.py install 完成安裝.

接下來(lái),還需要下載StanfordNER工具包,下載地址為:http://nlp.stanford.edu/software/stanford-ner-2014-01-04.zip,然后在解壓后的目錄打開(kāi)cmd命令窗體,執(zhí)行,java -mx1000m -cp stanford-ner.jar edu.stanford.nlp.ie.NERServer -loadClassifier classifiers/english.muc.7class.distsim.crf.ser.gz -port 8080 -outputFormat inlineXML,直到結(jié)果為:Loading classifier from classifiers/english.muc.7class.distsim.crf.ser.gz … done [1.2 sec].

以上操作是因?yàn)樗固垢5拿麑?shí)體識(shí)別是基于java的socket寫(xiě)的,所以必要保證有一個(gè)窗題與我們執(zhí)行的命令通信。最后,我們終于可以使用python編程實(shí)現(xiàn)NER了:

import ner

import sys

import nltk

reload(sys)

sys.setdefaultencoding(‘utf8’)

newfile = open(‘news.txt’)

text = newfile.read()

tagger = ner.SocketNER(host=’localhost’, port=8080)#socket編程

result=tagger.get_entities(text) #stanford實(shí)現(xiàn)NER

a1=str(result)

file_object = open(‘outfile.txt’, ‘w’)

file_object.write(a1)

file_object.close( )

print result

今天的分享到這里就結(jié)束了,希望大家持續(xù)關(guān)注馬哥教育官網(wǎng),每天都會(huì)有大量?jī)?yōu)質(zhì)內(nèi)容與大家分享!聲明;文章轉(zhuǎn)載于網(wǎng)絡(luò),版權(quán)歸原作者所有,如有侵權(quán)請(qǐng)及時(shí)聯(lián)系刪除!

相關(guān)新聞

歷經(jīng)多年發(fā)展,已成為國(guó)內(nèi)好評(píng)如潮的Linux云計(jì)算運(yùn)維、SRE、Devops、網(wǎng)絡(luò)安全、云原生、Go、Python開(kāi)發(fā)專業(yè)人才培訓(xùn)機(jī)構(gòu)!