我需要使用基于规则方法的BIO-scheme注释文本语料库(我有一个预定义的标记及其标记列表)。我使用spaCy的EntityRuler
类来完成这个任务。我的问题是,是否有一种简洁有效的方法来实现spaCy的生物标记?另外,我正在努力实现多标记生物标记:
'He used sodium-bicarb 5 gr' ->
['O', 'O', 'B-DRUG', 'I-DRUG', 'I-DRUG', 'B-STRENGTH', 'I-STRENGTH')
我有一个简单的(基于规则的)脚本来标记我感兴趣的实体:
^{pr2}$输出:
ipratropium 23 34 DRUG
20mg 61 65 STRENGTH
denzapine 67 76 DRUG
amil-co 81 88 DRUG
因此,我不确定如何将'amil-co'
拆分为三个标记'B-DRUG, I-DRUG and I-DRUG'
。在
理想情况下,我希望有以下注释:
token BIO
0 He O
1 has O
2 been O
3 prescribed O
4 ipratropium B-DRUG
5 - I-DRUG
6 albuterol I-DRUG
7 a O
8 small O
9 dose O
10 of O
11 20 B-STRENGTH
12 mg I-STRENGTH
13 , O
14 denzapine B-DRUG
15 and O
16 amil B-DRUG
17 - I-DRUG
18 co I-DRUG
19 . O
还有,在我的词汇表drug_patterns.json
中,相同的长标记可能多次出现:
{"label": "DRUG", "pattern": [{"lower": "ipratropium"}]}
{"label": "DRUG", "pattern": [{"lower": "ipratropium"}, {"lower": "bromide"}]}
{"label": "DRUG", "pattern": [{"lower": "ipratropium"}, {"lower": "-"}, {"lower": "albuterol"}]}
而不是整个ipratropium-albuterol
将只选取firs(最短)标记ipratropium
(如输出中所示)。有没有简单的方法告诉斯帕西挑选最长的代币?在
任何想法都将得到高度赞赏。在
好吧,这是一个令人尴尬的简单解决方案,但希望其他人会感兴趣。只需使用标记的
.ent_iob_
和.ent_type_
属性。即:然后我们可以很容易地将最后两列用连字符以适当的格式组合起来。斯皮西太棒了!在
相关问题 更多 >
编程相关推荐