상세 컨텐츠

본문 제목

CERMINE (1.14-snapshot)이용 PDF논문 추출 테스트

programing/기계학습

by ZelKun 2019. 1. 29. 15:25

본문

반응형


출처: http://cermine.ceon.pl

 

전혀 관심이 없지만...

좀 해봐달라는 분이 계셔서 테스트를 진행해봄 소스를 수정하거나 하질 않았지만

테스트 정도는 해볼수 있으니…

 

http://cermine.ceon.pl 에서도 바로 실행해볼 수 있다

 

소스를 살펴보면 업로드한 PDF를 저장하지도 않고, Thread에서 가지고 있다가

프로젝트를 종료하면 사라진다...

PDF 저작권문제가 있어서 그렇다고 하는데 잘모르겠다

 

논문 메타 추출 프로그램으로 CERMINE논문만봐도 어느 프로그램보다 추출범위도 높은데…

GNU라이센스라서 수정하면 소스공개를 해야하니…. 활용은 적은듯

유사 프로그램으로 아파치라이센스인 GROBID도 있고...

특히 굵게 표시한 것은 GPL의 주요 특징인 '전염성'에 관한 부분이다.

  1. 컴퓨터 프로그램을 어떠한 목적으로든지 사용할 수 있다. 다만 법으로 제한하는 행위는 할 수 없다.
  2. 컴퓨터 프로그램의 소스코드를 용도에 따라 변경할 수 있다.(개작 가능)
  1. 컴퓨터 프로그램의 실행 복사본은 언제나 프로그램의 소스 코드와 함께 판매하거나 소스 코드를 무료로 배포해야 한다.(원본 배포 전염성)
  2. 변경된 컴퓨터 프로그램 역시 프로그램의 소스 코드를 반드시 공개 배포해야 한다.(파생물 배포 전염성)
  3. 변경된 컴퓨터 프로그램 역시 반드시 똑같은 라이선스를 취해야 한다. 즉 GPL 라이선스를 적용해야 한다.
    (파생물 라이선스 전염성)

출처: https://namu.wiki/w/GNU%20%EC%9D%BC%EB%B0%98%20%EA%B3%B5%EC%A4%91%20%EC%82%AC%EC%9A%A9%20%ED%97%88%EA%B0%80%EC%84%9C

 

뭐 힘들개 수정했는데 공개해야한다니 국내에서는 쓰는사람이 없을듯(해도 공개안할듯)

 

논문: https://doi.org/10.1007/s10032-015-0249-8

Github: https://github.com/CeON/CERMINE

Version: 1.14-SNAPSHOT

 

Text PDF 로 작성된 논문을 읽고 메타를 추출해주는 프로그램

https://github.com/CeON/CERMINE/blob/master/README.md 에 자세한 내용이 기술 되있음

GITHUB에서 소스를 다운받으면 3개의 하위 프로젝트를 포함하고있다

  • CERMINE-IMPL
  • CERMINE-TOOLS
  • CERMINE-WEB

 

심플하게

cermine-web을 구동하고 웹화면에서 바로 ContentExtractor를 이용하면

JATS NLM(이게 맞는 용어인가는 안찾아봄)으로 추출이된다

그러니 jats.xsl만 있으면 html로 컨버팅하여 웹에서 바로 보여줄 수 있다

 

근데 어딜가나 한글이 문제

데이터 추출한걸보니 참고문헌이 한글로 작성되있으면

참고문헌이 추출안된다, 내용도 안맞는 부분이 있을지도(확인안함)

뭐 그런거 개선하라고 기계학습을 언급하고 사용법을 넣어놨겠지만

 

 

기계학습

https://github.com/CeON/CERMINE/blob/master/TRAINING.md 에 기계학습에 대한 내용이 기술되있다

  • ZONE

PDF 읽어 모델을 만드는듯

명령어 : $ java -cp cermine.jar pl.edu.icm.cermine.ContentExtractor -path path/to/directory/with/pdfs -outputs trueviz

추출할 PDF파일 위치를 -path 넘기면 되는듯

 

  • Reference parsing

참고문헌 원형을 기계가 학습할 있도록 XML 학습 데이터셋을 만들고 기계학습데이터로 변경하는듯

 

* 학습 데이터셋

학습할 참고문헌을 아래XML 같이 구성하고 이를 CERMINE에서 기계학습데이터로 변경

근데 구성할것도 없이 영문이면 잘 뽑히는듯함... 한글로 구성해서 테스트를 해봐야하는데

귀찮..

<refs>

  <mixed-citation>...</mixed-citation>

  <mixed-citation>...</mixed-citation>

  ...

</refs>

mixed-citation 구성은 아래와 같이 참고문헌 원형을 XML 구분해 줌

9. Karageorgiou V, Kaplan D. Porosity of 3D biomaterial scaffolds and osteogenesis. Biomaterials. 2005; 26(27):5474-91.

<mixed-citation>9.

  <string-name><surname>Karageorgiou</surname> <given-names>V</given-names></string-name>,

  <string-name><surname>Kaplan</surname> <given-names>D.</given-names></string-name>

  <article-title>Porosity of 3D biomaterial scaffolds and osteogenesis</article-title>.

  <source>Biomaterials</source>.

  <year>2005</year>;

  <volume>26</volume>

  (<issue>27</issue>):

  <fpage>5474</fpage>- <lpage>91</lpage>.

</mixed-citation>

 

만들어진 XML파일을 CERMINE에서 변경하기 위한 명령어

$ java -cp cermine.jar pl.edu.icm.cermine.bibref.MalletTrainingFileGenerator input/path/to/dataset output/path/to/GRMM/input output/path/to/terms.txt output/path/to/journals.txt output/path/to/surnames.txt output/path/to/institutions.txt

버전 차이가 있는듯 . 1.14-SNAPSHOT 에는 인자가 5개인데 이전에는 3개…

Jar파일을 1.13버전으로 받았는데 인자로 넘기는 부분이 하드코딩되있..는걸 후에 알아서 분노함…

디컴파일러의 중요성...

 

학습데이터를 만들면 기계학습을 해야하는듯 한데 보면 GRMM을 사용하는 예제가 나와있다

근데 기계학습을 전혀 해본적이 없어서 결과물을가지고 뭘해야하는지도 모른다는게 흠이긴 하지만..

 

참고로 다운받아서 build 시키면 charset 경로를 뿜어

해당 파일의 인코딩을 알수없어(UTF-8 아님...) 원래 문자로 파악되는 부분을 웹에서 찾아 수정함

맞는지는 모르겠지만 일단 사각특수문자나 ? 표기되지는 않으니 그냥 쓰기로 함

- TUI.java

private static String CAPS = "[A-Z좼顧愍훠籠한堀]";

private static String LOW = "[a-z殲任啣勖采塢錠]";

private static String CAPSNUM = "[A-Z좼顧愍훠籠한堀0-9]";

private static String ALPHA = "[A-Z좼顧愍훠籠한堀a-z殲任啣勖采塢錠]";

private static String ALPHANUM = "[A-Z좼顧愍훠籠한堀a-z殲任啣勖采塢錠0-9]";

 

근데 학습데이터(영문)을 만들고 돌려봤는데 JAVA HEAP 에러가 나면서 죽는다

컴터 사양이 못받쳐주나보다

 

참고


반응형

댓글 영역