版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
聊天機(jī)器人模型的構(gòu)建案例分析目錄TOC\o"1-3"\h\u18232聊天機(jī)器人模型的構(gòu)建案例分析 1324811.1模型設(shè)計(jì) 1181871.1.1環(huán)境搭建 15861.1.2數(shù)據(jù)來源 2127431.1.3Word2index 2272161.1.4生成batch的訓(xùn)練數(shù)據(jù) 4275601.2模型構(gòu)建和運(yùn)行結(jié)果 699761.2.1模型構(gòu)建 6139331.2.2使用訓(xùn)練模型預(yù)測結(jié)果 1414241.2.3評估訓(xùn)練模型的結(jié)果 1468021.3可視化前端 1590851.3.1機(jī)器人架構(gòu) 158541.3.2web分析與設(shè)計(jì) 15155321.3.3工作流程 161.1模型設(shè)計(jì)1.1.1環(huán)境搭建文章使用了TensorFlow框架。TensorFlow是一個(gè)高性能計(jì)算開源庫。TF是一個(gè)多層結(jié)構(gòu),可以在各種服務(wù)器、PC終端和網(wǎng)站上實(shí)現(xiàn),支持可選的CPU、TPU、GPU數(shù)值測量,各種領(lǐng)域的科學(xué)分析,谷歌內(nèi)部產(chǎn)品創(chuàng)建。TensorFlow是一個(gè)基于數(shù)據(jù)流圖的處理架構(gòu)[29],節(jié)點(diǎn)表示數(shù)值計(jì)算,邊表示運(yùn)行節(jié)點(diǎn)之間的數(shù)據(jù)交換。TensorFlow有兩個(gè)字面含義:張量指的是節(jié)點(diǎn)之間傳輸?shù)臄?shù)據(jù),通常是多維矩陣或一維數(shù)組。TensorFlow可以更直觀地表示為數(shù)據(jù)流圖。通過"節(jié)點(diǎn)"和"線"的定向圖繪制數(shù)據(jù)流圖。在圖表中,“節(jié)點(diǎn)”描述了正在進(jìn)行的數(shù)學(xué)計(jì)算,以及數(shù)據(jù)輸入、輸出或常量變量讀寫端點(diǎn)的開始。“節(jié)點(diǎn)”之間的數(shù)據(jù)交互用線條表示。段可以中繼多維數(shù)據(jù)數(shù)組,數(shù)組的大小被動(dòng)態(tài)修改(張量)。這個(gè)圖被一個(gè)張量包圍著。因此,該工具被稱為"Tensorflow"[29]。當(dāng)輸入端全部張量準(zhǔn)備就緒時(shí),將“節(jié)點(diǎn)”分配到各個(gè)計(jì)算設(shè)備,以完成異步并行運(yùn)算。由于筆者的設(shè)備GPU性能較弱,在訓(xùn)練模型時(shí)使用的是google的colab。但運(yùn)行機(jī)器人模型并開展預(yù)測工作是在筆者的設(shè)備上表5-1Colab的實(shí)驗(yàn)環(huán)境軟件環(huán)境框架平臺Tensorflow操作系統(tǒng)Linux開發(fā)語言Python3硬件顯存16GGPUTeslaT4表5-2筆者的設(shè)備運(yùn)行環(huán)境軟件環(huán)境框架平臺Tensorflow操作系統(tǒng)Windows10開發(fā)語言Python3硬件顯存4GGPUGTX960M1.1.2數(shù)據(jù)來源本文構(gòu)建的聊天機(jī)器人模型需要較多的中文問答語料,筆者決定使用來自于招商銀行金融行業(yè)問答數(shù)據(jù)的語料包,語料包中包含了人們?nèi)粘I钪械姐y行或者辦理金融業(yè)務(wù)時(shí)碰到的各類問題以及回答,更加切合本文的聊天機(jī)器人模型。圖5-1為部分語料問答實(shí)例圖5-1部分語料問答實(shí)例1.1.3Word2index(1)詞表和索引生成在對語料庫進(jìn)行預(yù)處理之后,我們需要考慮如何將分詞后的詞和短語表達(dá)成計(jì)算機(jī)可計(jì)算的類型。顯然,如果要計(jì)算,我們至少應(yīng)該把中文分詞串轉(zhuǎn)換成數(shù)字,而數(shù)字在數(shù)學(xué)中應(yīng)該是向量。因此,我們需要將每個(gè)單詞數(shù)字化,在這里我們選擇建立索引的方式并建立索引數(shù)據(jù)庫每個(gè)單詞在詞匯表中都有唯一的編號,整個(gè)詞匯表由0到n的值表示,VOCAB_SIZE定義此戶表的大小。還需要定義還有問答句子長度范圍。此外,還必須指定UNK、SOS、EOS和PAD的符號。UNK是未知單詞的意思。例如,如果超出了VOCAB_SIZE的范圍,您將認(rèn)為它是一個(gè)未知單詞。解碼器開始處理的符號用GO來表示。EOS為回答結(jié)束符PAD用于填充,因?yàn)樗袉柎痍?duì)必須放入同一個(gè)seq2seq模型,由于輸出輸出的問題與答案可能不一樣長,所以短問題或答案需要用PAD填充。經(jīng)過上面的操作我們還要將語料庫所有單詞的頻率都統(tǒng)計(jì)起來,接下來是前面描述的VOCAB_SIZE(按頻率排序)。此外,我們還必須得到該詞的索引,以及該詞對應(yīng)的索引值的索引。函數(shù)相關(guān)代碼如圖5-2所示:
圖5-2_fit_word_函數(shù)相關(guān)代碼建立索引的效果如下圖5-3:圖5-3索引效果在得到索引文件w2i.pkl文件。(2)索引過程通常,用于索引數(shù)據(jù)庫是根據(jù)詞匯表提供的信息建立的。信息檢索技術(shù)是在對原始文本進(jìn)行預(yù)處理后,建立索引表進(jìn)行檢索。建立文檔,記錄下來的文檔的特征再進(jìn)行信息索引,通常采用表格倒排的形式。在用戶活動(dòng)期間,系統(tǒng)根據(jù)系統(tǒng)提取的關(guān)鍵字從索引表中檢索并返回所有符合條件的段落。檢索速度非???,因?yàn)樗饕龥]有退出,而是保存在內(nèi)存中。在一個(gè)段落被確定之后,語義解釋和處理將開始。建立信息索引后,檢索過程包括按權(quán)重排序,然后依次輸出每個(gè)條目。分段權(quán)重的計(jì)算公式如下:第一,設(shè)置問題處理模塊的輸出關(guān)鍵字部分(包括其擴(kuò)展名)的權(quán)重。第二,是各關(guān)鍵詞分配權(quán)重;最終,檢索到的段落的權(quán)重將被排序,答案將按此順序輸出出來。1.1.4生成batch的訓(xùn)練數(shù)據(jù)預(yù)先設(shè)定訓(xùn)練數(shù)據(jù)的大小,隨機(jī)選擇訓(xùn)練語料。將語料庫問答中的單詞轉(zhuǎn)換為索引。為了消除不同的長度差,用PAD填充問答組,直到長度相同。最后,將每個(gè)對話框索引轉(zhuǎn)
換為一個(gè)可以方便存儲的數(shù)組返回值。函數(shù)具體代碼如圖5-4所示:圖5-4next_batch函數(shù)具體代碼1.2模型構(gòu)建和運(yùn)行結(jié)果目前關(guān)于聊天機(jī)器人的框架已經(jīng)相當(dāng)成熟,并不需要程序員們再從底層開始搭建框架,例如圖靈API,可直接調(diào)用。但是它設(shè)計(jì)的語料庫太龐大,而本系統(tǒng)專注于金融領(lǐng)域的問答。本文建立了seq2seq模型,但不是傳統(tǒng)單一的seq2seq模型。長短時(shí)記憶神經(jīng)單元能夠很好地解決傳統(tǒng)seq2seq模型無法捕獲雙向語義過長依賴的問題,注意力機(jī)制能夠使seq2seq模型獲得較為完整的長文本序列信息,避免了序列被遮蓋,從而更好地理解語義,同時(shí)集束搜索算法避免了無意義的回復(fù)。1.2.1模型構(gòu)建構(gòu)建seq2seq模型我們大體上按照如下方式進(jìn)行:初始化訓(xùn)練,預(yù)測所需要的變量構(gòu)建編碼器(encoder)seq2seq:用seq2seq模型把Encoder和decoder聯(lián)系起來構(gòu)建解碼器(decoder)構(gòu)建解碼器的神經(jīng)元->構(gòu)建完整解碼器構(gòu)建優(yōu)化器(optimizer)保存模型(save)整體框架:1.初始化訓(xùn)練,預(yù)測所需要的變量2.構(gòu)建編碼器(encoder)構(gòu)建神經(jīng)元->構(gòu)建編碼器的神經(jīng)元->構(gòu)建完整編碼器3.構(gòu)建解碼器(decoder)構(gòu)建解碼器的神經(jīng)元->構(gòu)建完整解碼器4.構(gòu)建優(yōu)化器(optimizer)。1.保存。
圖5-5整體框架圖5-6SeqToSeq框架流程圖初始化初始化的關(guān)鍵目的是設(shè)置batch_size,即分詞后整個(gè)語料庫的大小。由于問答使用的語料庫相同,所以大小相同。batch_size可以根據(jù)為顯存的數(shù)量設(shè)置。然后選擇LSTM。在海量數(shù)據(jù)集的情況下,LSTM在表達(dá)式方面表現(xiàn)最好。RNN單元細(xì)胞(neuralunit)中隱藏神經(jīng)元的數(shù)量稱為隱藏單元(hiddenunits),RNN層的數(shù)量稱為深度。這種效果與神經(jīng)元的數(shù)量、層次和訓(xùn)練時(shí)間成正比。初始化主要是設(shè)置batch_size,其實(shí)就是分完字之后整個(gè)語料庫的大小,因?yàn)閱柎鸬氖褂玫恼Z料是相同,所以他們的大小是一樣的。batch_size可以根據(jù)你的GPU(圖形處理器)顯存來設(shè)置大小。接下來循環(huán)神經(jīng)網(wǎng)絡(luò)單元我們選的是長短時(shí)記憶網(wǎng)絡(luò),在大數(shù)據(jù)集情況下,LSTM表達(dá)性能更好。hidden_units(隱藏單元)為RNN單元cell(神經(jīng)單元)中隱藏神經(jīng)元的數(shù)量,depth為RNN層數(shù),,效果與神經(jīng)元、層數(shù)、訓(xùn)練時(shí)間成正相關(guān)。圖5-7初始化e接下來要定義inputs和targets的tf占位符,在此使用了tf的placeholder函數(shù),給編碼器-解碼器的輸入輸出以及輸出輸出的長度占位。圖5-8TF占位符初始化(2)構(gòu)建Encoder循環(huán)神經(jīng)網(wǎng)絡(luò)里的神經(jīng)單元cell是用tf的LSTMCell構(gòu)建來構(gòu)建的,n_hidden神經(jīng)元個(gè)數(shù),在深度網(wǎng)絡(luò)中有可能發(fā)生梯度彌散/爆炸,我們將使用ResidualWrapper殘差網(wǎng)絡(luò)用來解決。在完成構(gòu)建好的單個(gè)LSTM實(shí)例后,實(shí)現(xiàn)多層RNN只需要將單個(gè)LSTM實(shí)例傳入到MultiRNNCell類里就完成了。圖5-9:構(gòu)建Encoder圖5-9構(gòu)建Encoder首先用tf.nn.embedding_lookup來對輸入的batch做一個(gè)詞嵌入當(dāng)做encoder的輸入。其中它的shape為[batch_size,time_step,embedding_size],訓(xùn)練模型中每一句話的長度為time_step,詞向量維度是embedding_size。bidirectional_dynamic_rnn是雙向動(dòng)態(tài)RNN。在初始階段時(shí),encoder的神經(jīng)單元傳入已經(jīng)預(yù)處理好的語料數(shù)據(jù)self.encoder_embeddings,self.encoder_inputs等等。序列前面的元素和序列后面的元素都會對雙向RNN模型產(chǎn)生影響,RNN模型在學(xué)習(xí)使用序列模型時(shí)主要依賴上述知識。這就是為何叫做雙向。比如說,序列中存在一個(gè)缺失值,想要預(yù)測這個(gè)缺失值,我們要考慮該缺失值上下文的元素。簡單點(diǎn)來將兩個(gè)RNN堆疊在一起,一個(gè)從后計(jì)算序列的output和state,一個(gè)從前計(jì)算序列的output和state,在賦值時(shí)同時(shí)給前向RNN:encoder_cell和后向RNN賦值:encoder_cell_bw。兩個(gè)RNNs的hidden_state直接影響了最終的輸出的計(jì)算。值得注意的是:后向和前向隱含層之間毫無關(guān)系,前向和后向分開獨(dú)立計(jì)算,將各個(gè)維度所生成的output結(jié)果在各個(gè)維度進(jìn)行拼接,得到了拼接結(jié)果后,在最后輸出的時(shí)候把前向和后向的的狀態(tài)向量encoder_final_state結(jié)合起來,這保證了展開圖是非循環(huán)的。(3)Decoder編碼器將所有輸入序列編碼為固定長度的語義向量C,并以編解碼器格式對輸出進(jìn)行解碼。因此,語義變量C包含原始列表中的所有內(nèi)容。但是,當(dāng)c的長度有限時(shí),其長度成為制約模型性能的瓶頸。下圖是帶有Attention機(jī)制的Decoder:
圖5-10有Attention機(jī)制的Decoder以LSTM為例,首先確定一個(gè)LSTM層,然后指定另一個(gè)注意機(jī)制的實(shí)例來實(shí)現(xiàn)注意機(jī)制。(比如BahdanauAttention),最后把LSTMcell和注意力機(jī)制實(shí)例都傳給AttentionWrapper,返回封裝后的LSTM。在設(shè)置decoder_cell時(shí),筆者設(shè)置了跟encoder_cell部分相同的參數(shù):采用LSTM并且隱藏神經(jīng)元個(gè)數(shù)和depth采用相同的數(shù)據(jù)。但是在神經(jīng)元的構(gòu)建中,筆者添加了注意力機(jī)制(attention機(jī)制),我們采用BahdanauAttention。在解碼器中,從第一個(gè)來自encoder的輸出開始,是會將輸入和上一步計(jì)算得到的attention拼接,送入decoder_cell(解碼器神經(jīng)元),一步一步拼接計(jì)算,依次類推,最后softmax求和。在進(jìn)行decoder時(shí)訓(xùn)練階段的執(zhí)行過程是和預(yù)測階段是有些許不同的:訓(xùn)練:seq2seq.TrainingHelper-->seq2seq.BasicDecoder-->seq2seq.dynamic_decode-->seq2seq.sequence_loss預(yù)測:BeamSearchDecoder-->seq2seq.dynamic_decode在完整編碼器的工作流程為:先給decoder_cell,decoder_initial_state賦值,當(dāng)模型的模式為訓(xùn)練模式時(shí),借助TrainingHelper與BasicDecoder,TrainingHelper用于train階段,next_inputs方法一樣也接收sample_ids與outputs,但是只是從最開始時(shí)的inputs返回下一時(shí)刻的input。BasicDecoder的作用就是定義一個(gè)封裝了decoder應(yīng)該有的功能的實(shí)例,不同模式,能夠幫助decoder實(shí)現(xiàn)不同的功能,當(dāng)在訓(xùn)練模型的時(shí)候,不把輸出重新作為輸入,而在預(yù)測的時(shí)候,將輸出可以直接接到輸入。接著下來tf.seq2seq.dynamic_decode接收一個(gè)Decoder類,然后依據(jù)Encoder進(jìn)行解碼,解碼完成后,就實(shí)現(xiàn)序列的生成(映射)。這個(gè)函數(shù)主要的一個(gè)思想是一步一步地調(diào)用Decoder的step函數(shù)(該函數(shù)接收當(dāng)前的輸入和隱層狀態(tài)會生成下一個(gè)詞),實(shí)現(xiàn)最后的一句話的生成。最后返回一個(gè)Loss對象。然而當(dāng)模式變成預(yù)測模式時(shí),同樣給decoder賦值,接著調(diào)用tf.contrib.seq2seq.dynamic_decode,它的主要作用是接收一個(gè)Decoder類,然后依據(jù)Encoder進(jìn)行解碼,實(shí)現(xiàn)序列的生成(映射)。其中,這個(gè)函數(shù)主要的一個(gè)思想是一步一步地調(diào)用Decoder的step函數(shù)(該函數(shù)接收當(dāng)前的輸入和隱層狀態(tài)會生成下一個(gè)詞),實(shí)現(xiàn)最后的一句話的生成。BeamSearch算法能夠在性能于消耗之間做到平衡,為的就是在序列中尋找出較優(yōu)的路徑,它是一種折中手段,當(dāng)搜索的空間并不富裕時(shí),從中找出其最優(yōu)解,得出最優(yōu)解,這個(gè)解就很大程度上接近于整個(gè)搜索空間中的最優(yōu)解。,只有先處理了encoder的output、state、length,才能使用beam_search的話,方法就是使用tile_batch將batch_size變成batch_size*beam_size。beamsearch的方法只用在預(yù)測的情況,因?yàn)樵谟?xùn)練過程中,每一個(gè)問答對都是有對應(yīng)的答案,beamsearch就不需要再使用了。(4)優(yōu)化器編碼器——解碼器構(gòu)建完之后就是設(shè)置(優(yōu)化器)。優(yōu)化器筆者使用的是AdamOptimizer。在訓(xùn)練模型時(shí),隨著訓(xùn)練的進(jìn)行,通常會推薦逐漸減小學(xué)習(xí)率,可以對訓(xùn)練有正面效果。筆者采用polynomial_decay多項(xiàng)式衰減的方式來更新Learningrate。如果沒有梯度修剪這個(gè)方法,隨著訓(xùn)練的進(jìn)行,容易造成梯度爆炸,這里筆者加上一個(gè)clip_by_global_norm用于梯度裁剪。由于鏈?zhǔn)椒▌t的導(dǎo)數(shù),在梯度剪枝之前很有可能誘導(dǎo)梯度的指數(shù)衰減。你可以通過修剪梯度變來防止?jié)u變梯度。最后,確保梯度參數(shù)集是最新的。圖5-11設(shè)置優(yōu)化器(5)永久保存模型到本地1.2.2使用訓(xùn)練模型預(yù)測結(jié)果語料庫中的兩個(gè)標(biāo)記用于訓(xùn)練模型,一個(gè)是“[Q]”作為Encoder的輸入,另一個(gè)是“[A]”作為Decoder的輸入。但是實(shí)際上,并沒有"[A]"標(biāo)簽,因此此時(shí),Encoder的輸出是Decoder的輸入。圖表5-12是seq2seq模型的預(yù)測結(jié)果。圖5-12模型預(yù)測結(jié)果在訓(xùn)練的過程中,模型的學(xué)習(xí)率是隨著訓(xùn)練的過程維持不變的,經(jīng)過比對,進(jìn)行了100輪與進(jìn)行了200輪的訓(xùn)練模型出現(xiàn)的預(yù)測結(jié)果卻別并不大。預(yù)測結(jié)果基本能解決用戶提出的問題。1.2.3評估訓(xùn)練模型的結(jié)果首先評價(jià)Chatbot的很多指標(biāo)都是從MT(BLEUscore)或者summarization(ROUGE,基于BLEU的metric)中借鑒過來的,這些intrinsicmetric容易快速對模型進(jìn)行評價(jià),雖然不太適合聊天機(jī)器人,但也沒有什么大坑,因此被廣泛地貼到paper里湊字?jǐn)?shù),實(shí)際上大家都懂得,主流的評價(jià)方式之一還是需要肉眼觀察。筆者認(rèn)為只要是符合實(shí)際的回答都可以算優(yōu)秀回答。簡單評估一下訓(xùn)練模型,其實(shí)的30個(gè)左右的epoch里,loss的下降率還是非常的可觀,從4.5開始的loss,隨著訓(xùn)練的進(jìn)行,一路降到了0.5左右,在剩下的大約六十個(gè)epoch里,loss的值開始在0.5左右掙扎,數(shù)據(jù)下降得越來越少,從開始的一個(gè)epoch下降單位1的loss,到最后訓(xùn)練五十個(gè)epoch才能下降單位0.1個(gè)loss,在該網(wǎng)絡(luò)計(jì)算量下,在該數(shù)據(jù)集上幾乎達(dá)到優(yōu)化極限。在最后學(xué)習(xí)率也是從設(shè)定的最大值0.001逐漸下降到了0.00087左右。下圖5-13為loss的變化曲線。圖5-13訓(xùn)練模型loss變化曲線1.3可視化前端1.3.1機(jī)器人架構(gòu)設(shè)計(jì)一個(gè)聊天機(jī)器人需要:瀏覽器前端:為用戶提供友好的機(jī)器聊天頁面;機(jī)器聊天API服務(wù):前后端通過異步的HTTP調(diào)用實(shí)現(xiàn)通訊,前端將對話請求提交給機(jī)器對話Web服務(wù),完成后將結(jié)果返回前端進(jìn)行展示;機(jī)器聊天后端:使用tf-seq2seq進(jìn)行機(jī)器聊天模型訓(xùn)練,得到對應(yīng)語言的模型文件。然后通過Python命令可以進(jìn)行句級的聊天,機(jī)器聊天API服務(wù)調(diào)用該命令。邏輯功能架構(gòu)如圖5-14所示:圖5-14邏輯功能架構(gòu)1.3.2web分析與設(shè)計(jì)若希望用擁有戶良好的體驗(yàn),我們的產(chǎn)品就要設(shè)計(jì)一個(gè)好用的web界面給用戶使用,用戶完全接觸不到底層,這樣用戶就能純粹的體驗(yàn)我們的產(chǎn)品。主要組成部分簡介Web界面的設(shè)計(jì)主要由HTML,CSS,JS文件構(gòu)成,他們的主要功能如下。HTML又稱為超文本標(biāo)記語言,它是決定網(wǎng)頁的結(jié)構(gòu)和內(nèi)容,即“顯示“超文本”意味著一個(gè)頁面可以有非常多的元素,比如包含圖片、鏈接,甚至是非文本元素。什么”?!俺谋尽币馕吨粋€(gè)頁面可以有非常多的元素,比如包含圖片、鏈接,甚至是非文本元素。CSS(層疊樣式表)堆疊樣式表單來設(shè)計(jì)網(wǎng)頁的呈現(xiàn)樣式,即“如何顯示相關(guān)內(nèi)容”。CSS樣式信息與網(wǎng)頁內(nèi)容分開,是一種標(biāo)記語言。每個(gè)元素的樣式都使用CSS描述。它只用于使HTML頁面看起來更好。JS(JavaScript)控制網(wǎng)頁的行為(效果)。使用JS可以使前臺交互,做到對用戶的操作有所響應(yīng),常用于給網(wǎng)頁添加提供更流暢、更美觀的瀏覽效果。(2)分析與設(shè)計(jì)這是一個(gè)聊天機(jī)器人的對話界面,用戶輸入一句話,機(jī)器人輸出一句應(yīng)答的話。需要設(shè)計(jì)提供對外調(diào)用的API,該API接受到用戶輸入的問答信息,根據(jù)接受到的信息調(diào)用模型預(yù)測應(yīng)答會話并
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 早產(chǎn)產(chǎn)后護(hù)理的注意事項(xiàng)
- 顛倒歌課件教學(xué)課件
- 新冠疫情期間的垃圾分類與處理
- 醫(yī)療AI輔助診斷技術(shù)分析
- 醫(yī)療大數(shù)據(jù)在健康管理中的作用
- 人工智能在臨床決策支持中的應(yīng)用
- 醫(yī)學(xué)影像診斷規(guī)范匯報(bào)
- 呼吸系統(tǒng)疾病護(hù)理要點(diǎn)
- 住院部護(hù)理服務(wù)規(guī)范
- 全新崗位聘用說明書
- 小米之家培訓(xùn)課件
- 2025屆安徽省江淮十校高三下學(xué)期11月第二次聯(lián)考-生物試卷(含答案)
- 百色起義課件
- 化工聯(lián)動(dòng)試車方案(3篇)
- 2025年輔警考試公安基礎(chǔ)知識考試試題庫及1套完整答案詳解
- 腦膠質(zhì)瘤MRI課件
- 1、40米箱梁預(yù)制、安裝及運(yùn)輸專項(xiàng)施工方案(4.29)
- 反應(yīng)釜介紹課件
- 2025年湖南省紀(jì)委監(jiān)委公開遴選公務(wù)員筆試試題及答案解析
- 2025年秋人教版一年級上冊數(shù)學(xué)教學(xué)計(jì)劃含教學(xué)進(jìn)度表
- 實(shí)華化工突發(fā)環(huán)境事件綜合應(yīng)急預(yù)案
評論
0/150
提交評論