논문 레퍼런스 추출하기
연구를 하다보면 정말 많은 논문을 읽게 되는데 보통 새로운 분야의 논문을 읽을때 서베이 논문부터 읽어보고 대충 흐름을 파악하고는 한다. 그러다보면 근원이 되는 논문, SOTA 논문 등을 자연스럽게 알게 되고 하나하나 읽어보면서 레퍼런스를 계속해서 추적하게 된다. 근데 그 과정에서 논문을 혼동하는 일이 많이 발생했다. 레퍼런스도 양식이 다양하고 논문 본문에서는 해당 레퍼런스가 어떤 논문인지 정확히 파악할 수가 없어서 내가 이 논문을 읽어봤었는지도 헷갈린다. 또한 같은 주제로도 워낙 다양한 논문이 많다보니까 어떤 논문에서는 서브 주제로 a 논문을 추천하고, 어떤 논문에서는 같은 서브 주제로 b 논문을 추천하고... 그러다보니 어떤 걸 읽어야하는지 너무 혼동이 되서 내가 읽은 논문들이 인용한 논문들을 리스트로 모두 뽑아낼 수 있다면 통계를 내서 상위 논문부터 읽으면 편하지 않을까? 하는 생각을 하게 되었다.
그런데 이것이 생각보다 어려운 일인지 구글에 검색을 해도 내가 원하는 프로그램을 찾을 수가 없었다... google scholar, 아카이브 등에서 레퍼런스를 추출해가는 것에 굉장히 민감한? 모양이다. 그래서 pdf 에서 직접 추출할 수 밖에 없는데 이것이 생각보다 까다로운 일이었다. 해당 주제로 또 다른 논문이 있을 수준...
결국 python 라이브러리에서 레퍼런스를 리스트로 추출할 수 있는 라이브러리를 발견해서 사용해보았는데, 텍스트 기반으로 추출하는 것인지 정확하지는 않았다. 그래도 이것이 어디냐는 마음으로 유용하게 사용해보겠다...
라이브러리 소개
사용결과
전체 텍스트(raw ref), 제목(misc), 연도(year) 의 딕셔너리로 레퍼런스를 추출해준다. 정확도가 높은 편은 아니지만 쓸만한 것 같다. 사용하기 전에 libmagic 관련 에러가 높은 확률로 나올텐데 아래 3가지 방법으로 에러가 해결된다. 알아본 바로는 magic이라는 프로그램 자체가 리눅스 환경에서 python 사용을 쉽게하기 위한 모듈인데, 윈도우 용으로 수정된 모듈이 python-magic-bin 이라고 한다. 추가로 맥에서도 사용해본 결과 맥에서는 사용이 불가능한 것 같다. 메모리 관련 에러가 나오는데 아마 수정이 불가능한 문제인 것 같다. 윈도우에서만 사용하자.
!pip install magic
!pip install libmagic
!pip install python-magic-bin
그 외의 방법
Scholarcy Reference Extraction API
Scholarcy 라는 단체에서 만든 API 인데 refextract 라이브러리와 비슷하게 동작한다. 다양한 형태의 입력, 출력을 지원하기 때문에 해당 API를 사용해도 괜찮아보인다. 화면 구성은 bentoML로 보인다.