Project wordcloud의 극초반 코드.
from Bio import Entrez # 논문 긁어올 때 필요한거 from wordcloud import WordCloud from wordcloud import STOPWORDS import matplotlib.pyplot as plot # Wordcloud 그릴 때 필요한거 Entrez.email = "blackholekun@gmail.com" handle = Entrez.esearch(db="pubmed", term="Arabidopsis[title]", retmax="15") record = Entrez.read(handle) IdList=record['IdList'] # 일차적으로 Pubmed에서 논문을 찾을 수단인 PMID를 입수한다. # 날짜검색이 안돼서 키워드에 '애기장대'가 있는 논문 10개를 찾음. for i in range(len(IdList)): handle = Entrez.esummary(db="pubmed", id=IdList[i], retmode="xml") records = Entrez.parse(handle) title=[] for record in records: title.append(record['Title']) # 타이틀 뽑았다. # wordcloud에서 뺄 단어들(접속사 이런거) font_path = '/usr/share/fonts/truetype/nanum/BinggraeMelona.ttf' wordcloud = WordCloud(stopwords=STOPWORDS, font_path = font_path, width = 800, height = 800,background_color="#ffffff") wordcloud = wordcloud.generate_from_text(record['Title']) plot.axis('off') plot.imshow(wordcloud) plot.show() # wordcloud generate
코드 구성은 크게
1. 모듈(wordcloud용 모듈과 Entrez 접속용 모듈)
2. Entrez에서 긁어오기(PMID-title)
3. Wordcloud 그리기
로 나누어진다.
주석에는 10개로 되어 있었는데, 이게 40개를 가져오다가 서버 에러가 나서 규모를 좀 줄였다. (현재 15개) 코드를 일반화함에 따라 중간에 for문도 바꼈다.
워드클라우드의 경우 Stopword라고 해서 접속사나 감탄사같은 것들을 다 빼야 하는데(in, at, the같은 거) 영문의 경우 STOPWORDS에 저장되어 있다.

1차 결과물(10개)

2차 결과물(15개, 폰트 변경)
근데 내가 원하는 결과는 대충 위에꺼인 거 같다...
from Bio import Entrez # 논문 긁어올 때 필요한거 from wordcloud import WordCloud from wordcloud import STOPWORDS import matplotlib.pyplot as plot # Wordcloud 그릴 때 필요한거 import numpy as np from PIL import Image # 이미지 마스킹할 때 필요한거 image=np.array(Image.open("/home/koreanraichu/alice.png")) font_path = '/usr/share/fonts/dovemayo.otf' # 마스킹할 이미지 Entrez.email = "blackholekun@gmail.com" handle = Entrez.esearch(db="pubmed", term="EGFR[title]", retmax="20") record = Entrez.read(handle) IdList=record['IdList'] # 일차적으로 Pubmed에서 논문을 찾을 수단인 PMID를 입수한다. # 숫자를 20개로 늘려서 시간이 좀 걸린다. title=[] for i in range(len(IdList)): handle = Entrez.esummary(db="pubmed", id=IdList[i], retmode="xml") records = Entrez.parse(handle) for record in records: title.append(record['Title']) title=''.join(title) # 타이틀 뽑았다. # 아 이거 근데 묶어줘야되더라... wordcloud = WordCloud(stopwords=STOPWORDS,font_path = font_path, width = 800,height = 800, background_color="#ffffff",colormap='spring',mask=image) wordcloud = wordcloud.generate_from_text(record['Title']) plot.axis('off') plot.imshow(wordcloud) plot.show() # wordcloud generate
PS. 마스크 기능 추가하는 김에 확인해봤는데 하나밖에 안되길래 리스트업한거 join해버림.
PS2. +코드의 wordcloud = wordcloud.generate_from_text(record['Title'])부분을 wordcloud = wordcloud.generate_from_text(Title)로 수정해줘야 제대로 나온다.

뭐야 왜이렇게 작아요

하는김에 김치로 찾음.

Arabidopsis+2021[Years]로 준 것
'Coding > Python' 카테고리의 다른 글
Biopython으로 KEGG 탐방하기 (0) | 2022.08.21 |
---|---|
텍스트 입력받아서 Wordcloud 만들기 (0) | 2022.08.21 |
Biopython-Clustering 입력 인자 (0) | 2022.08.21 |
Biopython으로 Clusting analysis 하기 (실전편) (0) | 2022.08.21 |
Biopython으로 Clusting analysis 하기 (이론편) (0) | 2022.08.21 |