[블로그 유입 증가를 위한 키워드 추출 프로그램 제작]

 (바로가기를 클릭하시면 해당 게시글로 넘어갑니다.)



Ⅰ 후보 키워드 추출 함수 제작


1. 명사 추출, 갯수 카운트 (바로가기)



Ⅱ 키워드 정보(검색량 상대지수 등) 요청 함수 


2. Naver Data Lab API를 이용한 키워드 정보 받아오기 (예정)


3. Naver 검색 키워드 정보 정제 및 정렬 (예정)


4. 프로그램 전체 코드 (예정)


(참고) Naver Data Lab API 이용하기 (예정)




'Python project > 01' 카테고리의 다른 글

[Python Project 01-1] 명사 추출, 빈도수 확인  (0) 2018.04.25

# 1-1. 파일 불러오기


f = open("blog.txt", "r")

lines = f.read()


'open'을 이용해 미리 저장해둔 텍스트 파일을 읽기 모드('r')로 불러와 'read'를 이용해 로드하였습니다.




# 1-2. 명사 추출


명사 추출에는 'konlpy'를 사용하였습니다. 패키지 공식 사이트(http://konlpy-ko.readthedocs.io/ko/v0.4.3/)에 접속하면 다운로드는 물론, 품사 태깅 비교 분석 등의 상세 정보들을 확인할 수 있습니다. 본 프로젝트에서는 윈도우에서 작업 시에는 'Twitter', Mac에서는 'Mecab'를 사용하였습니다. 본 포스팅은 윈도우에서 작업한 내용입니다. 


from konlpy.tag import Twitter

nlpy = Twitter()

nouns = nlpy.nouns(lines)

print(nouns)


\Users\Project> python project01.py

['항공', '시장', '동향', '이성은', '미국', '달라스', '무역', '관', '년', '미국', '항공', '산업', '총', '시장', '규모', '억', '달러', '전망', '미국', '주요', '바이어', '국산', '제품', '대해', '긍정', '인식', '미국', '항공', '시장', '동향', '년', '미국', '항공', '산업', '총', '시장', '규모', '억', '달러', '전망', '미국', '세계', '최대', '항공기', '제', '조국', '세계', '시장', '약', '점유', '년', '년', '연', '성장', '년', '년', '향후', '년', '연', '성장', '전망', '향후', '년', '항공', '여객', '수송량', '연', '항공', '화물', '수송량', '연', '증가', '전망', '미국', '선진국', '노후', '항공기', '연료', '효율', '새', '항공기', '교체', '추진', '중이', '이', '수요', '발생', '항공', '산업', '크게', '민간', '군용', '때', '민간', '항공', '산업', '년', '에서', '년', '로', '점유', '율', '증가', '전', '세계', '항공기', '수요', '전망', '자료', '미국', '내', '주요', '항공', '기업', '등', '자료', '과', '추가', '국방', '예산', '수혜자', '듯', '트럼프', '대통령', '년', '억', '달러', '규모', '추가', '국방', '예산안', '구상', '중이', '이', '중', '절반', '전투기', '전함',


...


'켄터키주', '루이스빌', '자료', '홈페이지', '달라스', '무역', '관', '자료', '종합', '저작권', '해외', '시장', '뉴스']




# 1-3. 추출된 키워드 빈도수 확인


from collections import Counter

count = Counter(nouns)


tag_count = []

tags = []


for n, c in count.most_common(100):

dics = {'tag': n, 'count': c}

if len(dics['tag']) >= 2 and len(tags) <= 49:

tag_count.append(dics)

tags.append(dics['tag'])


추출된 명사들을 카운트하기 위해 'collections'의 'Counter'를 사용했습니다. '.most_common'을 이용하면 빈도수가 높은 n개의 명사만 추출할 수 있습니다. 본 프로젝트에서는 100개를 이용하였고 그 중에서 조건(2글자 이상 49글자 미만)에 맞는 단어 50개만인 'for'문을 이용하여 [tag_count] 리스트에 'append'를 이용하여 추가하였습니다. 참고로 이후 키워드만 활용하기 위하여 단어만 별도의 리스트에 따로 'append'했습니다. 결과값을 출력하면 아래와 같이 나옵니다.


for tag in tag_count:

print(" {:<14}".format(tag['tag']), end='\t')

print("{}".format(tag['count']))


\Users\Project> python project01.py

 항공                   42

 항공기                40

 미국                   34

 부품                   28

 산업                   23

 주요                   19

 기업                   17

 업체                   16

 달러                   15

 시장                   14

 한국                   14

 자료                   13

 관련                   13

 공급                   13

 전망                   12

 수출                   12

 세계                   11

 수요                   11

 제품                   10

 엔진                   10

 공항                    9

 점유                    8

 시스템                 8

 생산                    8

 규모                    7

 효율                    7

 프로젝트              7

 가능                    7

 동향                    6

 달라스                 6

 증가                    6

 추진                    6

 구입                    6

 현재                    6

 전시회                 6

 연료                    5

 중이                    5

 국방                    5

 전투기                 5

 무기                    5

 예정                    5

 기타                    5

 방위                    5

 전체                    5

 기술                    5 

 적층                    5

 가공                    5

 분야                    5

 일본                    5

 비행                    5

 

---------------------------------

     명사 총  50개

---------------------------------




# 1-4. 함수 전체 코드


def tag_counting(file):


f = open(file, "r")

lines = f.read()


from konlpy.tag import Twitter

nlpy = Twitter()

nouns = nlpy.nouns(lines)


from collections import Counter

count = Counter(nouns) 


tag_count = []

tags = []


for n, c in count.most_common(100):

dics = {'tag': n, 'count': c}

if len(dics['tag']) >= 2 and len(tags) <= 49:

tag_count.append(dics)

tags.append(dics['tag'])

for tag in tag_count:

print(" {:<14}".format(tag['tag']), end='\t')

print("{}".format(tag['count']))




print("\n---------------------------------")

print("     명사 총  {}개".format(len(tags)))

print("---------------------------------\n\n")


return tags


tags = tag_counting(file = "blog.txt")

print(tags)


\Users\Project> python project01.py

 항공                   42

 항공기                40

 미국                   34

 부품                   28

 산업                   23

 주요                   19

 기업                   17

 업체                   16

 달러                   15

 시장                   14

 한국                   14

 자료                   13

 관련                   13

 공급                   13

 전망                   12

 수출                   12

 세계                   11

 수요                   11

 제품                   10

 엔진                   10

 공항                    9

 점유                    8

 시스템                 8

 생산                    8

 규모                    7

 효율                    7

 프로젝트              7

 가능                    7

 동향                    6

 달라스                 6

 증가                    6

 추진                    6

 구입                    6

 현재                    6

 전시회                 6

 연료                    5

 중이                    5

 국방                    5

 전투기                 5

 무기                    5

 예정                    5

 기타                    5

 방위                    5

 전체                    5

 기술                    5 

 적층                    5

 가공                    5

 분야                    5

 일본                    5

 비행                    5

 

---------------------------------

     명사 총  50개

---------------------------------


+ Recent posts