[问题] 字串的关键字提取

楼主: moodoa3583 (金牌台灣啤酒)   2020-03-05 09:41:10
嗨大家好,我有一个表格像是这样
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
作者: bjchiou (bjchiou)   2020-03-05 09:49:00
抓right left后的第一个字,其他另外设计?
作者: ddavid (谎言接线生)   2020-03-05 09:56:00
我最近才解决一个很类似的问题(但复杂很多),我只能说以你这个问题的规模,第一种想法有可能反而会是实作最快的。第二个想法只能做为万一出现不在列表中的部位时,尝试自动抓取部位的候补想法因为你的范围限定在球员,常见伤病种类会有一定的范围,第一种想法未必如想像中耗时。而且可以在有列表未出现的案例时再直接针对该案例补充关键字即可,不需要要求第一次建立List就是完整的或者也可反过来,你先进行第二种想法做为人力添加关键字的辅助,这样也可以节省一些时间
作者: papple23g (逆道者)   2020-03-05 10:04:00
维持第一个想法+1 如果该栏有未包含部位就报错 直到没有报错为止assert all((body_part in note_text) for body_part in body_part_list),'需要更新身体部位的字段:'+note_text
作者: ddavid (谎言接线生)   2020-03-05 10:05:00
我自己解的问题是用多重机制共同验证来帮每个关键字算积分做排名然后优先从高分关键字选下来,但那是因为我的关键字种类甚至无法限定在名词,还可能是一个句子。你这work单纯许多,我想是不用这么费工。
作者: alvinlin (林矜业)   2020-03-05 14:51:00
为什么不用regex?把身体部位写成pattern比对即可
作者: ddavid (谎言接线生)   2020-03-05 18:15:00
我是总觉得这个问题规模应该不至于要搞到分析语句词性XDNBA球员范围而已,光是总量可能都未必多到哪里去,部位名称也应该重复使用的字词很多,这应该是人力可及的范围XD而且先基本做看看,发现真的不行或将来要扩展到资料很多的范围,再补上关键字自动萃取机能来辅助也还来得及
作者: vi000246 (Vi)   2020-03-05 18:21:00
做词性分析,把名词提取出来刚刚用这个试了一下 成功率很高https://parts-of-speech.info/
楼主: moodoa3583 (金牌台灣啤酒)   2020-03-05 22:49:00
噢对,如果各位有兴趣知道的话,2000到2020年最多球员受伤的部位是膝盖,然后依次是脚踝,背部,脚掌,腿后肌(hamstring )
作者: shala (沙罗)   2020-03-07 10:02:00
只能用关键字抓吧

Links booklink

Contact Us: admin [ a t ] ucptt.com