【Python実戦事業】医療データに対するネーミングエンティティ識別

3476 ワード

一.ネーミングエンティティ識別とは
二.NLTKに基づくネーミングエンティティ識別
三.Stanfordに基づくNER
四.【実戦事例】医学糖尿病データ命名実体識別
一、ネーミングエンティティ識別とは何ですか.ネーミングエンティティ識別(Named Entity Recognition、略称NER)は、「専名識別」とも呼ばれ、テキストに特定の意味を持つエンティティを識別し、主に人名、地名、機構名、専名詞などを含む.通常は、(1)エンティティ境界識別;(2)エンティティカテゴリ(人名、地名、機関名またはその他)を特定します.ネーミングエンティティ識別は通常、知識マイニング、情報抽出の第一歩であり、自然言語処理分野に広く応用されている.次に、よく使用される2つのネーミングエンティティ識別方法について説明します.
二、NLTKに基づくネーミングエンティティ識別:NLTK:ペンシルベニア大学のコンピュータと情報科学がpython言語を用いて実現した自然言語ツールパッケージで、収集した大量の公開データセット、モデル上で全面的で使いやすいインターフェースを提供し、分詞、語性表示(Part-Of-speech tag,POS-tag)、ネーミングエンティティ識別(Named Entity Recognition,NER)、構文解析(Syntactic Parse)など各NLP領域の機能.使用前にNLTKをダウンロードする必要があり、インストールが完了したらpython環境でimport nltkを入力インストールが成功したかどうかをテストしてからnltkを入力.download()nltkに必要なパケットをダウンロードし、インストールを完了します.Pythonコード実装(ファイルの符号化フォーマットはutf-8 BOMなし):coding:utf-8--
import sys
reload(sys)
sys.setdefaultencoding(‘utf8’)    # cmd       
import nltk
newfile = open(‘news.txt’)
text = newfile.read()  #    
tokens = nltk.word_tokenize(text)  #  
tagged = nltk.pos_tag(tokens)  #    
entities = nltk.chunk.ne_chunk(tagged)  #      
a1=str(entities) #         
file_object = open(‘out.txt’, ‘w’)
file_object.write(a1)   #      
file_object.close( )
print entities

具体的な方法はNLTK公式サイトを参照してください.http://www.nltk.org/出力された結果は次のとおりです.
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’), (‘.’, ‘.’)])
もちろん、簡単に見るために、結果をツリー構造で描くことができます.
from nltk.corpus import treebank t = treebank.parsed_sents(‘wsj_0001.mrg’)[0] t.draw()
三、Stanfordに基づくNER:Stanford Name Entity Recognizer(NER)はスタンフォード大学自然言語研究チームが発表した成果の一つである.Stanford NERはJava実装のネーミングエンティティ識別(以下、NERと略す)プログラムである.NERは、人名、会社名、地域、遺伝子、タンパク質の名前など、テキストのエンティティをクラス別にマークします.NERは訓練に基づいて得られたModel(モデルはTime,Location,Organization,Person,Money,Percent,Dateを識別することができる)の7種類の属性に基づいて、訓練に用いるデータ、すなわち大量の人工的にマークされたテキストであり、理論的に訓練に用いるデータ量が大きいほど、NERの識別効果はより良い.オリジナルのNERはjavaに基づいて実現するので、Pythonを使用してプログラミングする前に、自分のパソコンにjar 1がインストールされていることを確認します.8の環境(そうでなければSocketに関するエラーが報告されます).次に、Pynerを使用してpython言語で名前付きエンティティ識別インストールPyner:ダウンロードしたPynerを解凍し、コマンドラインで作業ディレクトリをPynerフォルダに切り替え、コマンド:python setupを入力.py installインストール完了.次に、StanfordNERツールパッケージをダウンロードし、解凍したディレクトリでcmdコマンドフォームを開き、実行する必要があります.
java -mx1000m -cp stanford-ner.jar edu.stanford.nlp.ie.NERServer -loadClassifier classifiers/english.muc.7class.distsim.crf.ser.gz -port 8080 -outputFormat inlineXML

結果:Loading classifier from classifiers/english.muc.7class.distsim.crf.ser.gz … done [1.2 sec].
以上の操作は、スタンフォードのネーミングエンティティ識別がjavaのsocketに基づいて書かれているため、ウィンドウ問題が私たちが実行しているコマンドと通信することを保証する必要があります.最後に、pythonプログラミングを使用して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  NER
a1=str(result)
file_object = open(‘outfile.txt’, ‘w’)
file_object.write(a1)
file_object.close( )
print result

四.医学糖尿病データ命名実認識
カタログは以下の通りである:1-データとタスク紹介2-全体モデルアーキテクチャ3-データラベルコーパス処理4-入力サンプル充填補完5-トレーニングネットワークモデル6-医療データセット(糖尿病)エンティティ識別
もっと多くの文章と資料|下の文字をクリックして↓↓↓阿里雲K 8 s実戦マニュアル[阿里雲CDNピットガイド]CDN ECS運維ガイドDevOps実践マニュアルHadoopビッグデータ実戦マニュアルKnative雲原生応用開発ガイドOSS運維実戦マニュアル