语义成分分解

导入模块

[1]:
from EduNLP.utils import dict2str4sif
/usr/lib/python3/dist-packages/requests/__init__.py:89: RequestsDependencyWarning: urllib3 (1.26.6) or chardet (3.0.4) doesn't match a supported version!
  warnings.warn("urllib3 ({}) or chardet ({}) doesn't match a supported "

测试数据

[3]:
item = {
    "stem": r"若复数$z=1+2 i+i^{3}$,则$|z|=$",
    "options": ['0', '1', r'$\sqrt{2}$', '2'],
    }
item
[3]:
{'stem': '若复数$z=1+2 i+i^{3}$,则$|z|=$',
 'options': ['0', '1', '$\\sqrt{2}$', '2']}

区分题目成分

  • 通过添加特殊关键词的方式,区分题目的题干和选项,选项之间按顺序做编号标记。

[15]:
dict2str4sif(item,key_as_tag=True,
             add_list_no_tag=False,
            #  keys=["options"],
             tag_mode="head"
             )

[15]:
'$\\SIFTag{stem}$若复数$z=1+2 i+i^{3}$,则$|z|=$$\\SIFTag{options}$0$\\SIFSep$1$\\SIFSep$$\\sqrt{2}$$\\SIFSep$2'
[5]:
dict2str4sif(item, add_list_no_tag=True)
[5]:
'$\\SIFTag{stem_begin}$若复数$z=1+2 i+i^{3}$,则$|z|=$$\\SIFTag{stem_end}$$\\SIFTag{options_begin}$$\\SIFTag{list_0}$0$\\SIFTag{list_1}$1$\\SIFTag{list_2}$$\\sqrt{2}$$\\SIFTag{list_3}$2$\\SIFTag{options_end}$'
[6]:
dict2str4sif(item, add_list_no_tag=False)
[6]:
'$\\SIFTag{stem_begin}$若复数$z=1+2 i+i^{3}$,则$|z|=$$\\SIFTag{stem_end}$$\\SIFTag{options_begin}$0$\\SIFSep$1$\\SIFSep$$\\sqrt{2}$$\\SIFSep$2$\\SIFTag{options_end}$'
[7]:
dict2str4sif(item, tag_mode="head")
[7]:
'$\\SIFTag{stem}$若复数$z=1+2 i+i^{3}$,则$|z|=$$\\SIFTag{options}$$\\SIFTag{list_0}$0$\\SIFTag{list_1}$1$\\SIFTag{list_2}$$\\sqrt{2}$$\\SIFTag{list_3}$2'
[9]:
dict2str4sif(item, tag_mode="tail")
[9]:
'若复数$z=1+2 i+i^{3}$,则$|z|=$$\\SIFTag{stem}$$\\SIFTag{list_0}$0$\\SIFTag{list_1}$1$\\SIFTag{list_2}$$\\sqrt{2}$$\\SIFTag{list_3}$2$\\SIFTag{options}$'
[11]:
dict2str4sif(item, key_as_tag=False)
[11]:
'若复数$z=1+2 i+i^{3}$,则$|z|=$0$\\SIFSep$1$\\SIFSep$$\\sqrt{2}$$\\SIFSep$2'