星期日, 7月 24, 2022

再戰 VB6

VB6 自動化研究又有了進度。爆肝摸索、找了可靠的第三方庫、殺了一卡車 bug、解完山一樣高的例外,看完海一樣深的 log 以後,自動化表單查詢程式終於穩定運行,也不枉昨天搞到 9PM。

禮拜日開一天,就看到機器人已經查了約 500 份病歷。這樣查詢完 N=2~3K 的 study 還真的就電腦多開幾天的事。資料齊了後用 python 簡單統計和 NLP,應該就能生成大部分夥伴和統計專家需要的資料。
 
可以的話還是希望能用 SQL。從 VB6 form dump 資料其實比直接下 SQL 複雜很多,效能還差。幾行 SQL 就可以解決的事,為了合法合規不得不用複雜的方式。
 

 
全文連結

星期日, 7月 10, 2022

醫療人員寫程式有用嗎?

 改自 ptt 的發文

以個人經驗來說,醫療人會點程式有沒有用?個人經驗是有的,我自己弄的東西:

關鍵字搜尋引擎

有引擎前,蒐集 case 主要靠自己作筆記。有引擎後 keyword 和查詢條件丟下去 case就噴出來。可能辛苦作筆記收了不曉得多久才能收一兩百個,引擎只要用正確的搜尋條件一分鐘就生出一千個。

查資料自動化

最近做回溯研究收案超過兩千個。這幾天弄出 RPA 機器人可以自動填病歷號查資料,申請通過正式上線。一樣的事情,別人可能要弄經費、請助理、花不知道多久搞定。我自己做可能電腦多開幾個晚上還不用想辦法找錢。

各種自動化和改善工作流程

學會 Autohotkey,可以打 fu 自動變成 Advise follow-up,一鍵自動從其他表單帶入資料、一鍵文字自動排版...

隨著技能樹越來越深廣,能做的事情還能越來越炫炮,例如



幫普通表單程式加上改字型、拼字檢查、自動完成、顏色佈景...等功能。潛在應用的地方很多,例如 HIS 或 RIS 各式表單程式。

以前會想:這種事委託專門單位、學校、或是外包廠商不就能做?自己會的價值在哪裡?

後來發現專門單位可以非常忙,手上待處理的案件可以到四位數。需求如果對全院不夠重要、急迫不一定能可以做,可以做也可能要排隊,排隊成功程式開始做也可能要反覆修改處理眉角問題,每次修改可能又是另一個循環。學校或外包廠商做,要想辦法弄資源,弄計畫、請經費、etc,一個程式綁一堆東西,原始碼還可能在別人手上、以後只能一直投入。自己弄就沒有上述一堆問題、程式想改就開記事本改就好。       


「又快又好」是可能形成價值的。以大規模撈 case 查資料做回溯性研究為例,別人流程是:

1. 寫申請單委託資訊單位
2. 花時間排隊(可以等很久
3. 得到結果,發現眉角問題、協商修正 * N(用 nodule 查結果 Nodule、nodlue 沒撈到 etc.)
4. 請助理一筆筆查資料整理
5. 生成那張跑統計的 Excel 表格。

而如果都能自己做呢?可能 IRB 通過的當天,下班前搜尋引擎就把 case 列出來了。然後多花幾個晚上用機器人把資料查好。最後用 python 字串、報表分析,很快就能統計好大部分資料,這時候可能別人還在排隊。大幅改善效率,就能大幅降低投入成本和時間,就能顯著提高研究成功率。這時哪怕作為醫療人員和研究者的本職技能都不頂尖,別人也會願意合作。
                                                               
就算一時做不了這些事,起碼也能讓自己上班更輕鬆。別人花時間按 Enter 和空白幫報告排版還是從其他系統抄數字,你一鍵就無腦完成,更快下班不好嗎?如果喜歡寫,替自己節省精力,創造機會的同時還能做喜歡的事,緩解 burnout 不香嗎?

所以如果本來就有寫程式的興趣,可以繼續鑽研深入,然後設法找自己周圍有必要但別人顧不到的事,遵循法規、看好政治和環境允許的限度,抓準機會切進去,programming skill 不會虧待我們。

至於學哪些語言,我是學 Python 和 Autohotkey 為主。AHK 主攻辦公室自動化,Python 補一些 AHK 不好做的事情,例如運用瀏覽器自動化測試套件自動點頁面之類。Python 也可以銜接 Machine Learning 和 Deep learning。另外零碎玩過一些 Rust、C/C++、PHP 之類的東西,但這些對醫療職業可能就不那麼直接有用。

值得一提的是數學,有後悔沒趁年輕的時候學好數學,最近鑽研 Deep learning 和統計都遇到數學的檻,回頭補同濟的高等數學。結果現在奔四體質變差很多,用腦一多就 tinnitus 甚至 vertigo,而且有些基礎的東西忘了還要「復健」。所以如果還在學校,學習數學其實是好選擇。程式語法那些在有明確目的的情形下快速入門不難,但數學就不行。線性代數和微積分剛好也是現在 deep learning 會用到的東西。  

全文連結

星期四, 7月 07, 2022

Python future 安裝 No module named 'src' 解法

安裝 Pyinstaller 時會自動安裝依賴包 future,然後就遇到這問題,從連結找到解法。 手動去 github 抓包,解壓縮,setup.py 中 import src 之前加入一行 statement 即可:
sys.path.append('')
其實 sys.path.append('.') 也可以。看來是 path 的問題。弄好後 python setup.py install 問題解決!
全文連結

星期一, 7月 04, 2022

魔法少女天穹法妮雅

Steam 頁面

夏特時收的小遊戲。一打開就廢寢忘食通關主線。「實用」部份非常實用該有的都有,不多描述>////<

撇開實用,RPG 的部份也屬於上乘,劇情就簡單流暢的王道魔法少女變身救世,戰鬥方面多種難度可選,角色 Build 有彈性,近身格鬥或各系魔法隨選。

蒐集要素多,各式打材料、拼練成,開寶箱或練成的特殊道具可以開特殊玩法,例如把魔攻倍增普攻變 1 的特殊道具,可以打造純粹的魔法砲台少女,或是花海量資源和肝才能疊出的自動秒殺裝再瘋狂跑圖練級,不小心就跑到 99 級 etc. 。

遊戲還有多週目要素,可以繼承等級、道具、魔法提昇難度進行虐菜挑戰。看網路上攻略一堆練功魔人想發設法疊滿屬性,角色屬性貼出來讓人懷疑這真的是同一款遊戲嗎 XD

無論是作為 RPG 本身的劇情或「實用」成份都屬於上乘。Steam 上的好東西越來越多了。 全文連結

星期六, 6月 25, 2022

吐槽 VB6

 最近又一次受 VB6.0 荼毒迫害。

最近和其他單位同事合作回溯性分析,分析公司用戶資料。資料能透過資訊系統一筆筆查,問題是筆數多(N>2K),資料分散在不同報表程式和網頁表單上。因各種因素,不能直連 production DB 下 SQL。反覆請人代撈實務不可行。但政策不禁自動化軟體代替鍵盤滑鼠操作報表軟體,只要遵循審查流程。

然後就又跟 VB6.0 槓上了。很大部份資料需透過一 VB6.0 報表軟體查詢。報表軟體上有 ListView 顯示用戶的多筆紀錄,操作者點選 ListView 上的紀錄,程式跳出對應該紀錄的進一步細節。

真人鍵盤滑鼠操作沒啥問題,用自動化 VB6 就開始不講武德。

在家中做模擬,就發現 MSDN 上的東西很多對 VB6 沒用。例如,MSDN 說 LVM_SETITEMSTATE 可以改變 ListView 目前被圈選的 item。實際使用畫面上 ListView 被 highlight 的 item 會變,但後續 side effect 不會觸發。又例如 MSDN 說 LVM_SETITEM 可改變 ListView 呈現的資料,結果實際使用只會改畫面上的資料,隨便重排資料修改就不見了。

那用 code injection 解決呢?很久前就試過,VB6 編出來的 code 本質是編成 native code 的虛擬機操作,大量意義不明的中間變數和莫名操作,一切 control flow 最終回歸 MSVBVM60.DLL 和元件庫。有效操作被嚴重稀釋。逆向天然自帶虛擬機的 binary 嚴重超過我業餘用戶的能力,我連自己寫的 mock 都沒辦法分析,生產環境中的報表軟體就不用試了。

最後,又一次倒在 VB6 鐵拳之下,還是只有模擬鍵盤滑鼠按鍵的方式可行。方案沒技術含量,而且使用期間電腦不能操作,但自動點選存資料還是弄出來了,之後走審查流程後就在公司內正式開發、使用。順利的話能解決分析需求,還有機會與另外一個 side project (搜尋引擎)形成連動,做成一條龍。

業餘 side project 坑好像越挖越大,一開始是好玩,然後是實用,現在目標變成發展產業鏈了 XDD。但還是要吐槽 VB6,根本就上個時代的遺毒...

全文連結

星期四, 6月 23, 2022

讀書:程序員進階心法:快速突破成長瓶頸

博客來

書本其實並沒有單一的主題,而是將有關程序員成長的方方面面,從入行、職業路線的進階,為人處事、找工作、如何寫好代碼等都全部帶到,而且都有足夠深度。感覺是長期累積的心得文集。有人說這本書應該可以多讀幾次,每次都能感受不同的醍醐味。

全文連結

星期四, 6月 09, 2022

高等數學同濟七版

亞馬遜連結

最近很多研究活動在數學上撞牆,只好拿書回來念。目前快唸完第三章,做了點習題。目前學起來還算舒服,連我這奔四並且數學倒退到初中程度的大叔都勉強能跟上,有些東西跳著看,例如三角函數或曲率這累跟我本行沒半毛錢關係、業餘研究很可能也用不到的就不客氣的跳了。

這書知乎評價看來普通,有人說這套「如果你不是美食家,也不是嚴格控制營養攝入的運動員,只是想舒舒服服吃頓飯,同濟版高數還是很不錯的。」不過我只是想用最短時間,快速學過自學工科需要的數學,應該也夠用了。未來想更進一步再換更好但更花時間的教材吧。不想學數學的工程師不是個好醫生(?)




全文連結

星期二, 5月 31, 2022

閃紅的艾麗絲

Steam 全年齡版購買頁面

別人的遊玩影片 XD

某次趁特價入手的 Steam ARPG 小品黃油(羞)。最近剛普通難度通過一輪。

故事中規中矩,就英雄巫女拯救世界。特色是動作非常有打擊感確實夠要求技術。另外有豐富的收集、再挑戰和多周目元素。第一周照攻略花了很多時間弄了釣魚、蒐素材繼承武器 etc.。破台一輪後出現挑戰模式,可以獎勵點數強化下週目角色等。

攻略中那種無傷打出幾百連擊實在太誇張了,我劇情黨後期只用一兩招反覆搭配食物補血硬換而已....哪天想打困難、地獄模式再開來研究吧 XD

全文連結

星期日, 5月 29, 2022

ReadThisPaper

官網

臉書 Python Taiwan 社團上看到的。

輸入論文標題後可以搜尋論文,然後網站按照順序排列出搞懂這篇論文需要理解的其他論文,自動化生成「技能樹」

用 NegBERT 論文丟進去試了一下,確實找到了些確實有關的基礎論文,未來要寫 paper 可以試試。

全文連結

星期五, 5月 27, 2022

Windows 下簡單安裝 Python 3.9 和 PIP 方法

出處

雖說在 Windows 下寫 Python 大多時候我靠 WinPython 解決,但特殊情況下可能需要可攜、精簡的 Python 執行環境。官方的 python windows embeddable package 內容簡單,但缺少 PIP,而這篇文提供了裝好 PIP 的方法。

修改 python39._pth

第一行加入 Lib/site-packages,最後一行 import site 移除註解,改好後檔案類似   

Lib/site-packages
python39.zip
.

# Uncomment to run site.main() automatically
import site

下載安裝 PIP

接下來進 python 根目錄,下載 get-pip.py,然後用 python 執行

python get-pip.py

設定可臨時改動 PATH 的腳本

set PATH=%PATH%;%CD%;%CD%\Scripts

寫好存檔後在 python 目錄下執行。

一切弄好後,試驗 pip install selenium 成功!

全文連結

星期一, 5月 23, 2022

Dungeon Hack 遊玩心得

 

小時候 DOS 時代的的回憶,中文操作手冊還保留很久當成故事書看 XD。真的二十年沒玩了,趁最近上架 Steam 就買回來懷舊。Steam 版還是有小問題,就是沒有雲端存檔,要手動備份同步存檔,不過 DOS 遊戲目錄結構簡單,存檔位置很好找。

以現在眼光來看,遊戲有些機制其實太 hard core。高難模式死掉強制刪存檔。某些會負能量攻擊或石化的敵人太強,一打中就是掉等級或秒殺。遊戲還很少鑑定手段拿了一堆藥和裝備不知道幹麻,等快過了才從攻略網站知道有艾恩石可以防石化即死或負能量打落等級。

遊戲平衡也不大行,牧師太強勢了,治療、提供食物、防負能量打落等級、水下呼吸、解詛咒裝備、解毒....都集中在同一個職業,導致有沒有兼職牧師打起來根本就是兩款遊戲。

不過這遊戲不是玩遊戲性,是玩懷舊時光穿梭回憶小時候的,小時候很害怕陰暗地下城的氣氛,英文還不好,好像從來沒下過第二層,這次 Steam 版終於破了一輪 XD

全文連結

星期三, 5月 18, 2022

系列文章:Step by step guide to master natural language processing

Part 1
Part 2
Part 3
Part 4
Part 5
Part 6
Part 7
Part 8
Part 9
Part 10
Part 11
Part 12
Part 13
Part 14
Part 15
Part 16
Part 17
Part 18
Part 19
Part 20
簡介 NLP 的一系列文章,深入淺出,涵蓋面夠廣。裡面的 python 代碼不是重點,對概念的簡單說明和範例才是 XD。TutorialsPoint 也有簡介 NLP 的文章但寫的太 formal。缺點大概就是寫到 Topic modeling 以後「筆力」就不大夠了。但整個系列作為讀書前的導讀應該還是不錯的。 全文連結

星期四, 5月 05, 2022

星期二, 5月 03, 2022

閱讀:Clinical Notes — The “Negative” Story

連結

否定語句(Negation,例如 No evidence of embolism)在放射科報告很常見,但特定情況下會造成困擾,例如我目前經營的搜尋引擎,輸入關鍵字會連否定句裡面的內容也被列入搜尋結果。

這篇 Medium 的文章深入淺出的總結了 negation 有關的概念並總結了一些處理方法。對常見 negation pattern 的總結是亮點,例如

Termination patterns: abdominal pain denied
Prefixes: non-diabetic, non-hypertensive
Double negation: not abnormal, not unusual    
Symbols usage: Hypertension +, Diabetes -
Positive/Negative usage: Hypertension positive, Diabetes negative.
Yes/No phrases: Hypertension — No, Diabetes — Yes, Urinary problems — No.
Use of more generic language than clinical terminology: No complaint of high sugar (rather than No Diabetes).

其實還有一些是作者沒提到的,例如病歷上的英文可能不符合英文文法(例:no fracture or dislocation seen),這對基於語法分析的方法(例如 NegBio)可能會有影響。symbol 實際上病歷也有很多種,(+)(V)(O) 我都看過 XD

這篇的缺點是引用的處理方法(NegEx 等)有些舊了。連 NegBio 都沒提到,更後面的 deep learning 方法當然沒有了。


全文連結

星期一, 5月 02, 2022

星期日, 5月 01, 2022

星期六, 4月 23, 2022

Basics of Linear Algebra for Machine Learning: Discover the Mathematical Language of Data in Python 讀後感

書本簡介

本書完全從學習 ML/DL 的應用角度出發,內容非常淺,還有大半篇幅是 python 代碼。如果是正經學習線性代數這本書不夠,但對非工科出身,在工作之餘為了 ML/DL 才回頭研究的人來說,這本就合適,最起碼可以快速鳥瞰跟 ML 相關的內容,也不會迷失在 ML 相對用不到的細節裡,200+ 頁的篇幅也很快可以看完。以後需要學更多東西再找別的書補完。





全文連結

星期日, 4月 10, 2022

文石 BOOX Note5 入手!

閱讀大量文件時,用電腦或 ipad 看久眼睛很累,還是習慣用 e-ink 電子書閱讀器。

原本機器是 N 年前從露天花幾千元入手,賣家裝好多看系統的二手 Amazon DXG。多年來使用愉快,只有中間換過幾次電池。

但最近好幾次看 PDF,電腦上沒問題,但 DXG 全部顯示空白頁面,Google 起來疑似多看系統 bug。而 DXG 的多看好像 N 年沒更新,至少我找不到,決定換新機。

新機首先希望是 10.3 吋。6 吋、8 吋看久實在不舒服,不要求能放口袋。另外希望可以看不同店家的電子書,不要鎖死在閱讀器官方商城,所以只考慮開放系統。

原本想買 HyRead 產品,但現場試用有莫名卡頓感,PTT 上也有類似抱怨,一些慣用操作如文件放大旋轉瀏覽也不順。Boox 的機器試用就順手很多,決定改買 Boox Note5。請店員設定,裝好 Google Play 後帶回家。

新機放大旋轉檢視 PDF,換頁流暢度遠勝舊機,少了切幻燈片的卡頓感,一時還不大習慣 XD。App 試了 JPTT 和內建瀏覽器 Wifi 上網。第三方 App 能裝能用,以後裝不同商城電子書或裝 App 看不同格式文件應該沒問題。

DXG 就從此安心退役了。

新舊機器比較圖,左方 DxG 右方 Boox Note5,新機器的螢幕大一些,也沒有佔空間的實體鍵盤。

新機器看 PDF,大螢幕看起來還是比較輕鬆。

全文連結

FFMpeg 影片批次轉檔

 出去玩時喜歡手機錄影,每次回來都一堆影片檔。原始檔案都很大,直接上傳太佔空間,需要批次壓縮。

原本作法是用 anyvideo converter 批次處理,但 GUI 操作繁瑣,也不喜歡裝癰腫的軟體。後來發現 ffmpeg 也可以做一樣的事情。

FFMpeg 命令列產生器

先用上方連結點選 GUI,頁面會自動轉成 FFMpeg 需要的命令列參數。可以把它記下,不用每次都去網頁點,我得到的參數是這樣的:

ffmpeg -i 輸入影片 -c:v libx264 -preset slow -crf 20 -c:a copy 輸出影片


套上 Windows cmd 下可用的迴圈語法,就是

for /r "來源目錄" %a in (*.mp4) do ffmpeg -i "%a" "輸出目錄\%~na.mp4" -c:v libx264 -preset slow -crf 20 -c:a copy
用這方式就不需要每次都開 GUI 調參,目錄指定好就流水線處理到底了。

全文連結

星期二, 3月 29, 2022

文章:Fine-Tuning BERT for text-classification in Pytorch

文章連結

這是簡介用 PyTorch 進行 BERT fine tuning 做 downstream task 的很簡單入門文章。亮點是簡單、圖漂亮、有程式可參考。可以當作 cheatsheet,適合已經了解重要概念後(例如何為 transformer)要寫程式時回頭參考,用來入門則太簡略。

因為自架業務部門搜尋引擎,需要處理 negation 等問題的原因,未來跟 NLP、BERT 打交道的機會應該不少,收錄這篇供自己回頭參考 XD

全文連結