python - 标记数据框中的实体
问题描述
我正在寻找一种方法来直接在我的数据框中使用关联的标签标记我的实体。
我的标记化适用于省略,例如:
["d'Angers"] => ["d'", "Angers"]
["l'impératrice" ] => ["l'", "impératrice"]
输入数据框:
Sentence Mention Tag
3 Vincennes B-LOCATION
3 . O
4 Confirmation O
4 des O
4 privilèges O
4 de O
4 la O
4 ville O
4 d'Aire O
4 1 O
4 , O
4 au O
4 bailliage B-ORGANISATION
4 d'Amiens I-ORGANISATION
4 .
5 Projet O
5 de O
5 " O
5 tour O
5 de O
5 l'impératrice B-TITLE
5 Eugénie B-PERSON
5 .
6 session
6 à O
6 l'ONU B-ORGANISATION
6 du
6 17
6 mai
6 .
预期输出:
Sentence Mention Tag
3 Vincennes B-LOCATION
3 . O
4 Confirmation O
4 des O
4 privilèges O
4 de O
4 la O
4 ville O
4 d'Aire O
4 1 O
4 , O
4 au O
4 bailliage B-ORGANISATION
4 d' I-ORGANISATION
4 Amiens I-ORGANISATION
4 .
5 Projet O
5 de O
5 " O
5 tour O
5 de O
5 l' O
5 impératrice B-TITLE
5 Eugénie B-PERSON
5 .
6 session
6 à O
6 l' O
6 ONU B-ORGANISATION
6 du
6 17
6 mai
6 .
困难在于能够保持与标记化提及相关联的标签。如果有人有任何线索,请提前致谢。
解决方案
您可以split
使用后向正则表达式和explode
:
(df.assign(Mention=df['Mention'].str.split("(?<=')"))
.explode('Mention')
)
输出:
Sentence Mention Tag
0 3 Vincennes B-LOCATION
1 3 . O
2 4 Confirmation O
3 4 des O
4 4 privilèges O
5 4 de O
6 4 la O
7 4 ville O
8 4 d' O
8 4 Aire O
9 4 1 O
10 4 , O
11 4 au O
12 4 bailliage B-ORGANISATION
13 4 d' I-ORGANISATION
13 4 Amiens I-ORGANISATION
14 4 . None
15 5 Projet O
16 5 de O
17 5 " O
18 5 tour O
19 5 de O
20 5 l' B-TITLE
20 5 impératrice B-TITLE
21 5 Eugénie B-PERSON
22 5 . None
23 6 session None
24 6 à O
25 6 l' B-ORGANISATION
25 6 ONU B-ORGANISATION
26 6 du None
27 6 17 None
28 6 mai None
29 6 . None