NLP資訊提取工作記錄

2021-09-29 09:04:23 字數 1755 閱讀 7460

將各個醫院不同格式的病歷中的資訊提取出來,這些資訊包括姓名、出生地、年齡、疾病史、出院情況、出院有什麼症狀,有哪些**歷史等資訊。資訊提取後還應將這些資訊按照專案乙個個的儲存到mysql資料庫中。

由簡至繁的的描述。簡單和複雜的區別主要由待提取的資訊的複雜度來描述。

1,有限可窮舉情況

最簡單的為性別,只有兩種匹配,男、女。更多的則是婚姻情況,如已婚、未婚、離異等。再多的則是職業,如工人、農民、醫生等,職業的可能性可以達到幾十種。再多一些的可能是手術名稱,有幾百種,醫院名稱,上千種。一般來說利用上千個醫院名同時匹配時間就會很長了。

上面的性別資訊男女直接敲上去就可以了,但是你可能沒有乙個庫,這個庫包含所有的手術名或醫院名。如何得到這個庫呢?一般來說會針對具有某些特徵的語句進行分詞詞頻統計,通過詞頻來賽選出目標詞庫。

3,基於概率論的方法

自然語言處理最基本的演算法就是n-gram,而分詞1-gram則應是最基礎的。基本上自然語言處理傳統方法都是圍繞求當前的序列的概率最大來操作。如在分詞時,找到乙個組合方式,讓這個句子出現的概率最大;詞性標註時,找到乙個最優的詞性標註,讓此詞性標註的概率最大;條件隨機場、給定這句話,給出乙個概率最大的詞性標註。

在資訊提取時,如在查詢手術名稱時,我們會**截斷詞,如一般手術名稱中,術字都是末尾字,因此會正規表示式找出所有以術字為尾的語句,然後通過統計的方法找到應在句子前面的**截斷,找到概率最大的那個截斷詞,然後取截斷詞和術字中間的部分作為手術名稱。

4,傳統方法與機器學習方法的區別

傳統方法如1-gram可以通過詞頻統計得到乙個轉移矩陣**,但是有可能在實際應用中遇到沒見過轉移情況,遇到這種情況時一般會採用一些折中的方法來解決。因此用機器學習的術語來解釋即是傳統方法基本上沒有泛化能力。而由於機器學習模型是連續的**模型,因此對未見過的情況可以認為它會有相關的泛化、推理能力。

1,簡單正規表示式提取

姓名、出生日期就是直接正規表示式,一般格式都是姓名:***,因此如此方式正規表示式提取。

如職業、民族資訊,職業、醫院名的詞很少,如(工人、農民、醫生、公務員。。。。)。民族也一樣,因此直接匹配病歷中的相關詞就是病人的資訊,一般是這樣。

提取當前醫院中的手術歷史情況時,有些病人的病歷中會有上次在別家醫院的手術記錄,因此直接手術名稱全文匹配會導致將上次的**也混入到本次**中。因此應首先講搜尋區域定位到**的那段文字上,或者刪除掉**歷史的相關部分後再進行資訊提取。

可以以逗號和句號和分號將所有的語句分開,分開後,我們要得到乙個人某些部位的情況,如眼睛清涼、身體是否有囊腫。簡單來說就是通過檢視同時出現的次數來賽選,同時出現越高說明相關性越大。複雜來說得到各個詞同時出現的頻率統計,得到乙個矩陣,此矩陣表示了相關性

概率論、條件概率、馬爾科夫鏈、協方差矩陣、詞頻矩陣、plsa、lda演算法。

plsa、lda相關深度學習演算法為cbow或skip-gram。這兩個word embeddding的主要差異是輸出部分,自然語言處理的主要難點就是詞太多導致矩陣或向量的維數特別大,比如我們專案的詞的數量就達到上萬,賽選掉詞頻低的和是、的類的詞還有好幾千。

cbow或skip-gram主要是訓練1-gram,即是一階馬爾科夫鏈,訓練乙個模型,給定乙個詞,**下乙個詞的概率,最後僅使用將詞抽象為特徵向量的矩陣。

而plsa和lda類似,給定一定數量的文章,再給定乙個主題數量,用類似聚類的流程訓練模型,最終收斂。實現過plsa模型,一開始是網上copy的,但是其中矩陣運算都是for迴圈,因此修改為矩陣運算,但是擬合速度仍舊很慢,修改為用gpu進行矩陣運算也是很慢,而gensim很快,查詢原因是採用稀疏矩陣算的。

plsa和lda是專案搜尋引擎要用,擴充使用者的搜尋詞用的。

Memcache Server儲存資訊提取

string stroutput raw output foreach string key1 in stats.keys console.writeline stroutput response.write stroutput response.end sample result raw outp...

CTF Bugku 分析 資訊提取

ctf bugku 分析 資訊提取 最近刷題的時候看到了這道比較有趣的題。而且網上也沒找到wp,所以分享一下我的思路。先用wireshark開啟流量包看看是什麼。只有http和tcp的包,我們只關心http包,所以我們在過濾中輸入http,只顯示http內容。粗略的看一下,結合題目的提示 sqlma...

不同標籤的資訊提取

但是我們要提取他們裡面的同一型別內容 時間 具體資訊如下 嘗試了很多辦法,都沒有成功。適用於第乙個資訊的方法不適合第二個,反之亦然。最後通過列印出node節點的詳細資訊後,我才順利完成任務。具體解決方法如下 node time node time nodes.elementat i system.o...