[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": "문구 (● 홍보안내 ●)/① 글씨체 (돋움)"
|
||||
},
|
||||
"16": {
|
||||
"path": "//PARASHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/ancestor::P/@ParaShape]/@Align",
|
||||
"searchValue": "홍보안내",
|
||||
"path": "//PARASHAPE[@Id=//CHAR[contains(text(),'{match_str}')]/ancestor::P/@ParaShape]/@Align",
|
||||
"match_str": "홍보안내",
|
||||
"value": "Center",
|
||||
"points": 1,
|
||||
"category": "OneAnswer",
|
||||
"category": "Align",
|
||||
"item": "문구 (● 홍보안내 ●)/② 정렬 (가운데 정렬)"
|
||||
},
|
||||
"17": {
|
||||
|
||||
@@ -169,18 +169,18 @@
|
||||
},
|
||||
"15": {
|
||||
"path": "//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape",
|
||||
"searchValue": "★ 사업안내 ★",
|
||||
"searchValue": "사업안내",
|
||||
"value": "돋움",
|
||||
"points": 1,
|
||||
"category": "FontName",
|
||||
"item": "문구 (★ 사업안내 ★)/① 글씨체 (돋움)"
|
||||
},
|
||||
"16": {
|
||||
"path": "//PARASHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/ancestor::P/@ParaShape]/@Align",
|
||||
"searchValue": "★ 사업안내 ★",
|
||||
"path": "//PARASHAPE[@Id=//CHAR[contains(text(),'{match_str}')]/ancestor::P/@ParaShape]/@Align",
|
||||
"match_str": "사업안내",
|
||||
"value": "Center",
|
||||
"points": 1,
|
||||
"category": "OneAnswer",
|
||||
"category": "Align",
|
||||
"item": "문구 (★ 사업안내 ★)/② 정렬 (가운데 정렬)"
|
||||
},
|
||||
"17": {
|
||||
|
||||
@@ -176,11 +176,11 @@
|
||||
"item": "문구 (◈ 행사안내 ◈)/① 글씨체 (돋움)"
|
||||
},
|
||||
"16": {
|
||||
"path": "//PARASHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/ancestor::P/@ParaShape]/@Align",
|
||||
"searchValue": "행사안내",
|
||||
"path": "//PARASHAPE[@Id=//CHAR[contains(text(),'{match_str}')]/ancestor::P/@ParaShape]/@Align",
|
||||
"match_str": "행사안내",
|
||||
"value": "Center",
|
||||
"points": 1,
|
||||
"category": "OneAnswer",
|
||||
"category": "Align",
|
||||
"item": "문구 (◈ 행사안내 ◈)/② 정렬 (가운데 정렬)"
|
||||
},
|
||||
"17": {
|
||||
|
||||
@@ -176,11 +176,11 @@
|
||||
"item": "문구 (◇ 행사안내 ◇)/① 글씨체 (돋움)"
|
||||
},
|
||||
"16": {
|
||||
"path": "//PARASHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/ancestor::P/@ParaShape]/@Align",
|
||||
"searchValue": "행사안내",
|
||||
"path": "//PARASHAPE[@Id=//CHAR[contains(text(),'{match_str}')]/ancestor::P/@ParaShape]/@Align",
|
||||
"match_str": "행사안내",
|
||||
"value": "Center",
|
||||
"points": 1,
|
||||
"category": "OneAnswer",
|
||||
"category": "Align",
|
||||
"item": "문구 (◇ 행사안내 ◇)/② 정렬 (가운데 정렬)"
|
||||
},
|
||||
"17": {
|
||||
|
||||
@@ -73,9 +73,12 @@ class XMLScorer:
|
||||
if xml_type == "hml":
|
||||
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 []
|
||||
|
||||
else:
|
||||
all_text = []
|
||||
|
||||
# 유사도 비교
|
||||
max_score = 0
|
||||
similar_text = ''
|
||||
@@ -368,6 +371,22 @@ class XMLScorer:
|
||||
|
||||
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":
|
||||
@@ -1230,10 +1249,10 @@ def main():
|
||||
|
||||
# 채점하고자 하는 유형은 주석 해제
|
||||
exam_types = [
|
||||
'A',
|
||||
'B',
|
||||
# 'A',
|
||||
# 'B',
|
||||
'C',
|
||||
'D',
|
||||
# 'D',
|
||||
]
|
||||
|
||||
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