텀블벅 후원에 성공하려면 프로젝트 이름을 어떻게 지어야 할까? (2)

2019. 9. 30. 13:59nlp

반응형

성공/실패한 텀블벅 프로젝트 이름을 모두 수집했다. 이제 문장구조/사용한 문장부호의 종류를 분석해보려 한다.

 

우선 수집한 프로젝트 이름이 있는 텍스트 파일을 불러오고

 

with open('fail.txt', 'r', encoding='UTF8') as f:
    fail_line = f.read().splitlines()

 

중복된 이름을 제거한다.

 

fail_line = set(fail_line)
len(fail_line) # 중복 제거

 

그리고 Komoran으로 품사 태깅을 해준다.

 

from konlpy.tag import Komoran
tagger = Komoran()
tagged_f = [tagger.pos(fl) for fl in fail_line]

 

만만한 문장부호 먼저 분석해주면 

 

f_punct = []

for f in fail_pos:
    for word, tag in f:
        if tag =='Punctuation':
            f_punct.append(word)
            
from collections import Counter
f_punct_counts = Counter(f_punct)
f_punct_counts.most_common()

 

실패한 프로젝트에 많이 쓰인 문장부호를 순서대로 보여준다. 

같은 방식으로 성공한 프로젝트도 분석했는데, 결론은 

펀딩 성공한 프로젝트에 &와 :가 상대적으로 많이 쓰인다, 였다.

 

& 는 2개 이상의 선물을 줄 때 많이 쓰였다. 여러 개 선물을 주는게 펀딩 성공에 유리한 것 같다.

: 가 많이 쓰인 이유는 모르겠다.. 이때부터 자연어처리로 문장 형식을 분석하는거에 약간 현타가 왔다.

사람들이 안 하는 거엔 이유가 있긴 있다.

 


두 번째로 문장구조 분석. NLTK로 내가 문법을 정의해서 분석했다. 

 

import nltk

grammar = """
NP : {<NN.>*} # 일반/고유명사
NP : {<SN><NP>} # 수사 + 명사구 
NP: {<V.><ETN>}   # 명사형 전성 어미 
NP : {<NP><JKO>} # 목적격조사 
NP : {<NP><JKS>} # 주격 조사 
NP : {<NP><JKC>} # 보격 조사 

MP: {<MM>*} # 관형사 
MP: {<V.><ETM>} # 동사/형용사와 관형사형 전성 어미
MP: {<XS.><ETM>} # 동사/형용사 파생 접미사와 관형사형 전성어미
MP : {<NP><JKG>} # 관형격조사 

JP:{<MAG>*} # 일반부사 
JP : {<NP><JKB>} # 부사격조사 

VP : {<V.><E.>} # 동사/형용사와 연결/종결어미
VP : {<VC.><E.>} #긍/부정지정사와 연결/종결어미
VP: {<XS.>*<E.>} # 동사/형용사 파생 접미사와 연결/종결어미 

ENG : {<SL>*} # 외국어

"""
parser = nltk.RegexpParser(grammar)

 

긴가민가하면서 이렇게 코드 짜고 돌렸을 때 오류가 안나서 너무 감격스러웠다...

학교 수업에서 이론으로 배운 통사론은 내가 코드로 구현했다ㅋㅋㅋ키야~~~~

 

이 문법에 따라 프로젝트 이름의 문장 구조를 분석할 수 있다. 

 

for i in range(len(tagged_f)):
    chunks = parser.parse(tagged_f[i])
    print(chunks.pprint())
    print(" ")

 

그럼 이런 식으로 나온다

 

(S (JP 가장/MAG) (MP 아름답/VA ㄴ/ETM) (NP 시간/NNG) ,/SP (NP 매직/NNP) 아워/NA (JP (NP 속/NNG) 에/JKB) (NP 당신/NP 을/JKO) (VP 담/VV 아/EC) (VP 드리/VX ㄹ게요/EF) ./SF) None

 

구글링 해보니 멋지게 그림 그려주는 기능도 있길래 하나 그려봤다.

 

parser.parse(tagged_f[24]).draw()

 

새로 nltk 창이 뜨면서 문장 구조를 보여준다. 

너무나 멋지지만 사실상 쓸모는 없다. 난 문장구조를 분석하려고 하니까..이런 사진으로는 아무것도 할 수가 없다.. 

 

그래서 이런 식으로 pandas DataFrame을 만들고 

 

명사구가 많이 쓰였는지, 동사구가 많이 쓰였는지 확인했다.

명사구는

1) MP(관형사구) + NP(명사구)인 경우

2) SS( < 등의 기호) + NP(명사구) + SS인 경우

이렇게 정의해서 빈도수를 확인했다. 

 

  펀딩 성공 펀딩 실패
관형사구+명사구 51개 37개
기호+명사구+기호 39개 25개

 

펀딩에 성공한 프로젝트일수록 명사구를 많이 사용했음을 알 수 있다.

명사구를 사용한 성공 프로젝트의 예시로

‘진짜 하루만에 끝내는 포토샵’ 또는 ‘온세상의 신들, <이토록 다양하神>’ 등이 있었다.

 

 

동사구는

1) JP(부사구) + VP(동사구)인 경우

2) NP(명사구) + VP(동사구)인 경우

3) SF(마침표, 물음표, 느낌표)가 있는 경우 

로 정의하여 빈도수를 확인했다.

 

  펀딩 성공 펀딩 실패
부사구+동사구 4개 7개
명사구+동사구 14개 26개
마침표,물음표,느낌표 9개 17개

펀딩에 실패한 프로젝트일 수록 동사구를 많이 사용했다. 

동사구를 사용한 성공 프로젝트의 예시로

‘8종의 명화에 마음을 담아 선물하세요’ 또는 ‘우리집 댕댕이와 커플룩 입고! 유기동물보호쉼터도 돕고!’ 등이 있었다.

 


펀딩에 성공한 프로젝트는 명사구를, 실패한 프로젝트는 동사구를 더 많이 사용했다.

 

그래서 같은 프로젝트도 명사구로 쓰느냐, 동사구로 쓰느냐에 따라 광고 효과가 달라지는지 알아보기 위해 뇌파 실험을 했다! 

반응형