SlideShare a Scribd company logo
논문 검색
프로젝트
201711032
고영훈
IEEE Xplore 크롤링
• Ieeeexplor.ieee.org/document/<number>
• number를 1부터 100000까지 크롤링 시도
• 논문에 관한 정보를 크롤링
• Abstract(요약)
• DOI(논문 고유 식별 번호)
• 저자
• 참고문헌
• 인용
• Keywords
• Etc..
Environment
• JCloud Instance
• ElasticSearch
• BeautifulSoup으로 정적 크롤링
• ElasticSearch API로 문서 생성
1부터 100000까지 크롤링
문서 크롤링 후 json으로 변환
이미 생성한 인덱스로 json 문서 저장
IEEE Xplore 크롤링
총 58.1MB
18207개의 문서 크롤링
간단한 query 테스트
117개의 결과 문서
Automatic Query expansion
• ElasticSearch에서 질의 확장은 어떻게 할 수 있을까?
• query time에 synonyms(동의어)를 활용한 질의 확장을 해보자
• 확장된 질의와 함께 검색
• 다행히 ElasticSearch에서 동의어를 지원을 해준다
query: doctor
query: doctor
query: phd
automatic query expansion의 예
analyzer 테스트
기존 방식
동의어도 포함해서 질의
이렇게 만들고 싶다!!
synonym_graph_filter
• 동의어를 그래프화하는 필터
• 수업에서 배운 시소러스 방식으로 동의어 사전을 정의
• Ubuntu 기준으로
• /etc/elasticsearch에 analysis 디렉토리 생성 후
• synonym.txt 파일 생성
• cpu, 중앙처리장치, processor를 동의어로
• doctor, phd를 동의어로 설정
/etc/elasticsearch/analysis/synonym.txt
synonym_graph_filter
• 우리가 정의한 시소러스를 사용할 수 있게 Index의 setting 수정
• Index를 close 해주고 API를 보내야 적용이 됐다
search_synony이라는 analyzer 사용
공백 문자로 token을 구분
filter는 아래에 정의
filter로 graph_synonym을 사용하고
경로는 아까 추가한 파일 경로
mapping 수정
• search_synonyms를 사용할 수 있게 수정
실험 1
• query: “중앙처리장치”를 수행
• Rank1
• Dynamic programming processor 관련 논문
• Rank2
• IEEE Transactions on Instrumentation and Measurement 제목의 논문
• 키워드란에 Digital signal processors가 존재
• cpu와 processor를 동의어로 처리했는데 Relevance가 떨어지는 논문이 rank2를 차지
• Rank3
• IEEE Transactions on Circuits and Systems 제목의 논문
• 이것도 cpu와 관련 없음
• …
실험 1
동의어: cpu, processor, 중앙처리장치
Query: 중앙처리장치
Computer science와 관련없는
논문은 오답으로 처리
Signal
processor
Signal
processor
image
processor
parallel
processor
cpu cpu cpu cpu cpu cpu
Recall 0.0 0.0 0.0 0.14 0.28 0.42 0.56 0.70 0.84 1.0
Precision 0.0 0.0 0.0 0.25 0.4 0.5 0.57 0.625 0.66 0.7
AP = (0.25 + 0.4 + 0.5 + 0.57 + 0.625 + 0.66 + 0.7) / 7 = 0.529
실험 2
동의어: x
Query: cpu
Computer science와 관련없는
논문은 오답으로 처리
Signal
processor
Signal
processor
image
processor
parallel
processor
cpu cpu cpu cpu cpu cpu
Recall 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0
Precision 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0
AP = (1 + 1 + 1 + 1 + 1 + 1 + 1) / 7 = 1
결론
• 영어 논문만 존재하는 상태라서 중앙처리장치 동의어는 사실상 아무 의미도 없음
• processor라는 동의어는 여러 분야에서 사용하는 단어기 때문에 precision에 영향을 줌
• 즉, 동의어를 잘못 만들면 precision에 영향을 준다
결론
• 질의 확장이라고 하면 query를 입력하고 추가 제안된 확장 query를 선택하는 걸 생각했는데
• 이 방식은 사전에 동의어를 모두 포함시켜서 검색하기 때문에 선택의 폭이 줄어듦
• 동의어를 잘 정의해야 관련된 결과를 반환 받을 수 있다
• 제안된 동의어 중에서 내가 선택할 수 있으면 좋을 것 같은데?
• Semi-automatic query expansion
semi-automatic Query expansion 구현
• Query expansion을 Bash script를 활용해서 CLI로 직접 구현해보자
• 작동 방식
1. 사용자 query 입력
2. Query에 대한 동의어를 반환해주어 기존 query로 검색할지, 확장된 query로 검색할지 선택
3. 결과 문서 반환
소스 코드 1
소스 코드 2
실험 1
• query: { storage }
1. Query 입력
2. 동의어 입력
3. 결과 확인
실험 2
• 동의어로 제안된 query인 “storage device” 입력
• query: { storage device }
결론
• 장점
• storage로 검색했을 때보다, 확장 query인 storage device로 입력했을 때 더욱
구체적인 결과를 반환
• 단점
• 동의어 방식의 query expansion은 직접 동의어를 다 작성해줘야하기 때문에 시
소러스 구축이 어렵다
• 웹의 GUI 방식으로 구현하면 좋겠지만 시간상 CLI로 구현
감사합니다
소스코드
https://github.com/younghoongo/simple-query-expansion

More Related Content

PDF
Query suggestions as summarization in exploratory search
PDF
1. boolean 검색
PDF
파이썬을 활용한 자연어분석 기초
PPTX
Clou(python searh system)
PDF
파이썬을 활용한 자연어 분석 - 2차
PDF
응용서비스에 따른 인공지능기술 연구이슈
PDF
Hadoop 기반 문서 검색
PDF
전문 검색 기술
Query suggestions as summarization in exploratory search
1. boolean 검색
파이썬을 활용한 자연어분석 기초
Clou(python searh system)
파이썬을 활용한 자연어 분석 - 2차
응용서비스에 따른 인공지능기술 연구이슈
Hadoop 기반 문서 검색
전문 검색 기술

Similar to Elasticsearch와 Bash script를 활용한 논문 검색 (20)

PDF
파이썬을 활용한 자연어 분석
PDF
<Little Big Data #1> 한국어 채팅 데이터로 머신러닝 하기
PDF
[싸이그램즈 2018] 텍스트 데이터 전처리로 시작하는 NLP
PPTX
Nlp study1
PDF
딥러닝 기반 자연어 언어모델 BERT
PPTX
엘라스틱서치 분석 이해하기 20160623
PDF
Information Retrieval - Modeling
PDF
Elasticsearch server Chapter5
PDF
딥러닝 기반의 자연어처리 최근 연구 동향
PDF
메이크챗봇 자연어기초
PPTX
파이썬 크롤링 모듈
PPTX
제5장 사전파일
PDF
제1장 정보검색소개
PDF
PHP로 Slack Bot 만들기
PDF
Efficient and effective passage search via contextualized late interaction ov...
PDF
검색엔진에 적용된 딥러닝 모델 방법론
PDF
Soma search
PDF
서울 R&D 캠퍼스 자연어 수업자료
PPTX
엘라스틱서치 이해하기 20160613
PPTX
쿼리로그로부터 주제별 키워드 수집 방안 민병국-20131213
파이썬을 활용한 자연어 분석
<Little Big Data #1> 한국어 채팅 데이터로 머신러닝 하기
[싸이그램즈 2018] 텍스트 데이터 전처리로 시작하는 NLP
Nlp study1
딥러닝 기반 자연어 언어모델 BERT
엘라스틱서치 분석 이해하기 20160623
Information Retrieval - Modeling
Elasticsearch server Chapter5
딥러닝 기반의 자연어처리 최근 연구 동향
메이크챗봇 자연어기초
파이썬 크롤링 모듈
제5장 사전파일
제1장 정보검색소개
PHP로 Slack Bot 만들기
Efficient and effective passage search via contextualized late interaction ov...
검색엔진에 적용된 딥러닝 모델 방법론
Soma search
서울 R&D 캠퍼스 자연어 수업자료
엘라스틱서치 이해하기 20160613
쿼리로그로부터 주제별 키워드 수집 방안 민병국-20131213
Ad

Elasticsearch와 Bash script를 활용한 논문 검색

  • 2. IEEE Xplore 크롤링 • Ieeeexplor.ieee.org/document/<number> • number를 1부터 100000까지 크롤링 시도 • 논문에 관한 정보를 크롤링 • Abstract(요약) • DOI(논문 고유 식별 번호) • 저자 • 참고문헌 • 인용 • Keywords • Etc..
  • 3. Environment • JCloud Instance • ElasticSearch • BeautifulSoup으로 정적 크롤링 • ElasticSearch API로 문서 생성 1부터 100000까지 크롤링 문서 크롤링 후 json으로 변환 이미 생성한 인덱스로 json 문서 저장
  • 4. IEEE Xplore 크롤링 총 58.1MB 18207개의 문서 크롤링
  • 6. Automatic Query expansion • ElasticSearch에서 질의 확장은 어떻게 할 수 있을까? • query time에 synonyms(동의어)를 활용한 질의 확장을 해보자 • 확장된 질의와 함께 검색 • 다행히 ElasticSearch에서 동의어를 지원을 해준다 query: doctor query: doctor query: phd automatic query expansion의 예
  • 7. analyzer 테스트 기존 방식 동의어도 포함해서 질의 이렇게 만들고 싶다!!
  • 8. synonym_graph_filter • 동의어를 그래프화하는 필터 • 수업에서 배운 시소러스 방식으로 동의어 사전을 정의 • Ubuntu 기준으로 • /etc/elasticsearch에 analysis 디렉토리 생성 후 • synonym.txt 파일 생성 • cpu, 중앙처리장치, processor를 동의어로 • doctor, phd를 동의어로 설정 /etc/elasticsearch/analysis/synonym.txt
  • 9. synonym_graph_filter • 우리가 정의한 시소러스를 사용할 수 있게 Index의 setting 수정 • Index를 close 해주고 API를 보내야 적용이 됐다 search_synony이라는 analyzer 사용 공백 문자로 token을 구분 filter는 아래에 정의 filter로 graph_synonym을 사용하고 경로는 아까 추가한 파일 경로
  • 10. mapping 수정 • search_synonyms를 사용할 수 있게 수정
  • 11. 실험 1 • query: “중앙처리장치”를 수행 • Rank1 • Dynamic programming processor 관련 논문 • Rank2 • IEEE Transactions on Instrumentation and Measurement 제목의 논문 • 키워드란에 Digital signal processors가 존재 • cpu와 processor를 동의어로 처리했는데 Relevance가 떨어지는 논문이 rank2를 차지 • Rank3 • IEEE Transactions on Circuits and Systems 제목의 논문 • 이것도 cpu와 관련 없음 • …
  • 12. 실험 1 동의어: cpu, processor, 중앙처리장치 Query: 중앙처리장치 Computer science와 관련없는 논문은 오답으로 처리 Signal processor Signal processor image processor parallel processor cpu cpu cpu cpu cpu cpu Recall 0.0 0.0 0.0 0.14 0.28 0.42 0.56 0.70 0.84 1.0 Precision 0.0 0.0 0.0 0.25 0.4 0.5 0.57 0.625 0.66 0.7 AP = (0.25 + 0.4 + 0.5 + 0.57 + 0.625 + 0.66 + 0.7) / 7 = 0.529
  • 13. 실험 2 동의어: x Query: cpu Computer science와 관련없는 논문은 오답으로 처리 Signal processor Signal processor image processor parallel processor cpu cpu cpu cpu cpu cpu Recall 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 Precision 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 AP = (1 + 1 + 1 + 1 + 1 + 1 + 1) / 7 = 1
  • 14. 결론 • 영어 논문만 존재하는 상태라서 중앙처리장치 동의어는 사실상 아무 의미도 없음 • processor라는 동의어는 여러 분야에서 사용하는 단어기 때문에 precision에 영향을 줌 • 즉, 동의어를 잘못 만들면 precision에 영향을 준다
  • 15. 결론 • 질의 확장이라고 하면 query를 입력하고 추가 제안된 확장 query를 선택하는 걸 생각했는데 • 이 방식은 사전에 동의어를 모두 포함시켜서 검색하기 때문에 선택의 폭이 줄어듦 • 동의어를 잘 정의해야 관련된 결과를 반환 받을 수 있다 • 제안된 동의어 중에서 내가 선택할 수 있으면 좋을 것 같은데? • Semi-automatic query expansion
  • 16. semi-automatic Query expansion 구현 • Query expansion을 Bash script를 활용해서 CLI로 직접 구현해보자 • 작동 방식 1. 사용자 query 입력 2. Query에 대한 동의어를 반환해주어 기존 query로 검색할지, 확장된 query로 검색할지 선택 3. 결과 문서 반환
  • 19. 실험 1 • query: { storage } 1. Query 입력 2. 동의어 입력 3. 결과 확인
  • 20. 실험 2 • 동의어로 제안된 query인 “storage device” 입력 • query: { storage device }
  • 21. 결론 • 장점 • storage로 검색했을 때보다, 확장 query인 storage device로 입력했을 때 더욱 구체적인 결과를 반환 • 단점 • 동의어 방식의 query expansion은 직접 동의어를 다 작성해줘야하기 때문에 시 소러스 구축이 어렵다 • 웹의 GUI 방식으로 구현하면 좋겠지만 시간상 CLI로 구현