Open Ssunbell opened 1 year ago
최소힙큐를 사용해서 리벤슈타인 거리가 가장 낮은(정확히 일치하는) 정답을 최우선으로 뽑아냄
만약, 리벤슈타인 거리가 동일한 경우:
이 이미지에서 질문과 답은 다음과 같음
정답 후보군에서 뽑은 정답은 두개가 있음
운이 좋게도 질문이 start_idx, end_idx가 빠른 곳에 있어서 정답이지만, 만약 정답이 뒤에 있었다면 잘못된 정답을 채택
question의 핵심 단어와 answer간의 유클리디안 거리를 이용하여 정답들의 가중치를 설정하여 유클리디안 거리가 가장 낮은 정답을 제대로 된 정답이라고 설정
질문은 다음과 같음
여기서 가장 핵심적인 단어는 index
, Retention
, Franchise
임. 따라서 해당되는 단어들을 뽑아냄.
핵심 단어만 뽑아낼 경우 Retention of Franchise
를 뽑아낼 수 없음. 이를 뽑아내기 위해 ngram을 도입하여 bigram, trigram까지 고려하여 해당되는 단어의 위치 정보(bounding box)를 뽑아냄
정답을 기준으로 정답과 핵심 단어간의 위치 정보를 이용하여 거리를 계산하게 되면, 거리가 짧다는 것은 핵심정보와 정답이 가까이에 위치하고 있다는 것을 의미하므로 질문과 가장 가까운 정답일 가능성이 높아짐. 따라서 유클리디안 거리가 가장 짧은 정답을 제대로된 정답으로 선택
레벤슈타인 거리의 바운더리를 몇으로 설정해야 가장 좋은 성능을 보이는지 하이퍼 파라미터 튜닝
DocVQA 데이터셋은 질문하는 사람이 이미 문서 안에 답이 있다는 것을 알고 있기 때문에
질문 구성이 문서 안의 핵심 단어를 포함하고 있는 Bias를 포함하고 있음. 따라서 오히려 이러한 Bias를 이용한 rule base algorithm이 성능을 올릴 수 있음. (즉, 과적합됨)
목표
ocr 결과에서 뽑아낸 단어들 중에서 정답 단어 및 index를 뽑아내는 알고리즘이 너무 단순화되어있음.
return을 보면 match 되는 단어 후보군 중에서 가장 먼저 뽑힌 후보군을 정답으로 채택하므로 해당 후보가 정확히 정답인지 확인할 수 없음. 따라서 다음을 개선