项目--------------使用BiLSTMCRF将病例文本中的诊断数据识别出来
打開.yml文件
想要打開.yml文件,文件名為“config.yml”
文件內(nèi)容為:
注:很多情況下,甚至可以直接將json后綴的文件改為yaml 后綴,使用yaml 語言直接解析。
yaml.load()用法:讀取yaml、yml文件
程序:
輸出結(jié)果:
{'embedding_size': 300, 'hidden_size': 128, 'model_path': 'models/', 'batch_size': 1, 'dropout': 0, 'tags': ['TREATMENT', 'BODY']}使用with open也可:
with open("config.yml",'r',encoding = "utf8") as fopen:config = yaml.load(fopen)print(config)輸出結(jié)果(和上面一樣):
{'embedding_size': 300, 'hidden_size': 128, 'model_path': 'models/', 'batch_size': 1, 'dropout': 0, 'tags': ['TREATMENT', 'BODY']}========================================================
yaml文件數(shù)據(jù)為鍵值對(duì)
(1)yaml文件中內(nèi)容為鍵值對(duì):
python解析yaml文件后獲取的數(shù)據(jù):
{'usr': 'my', 'psw': 123455, 's': ' abc\n'}2)yaml文件中內(nèi)容為“鍵值對(duì)’嵌套"鍵值對(duì)":
# yaml鍵值對(duì)嵌套:即python中字典嵌套字典 usr1:name: apsw: 123 usr2:name: bpsw: 456python解析yaml文件后獲取的數(shù)據(jù):
{'usr1': {'name': 'a', 'psw': 123}, 'usr2': {'name': 'b', 'psw': 456}}(3)yaml文件中“鍵值對(duì)”中嵌套“數(shù)組”
4.yaml文件數(shù)據(jù)為數(shù)組
(1)yaml文件中內(nèi)容為數(shù)組
python解析yaml文件后獲取的數(shù)據(jù):
['a', 'b', 5](2)yaml文件“數(shù)組”中嵌套“鍵值對(duì)”:
# yaml"數(shù)組"中嵌套"鍵值對(duì)"- usr1: aaa - psw1: 111usr2: bbbpsw2: 222python解析yaml文件后獲取的數(shù)據(jù):
[{'usr1': 'aaa'}, {'psw1': 111, 'usr2': 'bbb', 'psw2': 222}]load函數(shù)中的Loader=yaml.FullLoader
#讀取clinical的yaml文件 def read_clin_file(clinfile):with open(clinfile,'r') as CLIN:#備注:yaml版本5.1之后棄用,YAMLLoadWarning: calling yaml.load() without Loader=... is deprecatedclin_info = yaml.load(CLIN,Loader=yaml.FullLoader) #加上Loader=yaml.FullLoader 避免警告。name = clin_info['name']pro_id = clin_info['sample_id']return(name,pro_id)參考:yaml.load()函數(shù)
========================================================
print(f"*******") 用法:
name = 'a' num1 = 1 num1 = 3 print(f'my name is {name},my xuehao is {num1}') print(f'my name is {name*2},my xuehao is {num1+num2}')輸出結(jié)果:
my name is a,my xuehao is 1 my name is aa,my xuehao is 4去掉 f 的輸出結(jié)果:
my name is {name},my xuehao is {num1} my name is {name*2},my xuehao is {num1+num2}python的print字符串前面加f表示格式化字符串,加f后可以在字符串里面使用用花括號(hào)括起來的變量和表達(dá)式,如果字符串里面沒有表達(dá)式,那么前面加不加f輸出應(yīng)該都一樣.
Python3.6新增了一種f-字符串格式化
格式化的字符串文字前綴為’f’和接受的格式字符串相似str.format()。它們包含由花括號(hào)包圍的替換區(qū)域。替換字段是表達(dá)式,在運(yùn)行時(shí)進(jìn)行評(píng)估,然后使用format()協(xié)議進(jìn)行格式化。
formatted string literals, 以 f 開頭,包含的{}表達(dá)式在程序運(yùn)行時(shí)會(huì)被表達(dá)式的值代替。
參考:python打印的時(shí)候print(f"*******") 的括號(hào)里的 f’ ’ 是什么意思 ?這哥們兒的示例代碼寫的不錯(cuò)
========================================================
try/except/else/finally
python try語句相關(guān)(try/except/else/finally)
這老鐵寫的真好~,可是不夠全面應(yīng)該在看看這個(gè)Python中關(guān)于try…finally的一些疑問
這兩個(gè)人討論應(yīng)該注意的是return,
如果try子句正常運(yùn)行,且try字句中有return,此時(shí)不再運(yùn)行else語句,很正常啊,一個(gè)函數(shù)有renturn就結(jié)束了
如果還有finally的話,會(huì)先運(yùn)行finally里的程序,再返回try中的return
如果還有finally的話,會(huì)先運(yùn)行finally里的程序,如果finally中還有return,則不再返回try中的return
見代碼:
輸出結(jié)果:
1 6 7這個(gè)更加全面:Python3 錯(cuò)誤和異常(里面有句話寫的好:使用 else 子句比把所有的語句都放在 try 子句里面要好,這樣可以避免一些意想不到,而 except 又無法捕獲的異常。異常處理并不僅僅處理那些直接發(fā)生在 try 子句中的異常,而且還能處理子句中調(diào)用的函數(shù)(甚至間接調(diào)用的函數(shù))里拋出的異常。)
總結(jié)
以上是生活随笔為你收集整理的项目--------------使用BiLSTMCRF将病例文本中的诊断数据识别出来的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。