看板 Python 關於我們 聯絡資訊
嗨大家好,我有一個表格像是這樣 http://i.imgur.com/ld7tHmC.jpg 最後一欄Note是這個球員的受傷資訊,可以看到有 right hamstring injury、concussion 而我現在只需要部位不需要其他描述,例如 sore lower back我只需要back,right knee injury只需要knee。 我第一個想法是把所有部位集中成一個list,然後split字串做mapping,但這個做法有點費時。 第二個想法是搜集形容詞並抓形容詞後的單字,但資料的字串順序又不是那麼整齊。 想問各位有什麼好的提取法嗎? 附上網址 https://reurl.cc/xZxR7E -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 223.137.30.149 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/Python/M.1583372474.A.EAB.html ※ 編輯: moodoa3583 (223.137.30.149 臺灣), 03/05/2020 09:45:21 ※ 編輯: moodoa3583 (223.137.30.149 臺灣), 03/05/2020 09:46:25
bjchiou: 抓right left後的第一個字,其他另外設計? 03/05 09:49
這有點像我的想法2,但因為我有約莫2萬筆資料,排序都不完全一樣,而除了right,left之外也有很多不同的形容詞,所以這個想法有點難度
ddavid: 我最近才解決一個很類似的問題(但複雜很多),我只能說以 03/05 09:56
ddavid: 你這個問題的規模,第一種想法有可能反而會是實作最快的。 03/05 09:57
※ 編輯: moodoa3583 (223.137.30.149 臺灣), 03/05/2020 09:58:12
ddavid: 第二個想法只能做為萬一出現不在列表中的部位時,嘗試自動 03/05 09:59
ddavid: 抓取部位的候補想法 03/05 09:59
ddavid: 因為你的範圍限定在球員,常見傷病種類會有一定的範圍,第 03/05 10:00
ddavid: 一種想法未必如想像中耗時。而且可以在有列表未出現的案例 03/05 10:01
ddavid: 時再直接針對該案例補充關鍵字即可,不需要要求第一次建立 03/05 10:01
ddavid: List就是完整的 03/05 10:01
ddavid: 或者也可反過來,你先進行第二種想法做為人力添加關鍵字的 03/05 10:02
ddavid: 輔助,這樣也可以節省一些時間 03/05 10:03
papple23g: 維持第一個想法+1 如果該欄有未包含部位就報錯 直到沒 03/05 10:04
papple23g: 有報錯為止 03/05 10:04
papple23g: assert all((body_part in note_text) for body_part i03/05 10:04
papple23g: n body_part_list),'需要更新身體部位的欄位:'+note_te03/05 10:04
papple23g: xt03/05 10:04
ddavid: 我自己解的問題是用多重機制共同驗證來幫每個關鍵字算積分03/05 10:05
ddavid: 做排名然後優先從高分關鍵字選下來,但那是因為我的關鍵字03/05 10:06
ddavid: 種類甚至無法限定在名詞,還可能是一個句子。你這work單純03/05 10:07
ddavid: 許多,我想是不用這麼費工。03/05 10:07
了解,感謝以上大大,那我先以想法1來做,有什麼更好的解法再丟上來 ※ 編輯: moodoa3583 (223.137.30.149 臺灣), 03/05/2020 12:31:57 ※ 編輯: moodoa3583 (223.137.30.149 臺灣), 03/05/2020 12:32:16
alvinlin: 為什麼不用regex? 03/05 14:51
alvinlin: 把身體部位寫成pattern比對即可 03/05 14:52
這也是接近想法1,但比較不好處理的是我不知道全部的身體部位,而且裡面也有提到像是illness, concussion 等症狀,這也是我想留下來的 ※ 編輯: moodoa3583 (223.137.30.149 臺灣), 03/05/2020 15:31:13
alvinlin: 其實是不太一樣。還有另一個選擇PyParsing 03/05 17:14
alvinlin: docs/pycon06-IntroToPyparsing-notes.pdf 03/05 17:39
ddavid: 我是總覺得這個問題規模應該不至於要搞到分析語句詞性XD 03/05 18:15
ddavid: NBA球員範圍而已,光是總量可能都未必多到哪裡去,部位名 03/05 18:16
ddavid: 稱也應該重複使用的字詞很多,這應該是人力可及的範圍XD 03/05 18:16
ddavid: 而且先基本做看看,發現真的不行或將來要擴展到資料很多的 03/05 18:17
ddavid: 範圍,再補上關鍵字自動萃取機能來輔助也還來得及 03/05 18:17
vi000246: 做詞性分析,把名詞提取出來 03/05 18:21
vi000246: 剛剛用這個試了一下 成功率很高 03/05 18:25
vi000246: https://parts-of-speech.info/ 03/05 18:25
感謝各位的建議,後來是把notes裡的字用split切開後丟進一個list,去掉長度為1的廢字後做Counter,然後再把left,right等出現很多次的形容詞去除,慢慢留下出想要的字 ※ 編輯: moodoa3583 (223.137.30.149 臺灣), 03/05/2020 22:44:05
moodoa3583: 噢對,如果各位有興趣知道的話,2000到2020年最多球員 03/05 22:49
moodoa3583: 受傷的部位是膝蓋,然後依次是腳踝,背部,腳掌,腿後 03/05 22:49
moodoa3583: 肌(hamstring ) 03/05 22:49
shala: 只能用關鍵字抓吧 03/07 10:02