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 문서 저장
6. Automatic Query expansion
• ElasticSearch에서 질의 확장은 어떻게 할 수 있을까?
• query time에 synonyms(동의어)를 활용한 질의 확장을 해보자
• 확장된 질의와 함께 검색
• 다행히 ElasticSearch에서 동의어를 지원을 해준다
query: doctor
query: doctor
query: phd
automatic query expansion의 예
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을 사용하고
경로는 아까 추가한 파일 경로
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로 구현