[1-15, 16] 채점기준 변경
This commit is contained in:
BIN
250709_DIW_2506B_TEST.xlsx
Normal file
BIN
250709_DIW_2506B_TEST.xlsx
Normal file
Binary file not shown.
BIN
250709_DIW_2506B_채점결과.xlsx
Normal file
BIN
250709_DIW_2506B_채점결과.xlsx
Normal file
Binary file not shown.
BIN
250709_DIW_2506C_TEST.xlsx
Normal file
BIN
250709_DIW_2506C_TEST.xlsx
Normal file
Binary file not shown.
BIN
250709_DIW_2506C_채점결과.xlsx
Normal file
BIN
250709_DIW_2506C_채점결과.xlsx
Normal file
Binary file not shown.
@@ -176,11 +176,11 @@
|
|||||||
"item": "문구 (● 홍보안내 ●)/① 글씨체 (돋움)"
|
"item": "문구 (● 홍보안내 ●)/① 글씨체 (돋움)"
|
||||||
},
|
},
|
||||||
"16": {
|
"16": {
|
||||||
"path": "//PARASHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/ancestor::P/@ParaShape]/@Align",
|
"path": "//PARASHAPE[@Id=//CHAR[contains(text(),'{match_str}')]/ancestor::P/@ParaShape]/@Align",
|
||||||
"searchValue": "홍보안내",
|
"match_str": "홍보안내",
|
||||||
"value": "Center",
|
"value": "Center",
|
||||||
"points": 1,
|
"points": 1,
|
||||||
"category": "OneAnswer",
|
"category": "Align",
|
||||||
"item": "문구 (● 홍보안내 ●)/② 정렬 (가운데 정렬)"
|
"item": "문구 (● 홍보안내 ●)/② 정렬 (가운데 정렬)"
|
||||||
},
|
},
|
||||||
"17": {
|
"17": {
|
||||||
|
|||||||
@@ -169,18 +169,18 @@
|
|||||||
},
|
},
|
||||||
"15": {
|
"15": {
|
||||||
"path": "//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape",
|
"path": "//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape",
|
||||||
"searchValue": "★ 사업안내 ★",
|
"searchValue": "사업안내",
|
||||||
"value": "돋움",
|
"value": "돋움",
|
||||||
"points": 1,
|
"points": 1,
|
||||||
"category": "FontName",
|
"category": "FontName",
|
||||||
"item": "문구 (★ 사업안내 ★)/① 글씨체 (돋움)"
|
"item": "문구 (★ 사업안내 ★)/① 글씨체 (돋움)"
|
||||||
},
|
},
|
||||||
"16": {
|
"16": {
|
||||||
"path": "//PARASHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/ancestor::P/@ParaShape]/@Align",
|
"path": "//PARASHAPE[@Id=//CHAR[contains(text(),'{match_str}')]/ancestor::P/@ParaShape]/@Align",
|
||||||
"searchValue": "★ 사업안내 ★",
|
"match_str": "사업안내",
|
||||||
"value": "Center",
|
"value": "Center",
|
||||||
"points": 1,
|
"points": 1,
|
||||||
"category": "OneAnswer",
|
"category": "Align",
|
||||||
"item": "문구 (★ 사업안내 ★)/② 정렬 (가운데 정렬)"
|
"item": "문구 (★ 사업안내 ★)/② 정렬 (가운데 정렬)"
|
||||||
},
|
},
|
||||||
"17": {
|
"17": {
|
||||||
|
|||||||
@@ -176,11 +176,11 @@
|
|||||||
"item": "문구 (◈ 행사안내 ◈)/① 글씨체 (돋움)"
|
"item": "문구 (◈ 행사안내 ◈)/① 글씨체 (돋움)"
|
||||||
},
|
},
|
||||||
"16": {
|
"16": {
|
||||||
"path": "//PARASHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/ancestor::P/@ParaShape]/@Align",
|
"path": "//PARASHAPE[@Id=//CHAR[contains(text(),'{match_str}')]/ancestor::P/@ParaShape]/@Align",
|
||||||
"searchValue": "행사안내",
|
"match_str": "행사안내",
|
||||||
"value": "Center",
|
"value": "Center",
|
||||||
"points": 1,
|
"points": 1,
|
||||||
"category": "OneAnswer",
|
"category": "Align",
|
||||||
"item": "문구 (◈ 행사안내 ◈)/② 정렬 (가운데 정렬)"
|
"item": "문구 (◈ 행사안내 ◈)/② 정렬 (가운데 정렬)"
|
||||||
},
|
},
|
||||||
"17": {
|
"17": {
|
||||||
|
|||||||
@@ -176,11 +176,11 @@
|
|||||||
"item": "문구 (◇ 행사안내 ◇)/① 글씨체 (돋움)"
|
"item": "문구 (◇ 행사안내 ◇)/① 글씨체 (돋움)"
|
||||||
},
|
},
|
||||||
"16": {
|
"16": {
|
||||||
"path": "//PARASHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/ancestor::P/@ParaShape]/@Align",
|
"path": "//PARASHAPE[@Id=//CHAR[contains(text(),'{match_str}')]/ancestor::P/@ParaShape]/@Align",
|
||||||
"searchValue": "행사안내",
|
"match_str": "행사안내",
|
||||||
"value": "Center",
|
"value": "Center",
|
||||||
"points": 1,
|
"points": 1,
|
||||||
"category": "OneAnswer",
|
"category": "Align",
|
||||||
"item": "문구 (◇ 행사안내 ◇)/② 정렬 (가운데 정렬)"
|
"item": "문구 (◇ 행사안내 ◇)/② 정렬 (가운데 정렬)"
|
||||||
},
|
},
|
||||||
"17": {
|
"17": {
|
||||||
|
|||||||
@@ -73,9 +73,12 @@ class XMLScorer:
|
|||||||
if xml_type == "hml":
|
if xml_type == "hml":
|
||||||
all_text = root.xpath(f"//BODY//text() | //TEXTART/@Text") if root is not None else []
|
all_text = root.xpath(f"//BODY//text() | //TEXTART/@Text") if root is not None else []
|
||||||
|
|
||||||
if xml_type == "chart":
|
elif xml_type == "chart":
|
||||||
all_text = root.xpath(f"//c:chart//text()", namespaces=namespaces) if root is not None else []
|
all_text = root.xpath(f"//c:chart//text()", namespaces=namespaces) if root is not None else []
|
||||||
|
|
||||||
|
else:
|
||||||
|
all_text = []
|
||||||
|
|
||||||
# 유사도 비교
|
# 유사도 비교
|
||||||
max_score = 0
|
max_score = 0
|
||||||
similar_text = ''
|
similar_text = ''
|
||||||
@@ -368,6 +371,22 @@ class XMLScorer:
|
|||||||
|
|
||||||
self.evaluate_answer(scoring, user_answer, right_answer, points)
|
self.evaluate_answer(scoring, user_answer, right_answer, points)
|
||||||
|
|
||||||
|
# [1-16] ◈ 행사안내 ◈
|
||||||
|
# 특수문자와 글자의 속성이 같고 문서 내부에 '행사안내'와 같은 문자가 있을 경우
|
||||||
|
# 유사도 문제로 의도치 않은 부분의 속성이 채점되는것을 방지하고자
|
||||||
|
# 해당 문자를 포함하는 모든 문단의 속성을 판단해
|
||||||
|
# 정렬값이 정답과 일치하는 경우 정답으로 채점
|
||||||
|
elif (category or "") == "Align":
|
||||||
|
match_str = criterion.get('match_str', None)
|
||||||
|
|
||||||
|
xpath = xpath.replace('{match_str}', match_str)
|
||||||
|
items = root.xpath(xpath)
|
||||||
|
|
||||||
|
for item in items:
|
||||||
|
user_answer = item
|
||||||
|
self.evaluate_answer(scoring, user_answer, right_answer, points)
|
||||||
|
if scoring['points'] > 0:
|
||||||
|
break
|
||||||
|
|
||||||
# 정답이 하나인 경우
|
# 정답이 하나인 경우
|
||||||
# elif (category or "") == "OneAnswer":
|
# elif (category or "") == "OneAnswer":
|
||||||
@@ -1230,10 +1249,10 @@ def main():
|
|||||||
|
|
||||||
# 채점하고자 하는 유형은 주석 해제
|
# 채점하고자 하는 유형은 주석 해제
|
||||||
exam_types = [
|
exam_types = [
|
||||||
'A',
|
# 'A',
|
||||||
'B',
|
# 'B',
|
||||||
'C',
|
'C',
|
||||||
'D',
|
# 'D',
|
||||||
]
|
]
|
||||||
|
|
||||||
test_mode = False
|
test_mode = False
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
[{"kind":2,"language":"xpath","value":"//a:t[text()='클라우드 보안투자']/ancestor::a:r//a:ea/@typeface"},{"kind":2,"language":"xpath","value":"boolean(//FONTFACE[@Lang='Hangul']/FONT[@Id=//CHARSHAPE/FONTID/@Hangul]/@Name='바탕' and //CHARSHAPE/@Height='1000' and //PARASHAPE/PARAMARGIN/@LineSpacing='160' and //PARASHAPE/@Align='Justify')"},{"kind":2,"language":"xpath","value":"//FONTFACE[@Lang='Hangul']/FONT[@Id=//CHARSHAPE/FONTID/@Hangul]/@Name='바탕'"},{"kind":2,"language":"xpath","value":"//FONTFACE[@Lang='Hangul']/FONT[@Id=//CHARSHAPE/FONTID/@Hangul]/@Name='바탕' and //CHARSHAPE/@Height='1000' and //PARASHAPE/PARAMARGIN/@LineSpacing='160' and //PARASHAPE/@Align='Justify')"},{"kind":2,"language":"xpath","value":"//TEXT[CHAR[text()='태']]/@CharShape"},{"kind":2,"language":"xpath","value":"//PICTURE/IMAGE/@BinItem"},{"kind":2,"language":"xpath","value":"//BINITEM[@BinData=//PICTURE/IMAGE/@BinItem][@Format=\"JPG\"]"},{"kind":2,"language":"xpath","value":"//P[.//FIELDBEGIN[@Type='Hyperlink'] and .//CHAR[contains(., 'http')]]"},{"kind":2,"language":"xpath","value":"//PICTURE[./IMAGE[@BinItem=//BINITEM[@Format='JPG']/@BinData]]/SHAPEOBJECT/POSITION[not(@TreatAsChar='true')]/@HorzOffset"},{"kind":2,"language":"xpath","value":"//CHAR[contains(string(.), '※')]/descendant-or-self::text()"},{"kind":2,"language":"xpath","value":"//P[@ParaShape=\"17\"]/TEXT[@CharShape='7']//CHAR[string(.)]"},{"kind":2,"language":"xpath","value":"//CHAR[contains(string(.), '기타')]/text()"}]
|
[{"kind":2,"language":"xpath","value":"//a:t[text()='클라우드 보안투자']/ancestor::a:r//a:ea/@typeface"},{"kind":2,"language":"xpath","value":"boolean(//FONTFACE[@Lang='Hangul']/FONT[@Id=//CHARSHAPE/FONTID/@Hangul]/@Name='바탕' and //CHARSHAPE/@Height='1000' and //PARASHAPE/PARAMARGIN/@LineSpacing='160' and //PARASHAPE/@Align='Justify')"},{"kind":2,"language":"xpath","value":"//FONTFACE[@Lang='Hangul']/FONT[@Id=//CHARSHAPE/FONTID/@Hangul]/@Name='바탕'"},{"kind":2,"language":"xpath","value":"//FONTFACE[@Lang='Hangul']/FONT[@Id=//CHARSHAPE/FONTID/@Hangul]/@Name='바탕' and //CHARSHAPE/@Height='1000' and //PARASHAPE/PARAMARGIN/@LineSpacing='160' and //PARASHAPE/@Align='Justify')"},{"kind":2,"language":"xpath","value":"//PARASHAPE[@Id=//CHAR[contains(text(),'사업안내')]/ancestor::P/@ParaShape]/@Align"},{"kind":2,"language":"xpath","value":"//CHAR[contains(text(),'행사안내')]"},{"kind":2,"language":"xpath","value":"//BINITEM[@BinData=//PICTURE/IMAGE/@BinItem][@Format=\"JPG\"]"},{"kind":2,"language":"xpath","value":"//P[.//FIELDBEGIN[@Type='Hyperlink'] and .//CHAR[contains(., 'http')]]"},{"kind":2,"language":"xpath","value":"//PICTURE[./IMAGE[@BinItem=//BINITEM[@Format='JPG']/@BinData]]/SHAPEOBJECT/POSITION[not(@TreatAsChar='true')]/@HorzOffset"},{"kind":2,"language":"xpath","value":"//CHAR[contains(string(.), '※')]/descendant-or-self::text()"},{"kind":2,"language":"xpath","value":"//P[@ParaShape=\"17\"]/TEXT[@CharShape='7']//CHAR[string(.)]"},{"kind":2,"language":"xpath","value":"//CHAR[contains(string(.), '기타')]/text()"}]
|
||||||
Reference in New Issue
Block a user