상품 구매 리뷰의 긍정 테스트 분석입니다. 저는 오히려 이거에 대해서 말씀드리고 싶어요. 상품 구매 안에 들어있는 리뷰가 여러분들이 만약에 그거를 어디서 뭐 알바를 통해서 쓰시든 멀티쓰든 이게 직접 사람이 써봐야 구매 리뷰로 들어가잖아요. 그러면 사람의 주관적인 사용 후기에 관련된 내용들이 무조건 나올 수밖에 없습니다. 저는 그래서 이 리뷰에 쓰였던 거 자체가 저는 자산이라고 저는 보고 있거든요. 그래서 근데 이게 구매 리브가 많이 쌓이면 쌓일수록 그거 자체를 자산을 보지 않고 안타깝게 넘겨버리시는 오로지 긍정적인 부분만 해서 매출 상승시키려고만 하는 건데 그걸 통해서 어필할 수 있는 안에 솔직히 저는 정답이 있다고 생각을 합니다. 왜냐하면 결국은 고객들이 안에서 정답을 주는 거거든요. 안에서 정답에 따른 데이터를 추출을 해서 인사이트를 도출한 다음에 그것을 어떻게 뽑아내는가 이 어떻게 안에서 좋은 것을 좋은 인사이트를 뽑아내는가에 대해서 제가 말씀드리도록 하겠습니다.
파이썬 상품 구매 리뷰 긍정 텍스트 분석
-> 고객들이 선호하는 내용은 무엇인가?
-> 분석 인사이트 도출 후 상세페이지 SEO 최적화 및 퀄리티 개선을 통한 트래픽, 구매전환율 상승
먼저 처음에는요 파이썬 코딩으로 리뷰 중에 가장 많이 쓰였던 단어를 한번 조사를 해보세요. 밑에 코딩이 있습니다. 이 코딩을 돌려보시면 돼요. 메모장이 있거든요. 이 메모장에다가 리뷰를 다 집어넣으세요. 다 집어넣고 돌리시면 됩니다. 돌리시면 그다음에 아래와 같은 이미지로 해서 여러 가지가 나올 거예요.
from konlpy.tag import Kkma, Okt, Komoran, Hannanum
from konlpy.utils import pprint
from collections import Counter
num = 2
#f = open ('C:/Users/user/raw/products/product_info/product_'+str(num)+'.txt', 'r', encoding='utf-8')
#f = open ('C:/Users/user/raw/products/product_info/test1.txt', 'r', encoding='utf-8')
f = open ('C:/Users/user/Desktop/review_contents_zflip3_bespoke_stickers.txt', 'r', encoding='utf-8')
text = f.read()
#Kkma 객체 생성
okt = Kkma()
noun = okt.nouns(text)
count = Counter(noun)
#명사 빈도 카운트
noun_list = count.most_common(100)
for v in noun_list :
print("Kkma 기준 : "+ str(v))
#Okt 객체 생성
okt = Okt()
noun = okt.nouns(text)
count = Counter(noun)
#명사 빈도 카운트
noun_list = count.most_common(100)
for v in noun_list :
print("Okt 기준 : " + str(v))
#Komoran 객체 생성
#okt = Komoran()
#noun = okt.nouns(text)
#count = Counter(noun)
#명사 빈도 카운트
#noun_list = count.most_common(10)
#for v in noun_list :
# print("Komoran 기준: " + str(v))
#Hannanum 객체 생성
okt = Hannanum()
noun = okt.nouns(text)
count = Counter(noun)
#명사 빈도 카운트
noun_list = count.most_common(100)
for v in noun_list :
print("Hannanum 기준: " + str(v))
그리고 어떤 단어가 나왔는지를 확인해 봅니다. 이외 하기 코딩으로 각각의 단어가 쓰인 내용 등을 찾아봅니다. 단어가 나왔으면 이 단어를 한번 분류를 해보십시오 그래서 분류해보시는 거 간단합니다. 예를 들면 원하는 기준에 따라서 단어만 분류만 해놓으면 돼요 분류만 해놓고 또한 가장 많이 쓰였던 단어가 왜 이 단어를 썼었지 라는 거를 아래와 같은 코딩 이걸로 특정 단어에서 과연 리뷰로 어떤 단어가 왜 쓰였었을까 이거에 대해서도 코딩이 됐습니다. 그래서 아래 코딩을 돌리면 돼요. 그래서 우리는 여기서부터 알 수 있는 거죠.
file = open ('C:/Users/user/Desktop/review_contents_zflip3_bespoke_stickers.txt', 'r', encoding='utf-8')
texts = file.readlines()
for text in texts :
if text.find("퀄리티") > 0 : #단어검색
print(text)
else :
pass
그래서 이거 한 가지 예시인데 예시가 뭐냐면요. 두 가지입니다. 휴대폰에 뭔가 케이스를 썼을 때 아니면 어떤 디자인을 썼을 때 이런 식으로 분류를 해놔서 안에서 어떤 식으로 고객들이 글을 썼었을까 이거에 대해서 피드백을 받을 수 있는 거거든요. 이거를 특히나 온라인 상품일 같은 경우에는 이게 주기적으로 피드백을 안 줍니다. 안 주는 이유 중에 하나가 뭐냐면 고객들은 마음에 안 들면 팽개쳐버리면 돼요. 이거를 절대 얘기를 안 해주거든요. 리뷰 안에서도 그게 있는데 리뷰는 오히려 지 부정적인 리뷰가 있으면 그걸 묻혀버리려고만 하죠. 근데 리뷰의 흔적은 남거든요. 결과론적으로는 그거를 개선을 해야 되는 거죠.
그리고 최종적으로 긍정 리뷰의 내용은 어떤 텍스트 등이 있는지를 확인해 봅니다. 마찬가지로 긍정 텍스트만 뽑아서 또 각각의 명사, 형용사 등의 빈도만 조사하면 됩니다. 이거 한 가지가 더 있는데, 바로 긍정의 텍스트만 뽑아서 보는 거예요. 긍정적인 그런 문구가 어떤 것만 쓰였는지 그걸로 돌리는 겁니다.
그래서 마지막 최종적인 거는 그걸로만 해서 돌리는 거죠. 그래서 결과론적으로는 보여지는 거죠. 그래서 과연 어떠한 단어가 들어갔었을 때는 과연 긍정적인 느낌에 뭔가 이게 나오고 또 어떠한 단어가 추가적으로 나왔었으며 이것에 대해서는 긍정적인 것이 있으니 이걸로 많이 상세 페이지 안에서도 키워드와 함께해서 어떤 어필할 만한 이런 것을 정리를 해서 그걸로 작업이 진행이 돼서 고객들에게 뭔가 상품으로서 장점을 보일 만한 것들은 더 많이 어필을 하면 되는 겁니다.
부정적인 것들은 어쩔 수가 없어요. 부정적인 것은 적게 팔든 그걸 사이드적으로 많이 숨기든 이런 식으로 가는 것은 맞고 고객들한테 더 어필하고 더 뭔가 긍정적으로 작용될 만한 이런 것을 더 강점적으로 부각을 시키자는 거죠. 이걸 통해서 만들어놓은 게 아래와 같은 정리입니다 해서 최종적으로는 아까 긍정적인 리뷰가 있지 않습니까? 긍정적인 리뷰 긍정적인 테스트를 가지고 긁어가지고 이거를 아래와 같은 이 형용사적인 감성적인 표현 이런 것들을 묶어서 보는 거죠.
#자료수집
from __future__ import print_function
import gspread
from oauth2client.service_account import ServiceAccountCredentials
import os
from googleapiclient.discovery import build
from httplib2 import Http
from oauth2client import file, client, tools
from googleapiclient.http import MediaFileUpload
import pickle
import os.path
from googleapiclient.discovery import build
from google_auth_oauthlib.flow import InstalledAppFlow
from google.auth.transport.requests import Request
from google.oauth2.credentials import Credentials
from google_auth_oauthlib.flow import InstalledAppFlow
from googleapiclient.discovery import build
from googleapiclient.errors import HttpError
import warnings
from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.action_chains import ActionChains
from selenium.common.exceptions import NoSuchElementException,StaleElementReferenceException
from bs4 import BeautifulSoup
import time
import pyperclip
import requests
import datetime
import pymssql
import pandas as pd
from pandas.core.frame import DataFrame
import matplotlib.pyplot as plt
import chromedriver_autoinstaller
import subprocess
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.alert import Alert
import chromedriver_autoinstaller
import subprocess
import shutil
import xlrd
import openpyxl
import pygsheets
import csv
import re
import webbrowser
import os
import sys
import urllib.request
import json
from pandas.io.json import json_normalize
import hashlib
import hmac
import base64
import numpy as np
import autoit #autoit는 반드시 autoit 프로그램이 깔려있어야됨
import pyautogui
from PIL import ImageGrab
try:
from PIL import Image
except ImportError:
import Image
import pytesseract
import cv2
import numpy as np
from google_drive_ocr.application import GoogleOCRApplication
import glob
file = open('C:/Users/user/raw/naver_blog/zflip3_bespoke_positive_results.txt', 'w', encoding='utf8') #긍정 텍스트만 결과파일로 만들기
n = 1 #첫번째
m = 800 #두번째
for i in range(2, 254) : #254번
client_id = "" #client ID 키
client_secret = "" #client secret ID 키
url="https://naveropenapi.apigw.ntruss.com/sentiment-analysis/v1/analyze"
headers = {
"X-NCP-APIGW-API-KEY-ID": client_id,
"X-NCP-APIGW-API-KEY": client_secret,
"Content-Type": "application/json"
}
f = open('C:/Users/user/Desktop/review_contents_zflip3_bespoke_stickers.txt', 'r', encoding='utf8')
text = f.read()
text_2 = text.replace("\n", "")
text_3 = text_2.replace("________________", " ")
content = text_3[n:m] #800단어씩
data = {
"content": content
}
print(json.dumps(data, indent=4, sort_keys=True))
response = requests.post(url, data=json.dumps(data), headers=headers)
rescode = response.status_code
if(rescode == 200):
print (response.text)
else:
print("Error : " + response.text)
f.close()
try :
text = response.json()
raw = text['sentences']
max_cnt = len(raw) #리스트 개수
#for i in range(0, max_cnt) :
# content = str(raw[i]['content']) #텍스트
# offset = int(raw[i]['highlights'][0]['offset']) #오프셋
# length = int(raw[i]['highlights'][0]['length']) #해당 길이
# text = content[offset : offset + length] #부정 의미가 있는 문구 텍스트 추출
#print(text)
# file.write(str(text) + '\n')
for i in range(0, max_cnt) :
if (raw[i]['sentiment'] == 'positive') : #긍정 의미를 가질경우
content = str(raw[i]['content']) #텍스트
offset = int(raw[i]['highlights'][0]['offset']) #오프셋
length = int(raw[i]['highlights'][0]['length']) #해당 길이
text = content[offset : offset + length] #긍정 의미가 있는 문구 텍스트 추출
print(text)
file.write(str(text) + '\n')
except :
print("에러가 났습니다. 다음껄로 이동")
n += 800
m += 800
time.sleep(10) #1분간
file.close()
이외 마지막으로 결론으로 예시를 만들어 보자면 색상, 스티커, 디자인, 색깔, 컬러, 조합, 색감, 퀄리티 등의 단어 사용시 긍정적인 느낌이 강했고, 핑크, 파스텔, 라벤더, 크림, 화이트, 블루 등의 컬러 단어가 나와 A 제품의 스티커 색상 선호가 가장 클 것으로 판단됩니다. 또한 투명케이스, 팔레트, 스트랩 등과 관련된 리뷰 내용은 퀄리티가 떨어진다는 부정적인 내용이 많이 들어가서 이에 따른 제품 개선이 요구될 것으로 보입니다.
이와 같이 결론이 나올 경우엔 이제 해당 내용을 바탕으로 상세 페에지 내에 어필할만한 감성적인 표현을 하기와 같이 정리, 이외 해당 내용과 함께 각종 상세 페이지 내 인용구, 소제목 및 제목, 해시태그, Alt tag 등에 키워드 삽입 등을 통한 작업을 진행합니다.
뿐만 아니라 인기 있는 디자인 및 제품 등의 설명이 나왔을 경우엔 별도로 앞면에 부각 배치하여 고객들이 가장 선호되는 이미지, 동영상 등을 제작하여 고객들에게 어필되는 상세 페이지 작업 등도 병행하여 만듭니다. 그리고 해당 내용을 토대로 SEO 최적화 및 개선된 상세 페이지를 통해 AS IS, TO BE 분석을 통하여 어느정도 개선되었는지를 이탈율, 평균 방문시간, 체류시간 등을 이전 대비 개선되었는지를 확인해보면 될 것 같습니다.
'Python' 카테고리의 다른 글
[파이썬] 티스토리 블로그 검색 API 확인 (0) | 2022.07.25 |
---|---|
[파이썬] 스마트스토어 네이버 쇼핑 검색 순위 모니터링 (0) | 2022.07.24 |
[파이썬] 구글 트렌드 API 활용해보기 (0) | 2022.07.21 |
[파이썬] 구글 비즈니스 프로필 API 이용해보기 (0) | 2022.07.20 |
[파이썬] 네이버 데이터랩 상품 인기 키워드 Top 500 크롤링 자동화 (1) | 2022.07.17 |
댓글