👨🏻‍🏫IT 활동/인공지능교육 - NLP

[NLP] Day 16 - Index

728x90
반응형

Index

In [1]:
from konlpy.tag import Kkma
from nltk.tokenize import word_tokenize

sentence = '오늘 날씨는 어제 날씨보다 안좋은거 같아요'
In [2]:
print(Kkma().pos(sentence))
[('오늘', 'NNG'), ('날씨', 'NNG'), ('는', 'JX'), ('어제', 'NNG'), ('날씨', 'NNG'), ('보다', 'JKM'), ('안', 'MAG'), ('좋', 'VA'), ('은', 'ETD'), ('거', 'NNB'), ('같', 'VA'), ('아요', 'EFN')]
In [3]:
for token in word_tokenize(sentence): #  == sentence.split():
    print(Kkma().nouns(token))
['오늘']
['날씨']
['어제']
['날씨']
['거']
[]
In [4]:
# NNG만 걸러내기
for token in [word for word in Kkma().pos(sentence) if word[1].startswith('NNG')]:
    print(token)
('오늘', 'NNG')
('날씨', 'NNG')
('어제', 'NNG')
('날씨', 'NNG')
In [5]:
for token in [word for word in Kkma().pos(sentence) if word[1] in ['NNG','VA'] and len(word[0]) > 1]:
    print(token)
('오늘', 'NNG')
('날씨', 'NNG')
('어제', 'NNG')
('날씨', 'NNG')
In [6]:
def ngramEojeol(sentence, n=2):
    tokens = sentence.split()
    ngram = []
    
    for i in range(len(tokens) - n + 1):
        ngram.append(' '.join(tokens[i:i + n]))    
        
    return ngram
In [7]:
def ngramUmjeol(term, n=2):
    ngram = []
    
    for i in range(len(term) - n + 1):
        ngram.append(''.join(term[i:i + n]))   
        
    return ngram
In [8]:
# 색인어 목록
sentence = '오늘 날씨는 어제 날씨보다 안좋은거 같아요'

lexicon = list(set(sentence.split()))
print('1. ', lexicon)

# 색인어 목록 확장(품사, 단어 길이 고려)
for token in [word for word in Kkma().pos(sentence) if word[1] in ['NNG','VA'] and len(word[0]) > 1]:
    lexicon.append(token[0])
    
print('2. ', list(set(lexicon)))

# 어절, 특정 품사&길이 형태소, Ngram(어절)
lexicon.extend(ngramEojeol(sentence))
print('3. ', list(set(lexicon)))

lexicon.extend(ngramEojeol(' '.join([token[0] for token in [word for word in Kkma().pos(sentence) if word[1] in ['NNG','VA'] and len(word[0]) > 1]])))
print('4. ',list(set(lexicon)))

newLexicon = list()
for word in lexicon:
    if len(word.split()) == 1:
        newLexicon.extend(ngramUmjeol(word))
lexicon.extend(newLexicon)
print('5. ', list(set(lexicon)))
1.  ['오늘', '같아요', '날씨는', '안좋은거', '어제', '날씨보다']
2.  ['오늘', '같아요', '날씨', '날씨는', '안좋은거', '어제', '날씨보다']
3.  ['오늘', '같아요', '날씨는 어제', '날씨', '안좋은거 같아요', '날씨는', '날씨보다 안좋은거', '안좋은거', '오늘 날씨는', '어제', '날씨보다', '어제 날씨보다']
4.  ['오늘', '같아요', '날씨는 어제', '날씨', '어제 날씨', '안좋은거 같아요', '날씨는', '날씨보다 안좋은거', '안좋은거', '오늘 날씨는', '오늘 날씨', '어제', '날씨 어제', '날씨보다', '어제 날씨보다']
5.  ['아요', '보다', '같아요', '씨보', '날씨는', '날씨 어제', '어제 날씨보다', '날씨는 어제', '날씨', '어제 날씨', '씨는', '오늘 날씨', '같아', '오늘', '안좋', '오늘 날씨는', '어제', '날씨보다', '안좋은거 같아요', '날씨보다 안좋은거', '안좋은거', '은거', '좋은']
In [9]:
import os

def getFileList(base='./', ext='.txt'):
    fileList = list()
    
    for file in os.listdir(base):
        if file.endswith(ext): # == if file.split('.')[-1] == ext:
            fileList.append('{0}/{1}'.format(base, file))
            
    return fileList
In [12]:
len(getFileList('./News'))
Out[12]:
125
In [13]:
def getContent(file):
    with open(file, encoding='utf-8') as f:
        content = f.read()
    
    return content
In [14]:
from nltk.tokenize import sent_tokenize

corpus = getContent(getFileList('./News')[0])
sent_tokenize(corpus)
Out[14]:
['\n\n\n\n\n// flash 오류를 우회하기 위한 함수 추가\nfunction _flash_removeCallback() {}\n\n\t\n\t최악의 고농도 미세먼지가 이어지던 지난 7일 조명래 환경부 장관은 학교나 병원, 공공건물 옥상 등 도심 유휴공간에 설치할 수 있는 공기정화시설을 개발할 예정이라고 밝혔다.',
 '\'인공강우\'와 함께 이른바 \'한국형 공기정화기\'가 고농도 미세먼지를 제거하는 묘책으로 등장하는 순간이다.조 장관은 "지금까지 전문가 검토에서는 상당히 효과가 있는 것으로 나와 있다"면서 한국형 공기정화기는 "새로운 한국의 공기 산업이 될 수 있다"고 평가했다.',
 '특히 "한국형 공기정화기를 발명해서 실용화한다면 해외 수출을 통해 국익에도 도움이 될 것으로 보인다"면서 "이 같은 이유로 이 산업을 의미 있게 추진하게 됐다" 밝혔다.우리에게 잘 알려진 도심 미세먼지 정화 설비는 크게 두 가지다.',
 '지난해(2018년) 중국 시안에 설치된 대형 정화 탑, 그리고 네덜란드와 폴란드 중국 베이징 등에 설치된 스모그 프리 타워(smog free tower)다.● 중국 시안 대형 정화 탑중국 시안에 설치된 대형 정화 탑은 크기가 어마어마하다.',
 '정화 탑 아래에 유리 온실처럼 만들어진 시설의 면적이 축구장 면적의 절반 정도나 되고 정화 탑의 높이도 100m(일부에서는 60m로 소개)나 되는 것으로 알려져 있다(아래 그림 참조).중국 시안에 설치된 대형 미세먼지 정화 탑 (자료: 중국 과학원)중국 시안 대형 미세먼지 정화 탑 원리 (자료: Thomas Talhelm, 2018)원리는 간단하다.',
 '유리 온실에 뜨거운 햇볕이 내리쬐면 온실 속에 있는 공기는 뜨거워지는데 뜨거워진 공기는 상대적으로 가벼워지기 때문에 높은 탑으로 올라가 밖으로 나가게 된다.',
 '이때 탑 내부 또는 유리 온실 벽면에 필터를 설치해 두면 미세먼지가 많이 들어 있는 공기가 필터를 통과하는 동안 미세먼지를 잡아내는 방식이다.중국 시안에 만든 정화 탑은 사진상으로 보면 유리 온실 벽면이 필터로 만들어져 있다.',
 '햇볕이 강하면 정화 탑 성능이 좋아지겠지만 햇볕이 약하거나 없으면 성능은 떨어지게 마련이다.',
 '중국은 정화 탑을 가동하는 데 전기를 사용하는 것으로 알려지고 있다.',
 '전기(송풍기)를 이용해 주변의 미세먼지가 많이 들어 있는 공기를 빨아들이고 이를 필터로 걸러 좀 깨끗해진 공기를 밖으로 내보내는 방식이다.',
 '시안 정화 탑의 공기 처리 용량은 시간당 40만 세제곱미터인 것으로 알려지고 있다.',
 '중국은 시안 공기 정화 탑 1개를 설치하는데 200만 달러, 22억 원이 넘는 돈을 들였다.● 네덜란드 스모그 프리 타워중국 시안에 설치된 공기 정화 탑과 비교하면 네덜란드 제품인 스모그 프리 타워는 크기가 크지 않다.',
 '높이는 23피트(약 7m), 설치비용은 5만 4천 달러(약 6천만 원) 정도로 알려져 있다.',
 '1시간에 처리할 수 있는 공기 용량은 8만 세제곱미터 정도로 알려지고 있다.',
 '미세먼지를 잡아내는 방식도 중국 정화 탑과는 다르다.',
 '스모그 프리 타워는 중국과 같은 필터로 걸러내는 방식이 아니라 정전기를 이용해 먼지를 잡아낸다.',
 '물론 작동에는 전기를 이용한다(아래 그림 참조).스모그 프리 타워 (자료: 네덜란드 Studio Roosegaarde)● 한국형 공기정화기환경부 발표에 따르면 한국형 정화기 사업은 오는 5월부터 시작된다.',
 '5월부터 12월까지 개발 계획을 공모하는 것으로 되어 있다.설치 장소는 학교나 병원, 공공건물 옥상 등 도심 유휴공간으로, 공기 처리 용량은 한 시간에 40만 세제곱미터 이상이어야 한다고 환경부는 밝히고 있다.',
 '처리 용량은 중국 시안에 설치된 정화 탑 이상을 생각한다는 것이다.',
 '다만 크기는 소형을 권장한다고 밝히고 있다.',
 '또 성능은 초미세먼지(PM2.5)를 75% 이상 제거하고 질소산화물(NOx) 같은 가스도 줄일 수 있어야 한다고 밝히고 있다.',
 '소음이나 진동, 오존 발생은 줄이고 전기도 조금 먹어야 한다는 조건을 달고 있다.',
 '계획만 보면 크기는 작지만 강력하고 성능이 우수한 공기정화기를 만들겠다는 뜻이다.',
 "미세먼지를 걸러내는 방식이 필터를 사용하는 방식인지, 정전기를 이용하는 방식인지는 언급이 없다.환경부 희망대로 한국형 정화기가 나오면 겉으로 보기에는 지금까지 알려진 중국 시안에 설치된 정화 탑이나 네덜란드의 스모그 프리 타워보다 나름대로 장점이 많을 가능성이 있다.그렇다면 '한국형 정화기'는 과연 한반도를 뒤덮는 고농도 미세먼지로부터 국민들을 해방시킬 수 있을까?",
 "[취재파일]'한국형 공기정화기' 효과는 있을까?",
 "에서 이어간다.< 참고문헌>* Thomas Talhelm, Xi'an unveils smog-fighting purifier tower, but does it work?, Smart Air, March 2nd, 2018https://smartairfilters.com/en/blog/xian-unveils-smog-fighting-tower-work/\xa0\xa0\xa0안영인 기자(youngin@sbs.co.kr)▶[핫이슈] 클럽 '버닝썬' 전방위 수사▶[핫이슈] '최악의 미세먼지' 전국 비상▶네이버 메인에서 SBS뉴스 구독하기※ ⓒ SBS & SBS Digital News Lab.",
 ': 무단복제 및 재배포 금지']
In [15]:
import re
from string import punctuation

print(punctuation)
!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~
In [16]:
# 구두점 제거 (2번이상 반복되는 경우)
pattern = re.compile(r'[%s]{2,}' % re.escape(punctuation)) # re.compile(r'//') 
pattern.findall(corpus)
Out[16]:
['//', '()', '{}', ').', '),', ').', '?[', "]'", '.<', '>*', '?,', '://']
In [17]:
# white space 2번 이상 나오는 경우
pattern = re.compile(r'\s{2,}')
pattern.findall(corpus)
Out[17]:
['\n\n\n\n\n', '\n\n\t\n\t', '\xa0\xa0\xa0', '\n\t\n']
In [18]:
# 영어 (대소문자) +\-\_ 제거 (8글자 이상)
pattern = re.compile(r'[A-Za-z-_]{8,}')
pattern.findall(corpus)
Out[18]:
['function',
 '_flash_removeCallback',
 'Roosegaarde',
 'smog-fighting',
 'purifier',
 'smartairfilters',
 'xian-unveils-smog-fighting-tower-work']
In [19]:
# 이메일
# \w => Alphanumeric + -
# naver    .com    .co    .kr
pattern = re.compile(r'(\w+@[A-Za-z0-9\-\_]{3,}(.[A-Za-z]{2,})+)')
pattern.findall(corpus)
Out[19]:
[('youngin@sbs.co.kr', '.kr')]
In [20]:
# 한글 이외에 모두 제거
pattern = re.compile(r'([^ㄱ-ㅎㅏ-ㅣ가-힣]+)')
# pattern.findall(corpus)
In [21]:
def getPatternList():
    patternList = {}
    patternList['Korean'] = re.compile(r'([^ㄱ-ㅎㅏ-ㅣ가-힣]+)')
    patternList['Email'] = re.compile(r'(\w+@[a-zA-Z0-9\-\_]{3,}(.[a-zA-Z]{2,})+)')
    patternList['Whitespace'] = re.compile(r'\s{2,}')
    patternList['Punctuation'] =  re.compile(r'[%s]{2,}' % re.escape(punctuation))
    return patternList
In [22]:
corpus = getContent(getFileList('./News')[0])
corpus = getPatternList()['Korean'].sub(" ", corpus)
corpus = getPatternList()['Punctuation'].sub(" ", corpus)
In [23]:
dictTerm = list()
dictPos = list()
dictNoun = list()
dictNgram = list()

for sentence in sent_tokenize(corpus):
    for token in sentence.split():
        if len(token) > 1:
            dictTerm.append(token)
            dictPos.extend([morpheme for morpheme in Kkma().morphs(token) if len(morpheme) > 1])
            dictNoun.extend([noun for noun in Kkma().nouns(token) if len(noun) > 1])
            dictNgram.extend(ngramUmjeol(token))
        
dictTerm = list(set(dictTerm))
dictPos = list(set(dictPos))
dictNoun = list(set(dictNoun))
dictNgram = list(set(dictNgram))
In [24]:
len(dictTerm), len(dictPos), len(dictNoun), len(dictNgram)
Out[24]:
(316, 234, 180, 507)
In [25]:
len(list(set(dictTerm + dictPos + dictNoun+ dictNgram)))
Out[25]:
768
In [26]:
print(dictTerm)
['국익에도', '오는', '자료', '처리할', '소개', '한반도를', '원이', '떨어지게', '검토에서는', '상당히', '의미', '미세먼지로부터', '빨아들이고', '내보내는', '면서', '버닝썬', '크게', '탑으로', '천만', '등에', '설치해', '물론', '없다', '사업은', '벽면이', '함수', '보면', '그리고', '추진하게', '세제곱미터', '온실에', '세제곱미터인', '전기도', '희망대로', '전기를', '내부', '밝히고', '설치비용은', '뜨거워지는데', '그렇다면', '되는', '아니라', '잡아낸다', '달고', '월까지', '과학원', '깨끗해진', '전기', '동안', '만들어져', '좋아지겠지만', '있게', '한국형', '크기는', '공기를', '작동에는', '달러', '방식인지는', '생각한다는', '질소산화물', '것으로', '통과하는', '장관은', '네덜란드', '통해', '병원', '방식도', '공공건물', '벽면에', '핫이슈', '됐다', '만들어진', '설치하는데', '가스도', '특히', '옥상', '환경부는', '인공강우', '공기가', '이때', '다르다', '탑과', '다만', '이어간다', '시설의', '뒤덮는', '프리', '크지', '유휴공간에', '클럽', '타워중국', '방식이다', '이용하는', '절반', '용량은', '먹어야', '공기정화기환경부', '위한', '된다', '무단복제', '높은', '이상을', '참고문헌', '타워보다', '학교나', '탑의', '아래에', '내리쬐면', '되어', '알려지고', '상대적으로', '공기정화기는', '기자', '잡아내는', '나오면', '설치된', '폴란드', '햇볕이', '넘는', '스모그', '없으면', '뜨거워진', '이른바', '면적의', '공모하는', '평가했다', '효과가', '시간당', '가벼워지기', '들였다', '만들겠다는', '때문에', '중국은', '성능이', '공기', '정화', '정화기', '강하면', '공기정화기를', '설치할', '장소는', '알려져', '밖으로', '개발할', '많을', '이유로', '뜻이다', '수출을', '설비는', '정전기를', '미세먼지', '발표에', '강력하고', '크기가', '도움이', '사진상으로', '안영인', '사용하는', '함께', '들어', '성능은', '우수한', '중국', '최악의', '또는', '마련이다', '소형을', '방식이', '탑은', '묘책으로', '뜨거운', '줄이고', '해방시킬', '정화기가', '지금까지', '탑과는', '줄일', '축구장', '돈을', '따르면', '탑을', '뉴스', '시작된다', '공기는', '송풍기', '초미세먼지', '에서', '보기에는', '이용해', '구독하기', '실용화한다면', '탑이나', '미세먼지가', '있다', '시간에', '환경부', '온실처럼', '장점이', '많이', '전국', '조건을', '밝혔다', '지난', '알려진', '보인다', '처리', '개발', '제품인', '비교하면', '겉으로', '정도로', '재배포', '오류를', '한국의', '조금', '수사', '면적이', '나가게', '제거하는', '예정이라고', '참조', '오존', '조명래', '추가', '필터를', '전방위', '같은', '이용한다', '취재파일', '원리는', '올라가', '언급이', '타워', '효과는', '도심', '베이징', '걸러', '네덜란드와', '있는', '국민들을', '먼지를', '공기정화기', '개를', '간단하다', '약하거나', '나와', '걸러내는', '만든', '이상', '발생은', '지난해', '높이도', '타워는', '않다', '금지', '소음이나', '유휴공간으로', '발명해서', '두면', '방식인지', '새로운', '가능성이', '피트', '등장하는', '되고', '대형', '그림', '이를', '일부에서는', '탑중국', '속에', '네덜란드의', '한다고', '정도나', '있을까', '계획만', '계획을', '산업을', '가지다', '시안', '설치', '공기정화시설을', '고농도', '네이버', '중국과', '한다는', '월부터', '이상이어야', '나름대로', '주변의', '권장한다고', '시안에', '유리', '우리에게', '메인에서', '있어야', '온실', '제거하고', '미세먼지를', '가동하는', '순간이다', '산업이', '비상', '이어지던', '진동', '전문가', '필터로', '과연', '아래', '해외', '우회하기', '것이다', '작지만', '어마어마하다', '원리', '높이는']
In [27]:
print(dictPos)
['깨끗하', '발표', '자료', '는데', '도심', '빨아들이', '소개', '옥상', '베이징', '작동', '최악', '생각', '언급', '도움', '영인', '뜨거워지', '장소', '사진', '벽면', '함께', '상당히', '의미', '이때', '발명', '대로', '학교', '유휴', '만들', '다만', '초미세', 'ㄴ다고', '한국', '공기정화기', '사업', '성능', '계획', '프리', '무단', '중국', '한반도', '또는', '나오', '작지', '국익', '일부', '비교', '으면', '비용', '이상', '다는', '처럼', '국민', '어야', '예정', '으로', '천만', '등에', '클럽', '추진', '보이', '따르', '절반', '좋아지', '간단', '지난해', '물론', '파일', '거나', '인공', '금지', '축구장', '장관', '시간', '가동', '정도', '뜨겁', '공모', '뉴스', '함수', '오류', '가볍', '우수', '그리고', '송풍기', 'ㄴ지', '두면', '기에', '사용', '높이', '세제곱미터', '에서', '지금', 'ㄴ다', '어마어마', '장점', '용량', '이용', '가스', '이나', '묘책', '피트', '강우', '통과', '제거', '대형', '통하', '내불', '배포', '공간', '그림', '아니', '소음', '산화물', '기자', '면적', 'ㄴ다는', '라고', '다르', '에게', '줄이', '환경부', '많이', '취재', '검토', '이유', '다면', '폴란드', '해방', '떨어지', '전국', '을까', '타워', '과학원', '전기', '들이', '가능성', '동안', '그렇', '명래', '순간', '마련', '미세', '처리', '개발', '효과', '조건', '까지', '시안', '설치', '스모그', '산업', '고농도', '한국형', '크기', '구독', '지나', '네이버', '달러', '내리쬐', '평가', '필터', '메인', '방식', '이른바', '조금', '수사', '강력', '정전기', '시키', '잡아내', '나름', '우리', '시설', '나가', '버닝', '이어지', '우회', '제품', '이르', '네덜란드', '보다', '시간당', 'ㄴ다면', '지만', '참조', '유리', '내보내', '오존', '시작', '상대적', '병원', '온실', '먼지', '주변', '부터', '권장', '공기', '복제', '정화', '정화기', '등장', '강하면', '참고', '추가', '설비', '비상', '진동', '핫이슈', '문헌', '햇볕', '거르', '전문가', '실용화하', '전방위', '과연', '어서', '발생', '아래', '희망', '해외', '알리', '건물', '때문', '특히', '수출', '소형', '질소', '올라가', '뒤덮', '원리', '공공', '가지', '약하', '밝히']
In [28]:
print(dictNoun)
['발표', '자료', '미세먼지', '도심', '소개', '옥상', '베이징', '작동', '최악', '생각', '언급', '도움', '영인', '안영인', '인공강우', '장소', '사진', '벽면', '의미', '이때', '발명', '학교', '유휴', '초미세', '한국', '공기정화기', '사업', '성능', '계획', '프리', '무단', '중국', '한반도', '강하', '작지', '국익', '일부', '비교', '비용', '이상', '국민', '예정', '천만', '등에', '클럽', '추진', '타워중국', '절반', '지난해', '파일', '인공', '공기정화기환경부', '금지', '축구장', '장관', '시간', '가동', '정도', '공모', '무단복제', '뉴스', '함수', '오류', '우수', '송풍기', '두면', '사용', '높이', '세제곱미터', '초미세먼지', '지금', '에서', '참고문헌', '장점', '용량', '이용', '가스', '묘책', '피트', '강우', '통과', '제거', '대형', '배포', '공간', '그림', '소음', '산화물', '기자', '면적', '공기정화시설', '유휴공간', '탑중국', '환경부', '취재', '검토', '이유', '폴란드', '해방', '전국', '과학원', '전기', '가능성', '동안', '명래', '순간', '마련', '미세', '처리', '개발', '효과', '조건', '시안', '설치', '스모그', '산업', '고농도', '한국형', '크기', '구독', '네이버', '달러', '평가', '필터', '메인', '방식', '질소산화물', '조금', '수사', '정전기', '나름', '우리', '시설', '버닝', '우회', '제품', '네덜란드', '시간당', '설치비용', '참조', '유리', '오존', '시작', '상대적', '병원', '온실', '공공건물', '먼지', '주변', '권장', '공기', '조명래', '정화', '복제', '정화기', '등장', '강하면', '참고', '추가', '설비', '비상', '진동', '핫이슈', '문헌', '햇볕', '전문가', '전방위', '발생', '아래', '희망', '해외', '건물', '때문', '취재파일', '수출', '소형', '질소', '원리', '공공', '타워']
In [29]:
print(dictNgram)
['발표', '해진', '오는', '자료', '는데', '유로', '어져', '소개', '획을', '작동', '최악', '용한', '것으', '로부', '도움', '초미', '영인', '공강', '실용', '원이', '벽면', '이고', '의미', '에는', '발명', '리쬐', '유휴', '화한', '단하', '모하', '무단', '망대', '가게', '강하', '식인', '비교', '일부', '면서', '다는', '처럼', '토에', '크게', '예정', '천만', '부는', '등에', '따르', '물론', '없다', '보인', '도를', '핫이', '들겠', '정도', '함수', '보면', '기에', '학원', '렇다', '들였', '이용', '아지', '올라', '통과', '변의', '떨어', '동하', '배포', '내부', '기도', '란드', '인에', '면적', '되는', '거하', '워는', '달고', '화물', '검토', '이징', '업을', '국은', '전기', '동안', '전방', '들을', '업이', '까지', '있게', '휴공', '거운', '달러', '국형', '르면', '네이', '메인', '세먼', '식이', '용해', '였다', '방시', '드와', '밝혔', '나름', '우리', '이슈', '간으', '각한', '버닝', '교하', '어지', '경부', '형을', '기는', '출을', '겉으', '곱미', '이다', '시작', '통해', '병원', '좋아', '권장', '됐다', '탑이', '당히', '간이', '식도', '다고', '금까', '깨끗', '특히', '르다', '가지', '리고', '월까', '한다', '옥상', '생각', '제곱', '하면', '상대', '벼워', '이때', '탑과', '라가', '다만', '한국', '치해', '민들', '계획', '프리', '크지', '단복', '작지', '국익', '어진', '적의', '비용', '면이', '혔다', '클럽', '것이', '간다', '상으', '절반', '밖으', '정이', '거나', '치된', '위한', '된다', '재파', '리는', '높은', '하거', '국과', '겠지', '시킬', '적이', '가스', '이나', '환경', '설의', '탑의', '제거', '련이', '진하', '공간', '적으', '되어', '발할', '산화', '기자', '덜란', '이어', '볕이', '라고', '에게', '했다', '취재', '설을', '이유', '가벼', '들이', '워중', '미세', '쬐면', '넘는', '러내', '지던', '효과', '조건', '획만', '알려', '구독', '건을', '이버', '상당', '시설', '나가', '하고', '동에', '낸다', '능성', '기를', '제품', '구장', '축구', '재배', '공기', '화시', '정화', '도나', '설비', '거워', '성이', '소산', '실에', '안영', '니라', '이라', '워진', '드의', '많을', '량은', '소형', '공공', '터를', '실처', '크기', '을까', '상을', '업은', '도로', '력하', '한반', '음이', '면에', '장소', '사진', '내보', '함께', '국의', '수한', '이른', '대로', '학교', '만들', '들어', '워지', '생은', '히고', '문에', '성능', '중국', '또는', '나오', '치할', '어야', '고농', '추진', '마하', '작된', '탑은', '빨아', '관은', '겠다', '스도', '장한', '있어', '파일', '어간', '인공', '줄일', '독하', '돈을', '장관', '탑을', '보내', '잡아', '뉴스', '사용', '에서', '지금', '반도', '강우', '내는', '려지', '터인', '익에', '에도', '지다', '있다', '치하', '다르', '리에', '많이', '해방', '전국', '름대', '명래', '마련', '지난', '간에', '처리', '개발', '지게', '정전', '산업', '과는', '방위', '악의', '월부', '기가', '과하', '아내', '조금', '간당', '수사', '강력', '세제', '보다', '부에', '참조', '해서', '하다', '하는', '오존', '모그', '먼지', '능이', '미터', '부터', '복제', '등장', '추가', '대적', '서는', '문헌', '햇볕', '터로', '아들', '같은', '지로', '지를', '희망', '닝썬', '류를', '건물', '덮는', '수출', '송풍', '질소', '뒤덮', '래에', '타워', '전문', '문가', '도심', '걸러', '명해', '언급', '지겠', '있는', '능은', '농도', '지는', '하기', '개를', '사업', '있을', '소는', '공건', '나와', '만든', '이상', '으면', '없으', '치비', '리할', '국민', '으로', '간단', '인다', '않다', '금지', '장하', '상이', '시간', '가동', '공모', '오류', '어마', '우수', '이도', '난해', '고문', '두면', '높이', '워보', '장점', '베이', '용량', '기정', '묘책', '새로', '피트', '비는', '되고', '대형', '지고', '가했', '그림', '그리', '이를', '아니', '과학', '화기', '소음', '급이', '교나', '움이', '속에', '줄이', '다면', '용은', '조명', '오면', '이는', '로운', '폴란', '그렇', '순간', '네덜', '끗해', '하게', '지기', '시안', '설치', '뜨거', '아낸', '품인', '평가', '스모', '필터', '용화', '방식', '책으', '과가', '우회', '지가', '려진', '지만', '유리', '려져', '탑으', '가능', '표에', '온실', '회하', '마어', '주변', '른바', '인지', '참고', '비상', '진동', '과연', '기환', '진상', '발생', '아래', '해외', '안에', '뜻이', '보기', '때문', '탑중', '풍기', '먹어', '원리', '점이', '용하', '약하', '내리', '밝히']


728x90
반응형