Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[MRC 평가] 평가 스크립트 내 정규 표현식 #10

Open
silencio94 opened this issue Sep 24, 2023 · 0 comments
Open

[MRC 평가] 평가 스크립트 내 정규 표현식 #10

silencio94 opened this issue Sep 24, 2023 · 0 comments

Comments

@silencio94
Copy link

Abstract(요약) 🔥

MRC 평가에서 텍스트 내의 구두점들을 제거하기 위해서 쓰여진 정규 표현식이 적절치 않습니다.

아래 코드에서 정규표현식 r"['"《》<>〈〉]()\‘\’"는 의미상
'"《》<>〈〉 중 하나로 시작하고 ()\‘\’ 로 끝나는 텍스트
인데 정답 텍스트 중에는 이런 텍스트가 없어서 정규표현식이 아무 역할을 하지 않고 있습니다.
결과적으로 line 22 는 lowercasing 만 수행하고 있습니다.

한편 이 정규표현식이 커버해 줄 수 있는 케이스가 적진 않아서 적절한 평가를 위해 수정하면 좋을 듯 합니다.

결론적으로, 코드 맥락 상 정규표현식이 r"['"《》<>〈〉()‘’]" 이렇게 바뀌는게 맞는 것 같습니다.

NORMALIZE_CHAR_PATTERN = re.compile(r"[\'\"《》<>〈〉]\(\)\‘\’")
PUNCTUATION_SET = set(string.punctuation)
KLUE_MRC_NUM_QUESTION_TYPE = 3
def normalize_answer_for_klue_mrc(answer: str) -> str:
"""Excludes useless characters in answer string.
Args:
answer: The raw text of answer.
Returns:
The normalized answer.
"""
answer = NORMALIZE_CHAR_PATTERN.sub(" ", answer.lower())
answer = "".join(c for c in answer if c not in PUNCTUATION_SET)
answer = " ".join(answer.split())
return answer

How to Reproduce(재현 방법) 🤔

import re
    
NORMALIZE_CHAR_PATTERN = re.compile(r"[\'\"《》<>〈〉]\(\)\‘\’")

text = "\'\"《》<>〈〉‘’()"
print(f"before:\n{text}")

text = NORMALIZE_CHAR_PATTERN.sub(" ", text) # .lower()
print(f"after:\n{text}")

실행결과:

before:
'"《》<>〈〉‘’()
after:
'"《》<>〈〉‘’()

How to solve (어떻게 해결할 수 있을까요) 🙋‍♀

😭

line 8: NORMALIZE_CHAR_PATTERN = re.compile(r"[\'\"《》<>〈〉]\(\)\‘\’")

🥰

line 8: NORMALIZE_CHAR_PATTERN = re.compile(r"[\'\"《》<>〈〉()‘’]")
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant