<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>yu-na.log</title>
        <link>https://velog.io/</link>
        <description></description>
        <lastBuildDate>Fri, 23 May 2025 12:05:53 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <image>
            <title>yu-na.log</title>
            <url>https://velog.velcdn.com/images/yu-na/profile/706bd9db-7b7d-4087-bf4c-c0bbdf251111/social_profile.png</url>
            <link>https://velog.io/</link>
        </image>
        <copyright>Copyright (C) 2019. yu-na.log. All rights reserved.</copyright>
        <atom:link href="https://v2.velog.io/rss/yu-na" rel="self" type="application/rss+xml"/>
        <item>
            <title><![CDATA[<게재논문> 스마트 관광 활성화를 위한 트립어드바이저 애플리케이션 리뷰 분석 : 토픽 모델링을 중심으로]]></title>
            <link>https://velog.io/@yu-na/%EA%B2%8C%EC%9E%AC%EB%85%BC%EB%AC%B8-%EC%8A%A4%EB%A7%88%ED%8A%B8-%EA%B4%80%EA%B4%91-%ED%99%9C%EC%84%B1%ED%99%94%EB%A5%BC-%EC%9C%84%ED%95%9C-%ED%8A%B8%EB%A6%BD%EC%96%B4%EB%93%9C%EB%B0%94%EC%9D%B4%EC%A0%80-%EC%95%A0%ED%94%8C%EB%A6%AC%EC%BC%80%EC%9D%B4%EC%85%98-%EB%A6%AC%EB%B7%B0-%EB%B6%84%EC%84%9D-%ED%86%A0%ED%94%BD-%EB%AA%A8%EB%8D%B8%EB%A7%81%EC%9D%84-%EC%A4%91%EC%8B%AC%EC%9C%BC%EB%A1%9C</link>
            <guid>https://velog.io/@yu-na/%EA%B2%8C%EC%9E%AC%EB%85%BC%EB%AC%B8-%EC%8A%A4%EB%A7%88%ED%8A%B8-%EA%B4%80%EA%B4%91-%ED%99%9C%EC%84%B1%ED%99%94%EB%A5%BC-%EC%9C%84%ED%95%9C-%ED%8A%B8%EB%A6%BD%EC%96%B4%EB%93%9C%EB%B0%94%EC%9D%B4%EC%A0%80-%EC%95%A0%ED%94%8C%EB%A6%AC%EC%BC%80%EC%9D%B4%EC%85%98-%EB%A6%AC%EB%B7%B0-%EB%B6%84%EC%84%9D-%ED%86%A0%ED%94%BD-%EB%AA%A8%EB%8D%B8%EB%A7%81%EC%9D%84-%EC%A4%91%EC%8B%AC%EC%9C%BC%EB%A1%9C</guid>
            <pubDate>Fri, 23 May 2025 12:05:53 GMT</pubDate>
            <description><![CDATA[<p><img src="https://velog.velcdn.com/images/yu-na/post/e3c39ec8-acc9-4154-b808-093ec732b6a4/image.png" alt=""></p>
<h1 id="스마트-관광-활성화를-위한-트립어드바이저-애플리케이션-리뷰-분석--토픽-모델링을-중심으로"><em>스마트 관광 활성화를 위한 트립어드바이저 애플리케이션 리뷰 분석 : 토픽 모델링을 중심으로</em></h1>
<p><em>초록</em></p>
<blockquote>
<p>정보통신의 발달과 스마트 기기의 발전 및 보급 향상은 관광 형태의 변화를 야기하였고, 이후 스마트 관광이라는 개념이 등장하였다. 이에 스마트 관광 정책 및 설문에 관한 연구가 진행되고 있으나 애플리케이션 리뷰에 관한 연구는 미비한 편이다. 본 연구는 구글 플레이 스토어 내의 스마트 관광 분야의 대표적인 애플리케이션인 트립어드바이저 애플리케이션 리뷰 데이터를 수집하여 LDA(Latent Dirichlet Allocation)토픽 모델링을 통해 사용 용도와 사용자 만족을 파악하고자 한다. 분석 결과 4개의 토픽이 도출되었으며 2개의 토픽에서는 긍정적인 평가를 나머지 2개의 토픽에서는 부정적인 평가를 하고 있었다. 사용자들은 해당 애플리케이션의 숙박 및 관광 명소 추천 시스템에 만족하고 있음을 알 수 있었으며 검색 시 설정한 필터가 적용되지 않거나 업데이트 후 리뷰가 게시되지 않음에 불편을 겪음을 알 수 있었다. 이에 다양한 카테고리를 추가하여 사용자에게 다양한 경험을 제공함에 따라 만족도 향상에 도움이 될 것으로 기대된다. 또한 필터 기능을 포함한 애플리케이션 내의 문제를 파악하여 애플리케이션 환경 점검과 해당 기능 오류 개선을 한다면 사용자 만족도를 향상시킬 수 있을 것으로 기대된다.</p>
</blockquote>
<p>######
■ 중심어 : 스마트 관광; 관광 애플리케이션; 사용자 리뷰 분석; LDA; 텍스트 마이닝</p>
<p><a href="https://www.dbpia.co.kr/Journal/articleDetail?nodeId=NODE11783938">https://www.dbpia.co.kr/Journal/articleDetail?nodeId=NODE11783938</a></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[<코드>트립어드바이저 논문 코드]]></title>
            <link>https://velog.io/@yu-na/%EC%BD%94%EB%93%9C%ED%8A%B8%EB%A6%BD%EC%96%B4%EB%93%9C%EB%B0%94%EC%9D%B4%EC%A0%80-%EB%85%BC%EB%AC%B8-%EC%BD%94%EB%93%9C</link>
            <guid>https://velog.io/@yu-na/%EC%BD%94%EB%93%9C%ED%8A%B8%EB%A6%BD%EC%96%B4%EB%93%9C%EB%B0%94%EC%9D%B4%EC%A0%80-%EB%85%BC%EB%AC%B8-%EC%BD%94%EB%93%9C</guid>
            <pubDate>Fri, 23 May 2025 11:17:50 GMT</pubDate>
            <description><![CDATA[<blockquote>
<h2 id="messenger-코드와-치이점">Messenger 코드와 치이점</h2>
</blockquote>
<ol>
<li>(긍정/부정) 분리 유무
Messenger: 리뷰 평점(score)을 기준으로 긍정/부정 리뷰를 분리 후 각각 분석
TripAdvisor: 감성 구분 없이 전체 리뷰를 통합하여 분석</li>
<li>텍스트 전처리 방식
Messenger: 표제어 추출과 POS 태깅 사용 (NOUN, ADJ 등)
TripAdvisor: 표제어 추출 외에 bigram/trigram(연결된 단어들) 생성도 수행</li>
<li>토픽 수 결정 방법
Messenger: coherence score와 harmonic mean을 함께 사용
TripAdvisor: coherence score만 사용</li>
</ol>
<pre><code class="language-python">import re
import numpy as np
import pandas as pd
from pprint import pprint

# Gensim
import gensim
import gensim.corpora as corpora
from gensim.utils import simple_preprocess
from gensim.models import CoherenceModel

# spacy for lemmatization
import spacy

# Plotting tools
import pyLDAvis
import pyLDAvis.gensim_models
import matplotlib.pyplot as plt

#Enable logging for gensim
import logging
logging.basicConfig(format=&#39;%(asctime)s:%(levelname)s:%(message)s&#39;,level=logging.ERROR)

import warnings
warnings.filterwarnings(&#39;ignore&#39;,category=DeprecationWarning)

# NLTK stop words
from nltk.corpus import stopwords
stop_words=stopwords.words(&#39;english&#39;)
stop_words.extend([&#39;great&#39;,&#39;app&#39;,&#39;good&#39;,&#39;apps&#39;,&#39;really&#39;,&#39;nice&#39;])

import os

df=pd.read_csv(&quot;./dataset/tripadvisor.csv&quot; )
df.columns
df=df[[&#39;content&#39;]]
df=df.dropna()
df[&#39;content&#39;]=df[&#39;content&#39;].astype(str)
df[&#39;content&#39;]=df[&#39;content&#39;].apply(lambda x: x.encode(&quot;utf-8&quot;).decode(&quot;ascii&quot;,&quot;ignore&quot;))


# Tokenize words and Clean-up text
data= df.content.values.tolist()
def content_to_words(sentences):
    for sentence in sentences:
        yield (gensim.utils.simple_preprocess(str(sentence),deacc=True)) #deacc=True removes punctuations

data_words=list(content_to_words(data))
print(data_words[:1])
count=[len(sublist) for sublist in data_words ]
df[&#39;words&#39;]=data_words
df[&#39;review_len&#39;]=count
data_words=[sublist for sublist in data_words if len(sublist)&gt;1]
df=df[df[&#39;words&#39;].map(len) &gt;1]

# Creating Bigram and Trigram Models
bigram=gensim.models.Phrases(data_words,min_count=5,threshold=10) #higher threshold fewer phrase
trigram=gensim.models.Phrases(bigram[data_words],threshold=10)

#faster way to get a sentence clubbed as a trigram/bigram
bigram_mod=gensim.models.phrases.Phraser(bigram)
trigram_mod=gensim.models.phrases.Phraser(trigram)


# Remove Stopwords, Make Bigrams and Lemmatize
# Define functions for stopwards, bigrams, trigrams and lemmatization
def remove_stopwords(texts):
    return[[word for word in simple_preprocess(str(doc))if word not in stop_words]for doc in texts]

def make_bigram(texts):
    return [bigram_mod[doc] for doc in texts]

def make_trigrams(texts):
    return[trigram_mod[bigram_mod[doc]] for doc in texts]

def lemmatization(texts, allowed_postags=[&#39;NOUN&#39;,&#39;ADJ&#39;,&#39;VERB&#39;,&quot;ADV&quot;]):
    &quot;&quot;&quot;https://spacy.io/api/annotation&quot;&quot;&quot;
    texts_out=[]
    for content in texts:
        doc=nlp(&quot; &quot;.join(content))
        texts_out.append([token.lemma_ for token in doc if token.pos_ in allowed_postags])
    return texts_out

# remove stopwords
data_words_nostops= remove_stopwords(data_words)

# form bigrams
data_words_bigram= make_bigram(data_words_nostops)
print(data_words_bigram[:1])

data_words_trigram=make_trigrams(data_words_nostops)
print(data_words_trigram[:1])

nlp=spacy.load(&quot;en_core_web_sm&quot;,disable=[&#39;parser,ner&#39;])
data_lemmatized= lemmatization(data_words_trigram,allowed_postags=[&#39;NOUN&#39;,&#39;ADJ&#39;,&#39;VERB&#39;,&#39;ADV&#39;])

print(data_lemmatized[:1])
df[&#39;words&#39;]=data_lemmatized

data_lemmatized=[sublist for sublist in data_lemmatized if len(sublist)&gt;1]
df=df[df[&#39;words&#39;].map(len) &gt;1]

id2word= corpora.Dictionary(data_lemmatized)

#Create Corpus
texts=(data_lemmatized)

#Term Document Frequency
corpus=[id2word.doc2bow(text) for text in texts]

print(corpus[:1])

#If you want to see what word a given id corresponds to, pass the id as a key to the dictionary.
id2word[0]

[[(id2word[id],freq) for id, freq in cp]for cp in corpus[:1]]

def compute_coherence_values(dictionary, corpus, texts, limit, start=2, step=3):
    coherence_values = []
    model_list = []
    for num_topics in range(start, limit, step):
        model = gensim.models.ldamodel.LdaModel(corpus=corpus,id2word=id2word,
                                         num_topics=num_topics,random_state=100,
                                         alpha=&#39;auto&#39;,per_word_topics=True)
        model_list.append(model)

        coherencemodel = CoherenceModel(model=model, texts=texts, dictionary=dictionary, coherence=&#39;c_v&#39;)
        coherence_values.append(coherencemodel.get_coherence())
    return model_list, coherence_values

model_list, coherence_values = compute_coherence_values(dictionary=id2word, corpus=corpus, texts=texts, start=2, limit=20, step=2)

#Show graph
limit=20; start=2; step=2;
x = range(start, limit, step)
plt.plot(x, coherence_values)
plt.xlabel(&quot;Num Topics&quot;)
plt.ylabel(&quot;Coherence score&quot;)
plt.legend((&quot;coherence_values&quot;), loc=&#39;best&#39;)
plt.show()



lda_model= gensim.models.ldamodel.LdaModel(corpus=corpus,id2word=id2word,
                                           num_topics=4,random_state=100,
                                           alpha=&#39;auto&#39;,per_word_topics=True)

# Print the Keyword in the 10 topics
doc_lda=lda_model[corpus]
pprint(lda_model.print_topics())


#compute perplexity
lda_perplexity=lda_model.log_perplexity(corpus)
print(&#39;\nPerplexity:&#39;,lda_perplexity)# a measure of how good the model is, lower the better.


#compute coherence score
coherence_model_lda=CoherenceModel(model=lda_model,texts=texts,dictionary=id2word,coherence=&#39;u_mass&#39;)
coherence_lda=coherence_model_lda.get_coherence()
print(&#39;\nCoherence Score:&#39;,coherence_lda)

vis=pyLDAvis.gensim_models.prepare(lda_model,corpus,id2word)
pyLDAvis.save_html(vis,&quot;TripAdvisor2.html&quot;)

# 1. Wordcloud of Top N words in each topic
from matplotlib import pyplot as plt
from wordcloud import WordCloud, STOPWORDS
import matplotlib.colors as mcolors

cols = [color for name, color in mcolors.TABLEAU_COLORS.items()]  # more colors: &#39;mcolors.XKCD_COLORS&#39;

cloud = WordCloud(stopwords=stop_words,
                  background_color=&#39;white&#39;,
                  max_words=50,
                  colormap=&#39;tab10&#39;,
                  color_func=lambda *args, **kwargs: cols[i],
                  prefer_horizontal=1.0)

topics = lda_model.show_topics(num_words=50,formatted=False)

fig, axes = plt.subplots(2, 2, figsize=(30,30), sharey=True)

for i, ax in enumerate(axes.flatten()):
    fig.add_subplot(ax)
    topic_words = dict(topics[i][1])
    cloud.generate_from_frequencies(topic_words, max_font_size=300)
    plt.gca().imshow(cloud,interpolation=&#39;bilinear&#39;)
    plt.gca().set_title(&#39;Topic &#39; + str(i), fontdict=dict(size=16))
    plt.gca().axis(&#39;off&#39;)


plt.subplots_adjust(wspace=5, hspace=5)
plt.axis(&#39;off&#39;)
plt.margins(x=5, y=5)
plt.tight_layout()
plt.show()

def format_topics_sentences(ldamodel=None, corpus=corpus, texts=data):
    # Init output
    sent_topics_df = pd.DataFrame()

    # Get main topic in each document
    for i, row_list in enumerate(ldamodel[corpus]):
        row = row_list[0] if ldamodel.per_word_topics else row_list
        # print(row)
        row = sorted(row, key=lambda x: (x[1]), reverse=True)
        # Get the Dominant topic, Perc Contribution and Keywords for each document
        for j, (topic_num, prop_topic) in enumerate(row):
            if j == 0:  # =&gt; dominant topic
                wp = ldamodel.show_topic(topic_num)
                topic_keywords = &quot;, &quot;.join([word for word, prop in wp])
                sent_topics_df = sent_topics_df.append(pd.Series([int(topic_num), round(prop_topic,4), topic_keywords]), ignore_index=True)
            else:
                break
    sent_topics_df.columns = [&#39;Dominant_Topic&#39;, &#39;Perc_Contribution&#39;, &#39;Topic_Keywords&#39;]

    # Add original text to the end of the output
    contents = pd.Series(texts)
    sent_topics_df = pd.concat([sent_topics_df, contents], axis=1)
    return(sent_topics_df)


df_topic_sents_keywords = format_topics_sentences(ldamodel=lda_model, corpus=corpus, texts=texts)

# Format
df_dominant_topic = df_topic_sents_keywords.reset_index()
df_dominant_topic.columns = [&#39;Document_No&#39;, &#39;Dominant_Topic&#39;, &#39;Topic_Perc_Contrib&#39;, &#39;Keywords&#39;, &#39;Text&#39;]
df_dominant_topic.head(10)
df[[&#39;Dominant_Topic&#39;, &#39;Topic_Perc_Contrib&#39;, &#39;Keywords&#39;]]=df_dominant_topic[[&#39;Dominant_Topic&#39;, &#39;Topic_Perc_Contrib&#39;, &#39;Keywords&#39;]].values

import  os
file_path = os.getcwd()
file_name = &#39;tripadvisor_topics2 .xlsx&#39;
save_file = os.path.join(file_path, file_name)
df.to_excel(save_file,
                 engine=&#39;openpyxl&#39;,
                 startrow=0,
                 startcol=0,
                 header=True,
                 na_rep=&#39;NaN&#39;,
                 float_format=&#39;%.2f&#39;,
                 sheet_name=&#39;Sheet1&#39;
                 )


#pyLDAvis 저장
#pyLDAvis.save_html(vis,&quot;200314_after_neg_lda_model_4.html&quot;)

from gensim.test.utils import datapath
#saving model to disk.
temp_file = datapath(&quot;tripadvisor_model&quot;)
lda_model.save(temp_file)


#loading model from disk

from gensim import  models

lda = models.ldamodel.LdaModel.load(temp_file)

#로드
# neg_4 = datapath(&quot;230314_after_neg_lda_model_4&quot;)
# neg_lda4= models.ldamodel.LdaModel.load(neg_4)
# vis = pyLDAvis.gensim_models.prepare(neg_lda4, neg_corpus, neg_id2word)
# pyLDAvis.save_html(vis,&quot;200313_after_neg_lda_model_4.html&quot;)

all_topics = {}
num_terms = 10  # Adjust number of words to represent each topic
lambd = 1
# Adjust this accordingly based on tuning above
topic_Term = []
topic_relevance = []
for i in range(1, 5):  # Adjust this to reflect number of topics chosen for final LDA model
    topic = vis.topic_info[vis.topic_info.Category == &#39;Topic&#39; + str(i)].copy()
    topic[&#39;relevance&#39;] = topic[&#39;loglift&#39;] * (1 - lambd) + topic[&#39;logprob&#39;] * lambd
    topic_Term.append(topic[&#39;Term&#39;])
    topic_relevance.append(topic[&#39;relevance&#39;])
    all_topics[&#39;Topic &#39; + str(i)] = topic.sort_values(by=&#39;relevance&#39;, ascending=False).Term[:num_terms].values

pd.DataFrame(all_topics).T


wc = WordCloud(width=1000, height=1000, background_color=&quot;white&quot;)

plt.figure(figsize=(30,30))
for t in range(lda_model.num_topics):
    plt.subplot(2,2,t+1)
    x = dict(zip(topic_Term[t],topic_relevance[t]))
    im = wc.generate_from_frequencies(x)
    plt.imshow(im)
    plt.axis(&quot;off&quot;)
    plt.title(&quot;Topic #&quot; + str(t+1), size=50)

plt.show()</code></pre>
]]></description>
        </item>
        <item>
            <title><![CDATA[<코드>Messenger  논문 코드]]></title>
            <link>https://velog.io/@yu-na/%EC%BD%94%EB%93%9CMessenger-%EB%85%BC%EB%AC%B8-%EC%BD%94%EB%93%9C</link>
            <guid>https://velog.io/@yu-na/%EC%BD%94%EB%93%9CMessenger-%EB%85%BC%EB%AC%B8-%EC%BD%94%EB%93%9C</guid>
            <pubDate>Fri, 23 May 2025 10:58:58 GMT</pubDate>
            <description><![CDATA[<blockquote>
<h2 id="분석-흐름-요약">분석 흐름 요약</h2>
</blockquote>
<ol>
<li>Google Play Store에서 Messenger 앱 리뷰 크롤링</li>
<li>리뷰 날짜 기준으로 팬데믹 전(before) / 후(after) 분리</li>
<li>thumbsUpCount == 0인 리뷰 제거 → 실제 반응 중심으로 정제</li>
<li>긍정/부정 리뷰 분류 (별점 기준)</li>
<li>텍스트 전처리 (불용어 제거, 표제어 추출 등)</li>
<li>gensim을 통한 LDA 토픽 모델링 → 최적 토픽 수 선정</li>
<li>토픽 시각화 (pyLDAvis, WordCloud)</li>
<li>토픽별 주요 키워드 정리 &amp; 영향력 있는 리뷰 추출</li>
<li>사용자 반응의 변화 포착: 팬데믹 전후 긍·부정 리뷰의 주제 비교</li>
</ol>
<h2 id="1-라이브러리-불러오기">1. 라이브러리 불러오기</h2>
<pre><code class="language-python">from google_play_scraper import Sort, reviews_all
import pandas as pd
import nltk
import spacy
import warnings
import time
import matplotlib.pyplot as plt
import matplotlib.font_manager as fm
import numpy as np
from nltk.corpus import stopwords
from gensim.utils import simple_preprocess
import gensim.corpora as corpora
from gensim.models import CoherenceModel, LdaModel
from gensim.test.utils import datapath
from wordcloud import WordCloud
import pyLDAvis
import pyLDAvis.gensim_models
import dataframe_image as dfi
import re</code></pre>
<h2 id="2-google_play_scraper를-통한-리뷰-크롤링">2. google_play_scraper를 통한 리뷰 크롤링</h2>
<pre><code class="language-python">messenger_review=reviews_all(&#39;com.facebook.orca&#39;,
                           sleep_milliseconds=0,
                           lang=&#39;en&#39;,
                           country=&#39;us&#39;,
                           sort=Sort.NEWEST,
                           filter_score_with=None)

df=pd.DataFrame.from_records(messenger_review)
df.head()
df.to_csv(&quot;/Users/lyn/messenger/messenger.csv&quot;)</code></pre>
<h2 id="3-데이터-기간-설정-및-팬데믹-전과-후로-나누기">3. 데이터 기간 설정 및 팬데믹 전과 후로 나누기</h2>
<pre><code class="language-python">df[&#39;at&#39;] = pd.to_datetime(df[&#39;at&#39;])
df[&#39;at&#39;] = df[&#39;at&#39;].dt.strftime(&#39;%Y-%m-%d&#39;)
df = df[df[&#39;at&#39;] &gt;= &#39;2018-01-01&#39;]
df = df[df[&#39;at&#39;] &lt;= &#39;2022-09-30&#39;]

before = df[df[&#39;at&#39;] &lt; &#39;2020-03-11&#39;]
after = df[df[&#39;at&#39;] &gt;= &#39;2020-03-11&#39;]

before.to_excel(&quot;/Users/lyn/messenger/before.xlsx&quot;)
after.to_excel(&quot;/Users/lyn/messenger/after.xlsx&quot;)</code></pre>
<h2 id="4-데이터-불러오기">4. 데이터 불러오기</h2>
<pre><code class="language-python">before = pd.read_excel(&#39;/Users/lyn/messenger/before.xlsx&#39;)
before</code></pre>
<h2 id="5-thumbsupcount-0이면-삭제">5. thumbsUpCount 0이면 삭제</h2>
<pre><code class="language-python">data = before[before[&quot;thumbsUpCount&quot;] != 0]
data</code></pre>
<h2 id="6-score-기준으로-긍정-부정으로-분류">6. score 기준으로 긍정, 부정으로 분류</h2>
<pre><code class="language-python">pos = data[(data[&#39;score&#39;].isin([4, 5]))][&#39;content&#39;]
neg = data[(data[&#39;score&#39;].isin([1, 2]))][&#39;content&#39;]

print(&#39;긍정 : &#39; + str(len(pos)) + &#39;개, &#39; + &#39;부정 : &#39; + str(len(neg)) + &#39;개&#39;)
print(&#39;총 : &#39; + str(len(pos)+len(neg)) + &#39;개&#39;)</code></pre>
<h2 id="7-영어-알파벳과-숫자를-제외한-문자-제거-및-리스트-형태로">7. 영어 알파벳과 숫자를 제외한 문자 제거 및 리스트 형태로</h2>
<pre><code class="language-python">def remove_non_english(text):
    return re.sub(r&#39;[^a-zA-Z0-9\s]&#39;, &#39;&#39;, text)

def sent_to_words(sentences):
    for sentence in sentences:
        yield gensim.utils.simple_preprocess(remove_non_english(str(sentence)), deacc=True)

pos_words = list(sent_to_words(pos))
neg_words = list(sent_to_words(neg))</code></pre>
<h2 id="8-불용어-제거">8. 불용어 제거</h2>
<pre><code class="language-python">stop_words = stopwords.words(&#39;english&#39;) + [&#39;app&#39;, &#39;messenger&#39;, &#39;application&#39;, &#39;aap&#39;,&#39;m&#39;,&#39;aap&#39;,&#39;facebook&#39;]

def remove_stopwords(texts):
    return [[word for word in simple_preprocess(str(doc)) if word not in stop_words] for doc in texts]

pos_words_nostops = remove_stopwords(pos_words)
neg_words_nostops = remove_stopwords(neg_words)</code></pre>
<h2 id="9-표제어-추출">9. 표제어 추출</h2>
<pre><code class="language-python">nlp = spacy.load(&#39;en_core_web_sm&#39;, disable=[&#39;parser&#39;, &#39;ner&#39;])

def lemmatization(texts, allowed_postags=[&#39;NOUN&#39;, &#39;ADJ&#39;, &#39;VERB&#39;, &#39;ADV&#39;]):
    texts_out = []
    for sent in texts:
        doc = nlp(&quot; &quot;.join(sent)) 
        texts_out.append([token.lemma_ for token in doc if token.pos_ in allowed_postags])
    return texts_out

pos_lemmatized = lemmatization(pos_words_nostops)
neg_lemmatized = lemmatization(neg_words_nostops)</code></pre>
<h2 id="10-dictionary-및-corpus-생성">10. Dictionary 및 Corpus 생성</h2>
<pre><code class="language-python">pos_id2word = corpora.Dictionary(pos_lemmatized)
neg_id2word = corpora.Dictionary(neg_lemmatized)

pos_corpus = [pos_id2word.doc2bow(text) for text in pos_lemmatized]
neg_corpus = [neg_id2word.doc2bow(text) for text in neg_lemmatized]</code></pre>
<h2 id="11-토픽수-정하기_일관성-복잡도-조화-평균-구하기">11. 토픽수 정하기_일관성, 복잡도, 조화 평균 구하기</h2>
<pre><code class="language-python">coherencesT=[]
perplexitiesT=[]
ntopicsT=[]
warnings.filterwarnings(&#39;ignore&#39;)

for i in range(1,10):
    if i==1:
        ntopics = 2
    else:
        ntopics = i+1
    nwords = 100
    tic = time.time()
    ldamodel = gensim.models.ldamodel.LdaModel(pos_corpus, id2word=pos_id2word, num_topics=ntopics)
    print(&#39;ntopics&#39;,ntopics,time.time() - tic)
    ntopicsT.append(ntopics)

    cm = CoherenceModel(model=ldamodel, texts=pos_lemmatized, corpus=pos_corpus, coherence=&#39;c_v&#39;)
    coherence = cm.get_coherence()
    coherencesT.append(coherence)

    perplexitiesT.append(ldamodel.log_perplexity(pos_corpus))


plt.rcParams[&#39;font.size&#39;] = 20  # Set desired font size

plt.plot(ntopicsT, coherencesT)
plt.ylabel(&quot;Coherences&quot;)
plt.title(&#39;Before_POS&#39;)
plt.show()

plt.plot(ntopicsT, perplexitiesT)
plt.xlabel(&quot;ntopics&quot;)
plt.ylabel(&quot;Perplexity&quot;)
plt.show()

# Calculate harmonic mean
harmonic_mean = 2 * (np.array(coherencesT) * np.array(perplexitiesT)) / (np.array(coherencesT) + np.array(perplexitiesT))

# Visualize harmonic mean
plt.plot(ntopicsT, harmonic_mean)
plt.xlabel(&quot;ntopics&quot;)
plt.ylabel(&quot;Harmonic Mean&quot;)
plt.show()</code></pre>
<h2 id="12-lda-모델링-및-pyldavis-시각화">12. LDA 모델링 및 pyLDAvis 시각화</h2>
<pre><code class="language-python">#모델링
pos_lda_model_4 = gensim.models.ldamodel.LdaModel(corpus=pos_corpus, id2word=pos_id2word, num_topics=4)

#시각화
vis = pyLDAvis.gensim_models.prepare(pos_lda_model_4, pos_corpus, pos_id2word)
pyLDAvis.display(vis)</code></pre>
<h2 id="13-모델-저장-및-로드">13. 모델 저장 및 로드</h2>
<pre><code class="language-python">#pyLDAvis 저장
pyLDAvis.save_html(vis,&quot;200313_before_pos_lda_model_4.html&quot;)

#저장
pos_4 = datapath(&quot;230313_before_pos_lda_model_4&quot;)
pos_lda_model_4.save(pos_4)

#로드
pos_4 = datapath(&quot;230313_before_pos_lda_model_4&quot;)
pos_lda4= models.ldamodel.LdaModel.load(pos_4)
vis = pyLDAvis.gensim_models.prepare(pos_lda4, pos_corpus, pos_id2word)</code></pre>
<h2 id="14-테이블-그리기">14. 테이블 그리기</h2>
<pre><code class="language-python">all_topics = {}
num_terms = 10
lambd = 1

topic_Term=[]
topic_relevance=[]
for i in range(1,5):
    topic = vis.topic_info[vis.topic_info.Category == &#39;Topic&#39;+str(i)].copy()
    topic[&#39;relevance&#39;] = topic[&#39;loglift&#39;]*(1-lambd)+topic[&#39;logprob&#39;]*lambd
    topic_Term.append(topic[&#39;Term&#39;])
    topic_relevance.append(topic[&#39;relevance&#39;])
    all_topics[&#39;Topic &#39;+str(i)] = topic.sort_values(by=&#39;relevance&#39;, ascending=False).Term[:num_terms].values

pd.DataFrame(all_topics).T</code></pre>
<h2 id="15-키워드별-비율-구하기">15. 키워드별 비율 구하기</h2>
<pre><code class="language-python">for topic in pos_lda4.show_topics():
    print(topic)</code></pre>
<h2 id="16-워드-클라우드-생성-및-저장">16. 워드 클라우드 생성 및 저장</h2>
<blockquote>
<p>####</p>
</blockquote>
<ul>
<li>max_words ＝ 워드클라우드 키워드 수</li>
<li>font_path ＝ 글꼴 파일 경로 (기본값 : 200)</li>
<li>background_color ＝ 배경색 (기본값 : black)</li>
<li>width = 출력 이미지의 가로 길이 （픽셀 단위 / 기본값 : 400)</li>
<li>height = 출력 이미지의 세로 길이 (픽셀 단위 / 기본값 : 200)</li>
<li>max_font_size = 키워드 글꼴의 최대 크기 （기본값 : None — 제한 없음)</li>
<li>min_font_size ＝ 키워드 글꼴의 최소 크기 （기본값 : 4)</li>
</ul>
<pre><code class="language-python">#한글 깨짐 방지를 위한 폰트 설정
fontpath = &quot;/System/Library/Fonts/Supplemental/AppleGothic.ttf&quot;
font = fm.FontProperties(fname=fontpath, size=12)

wc = WordCloud(font_path=fontpath, width=1000, height=1000, background_color=&quot;white&quot;)

plt.figure(figsize=(30,30))
for t in range(pos_lda4.num_topics):
    plt.subplot(2,2,t+1)
    x = dict(zip(topic_Term[t],topic_relevance[t]))
    im = wc.generate_from_frequencies(x)
    plt.imshow(im)
    plt.axis(&quot;off&quot;)
    plt.title(&quot;Topic #&quot; + str(t+1), fontproperties=font, size=50)

# 이미지 저장
plt.show()
plt.savefig(&#39;팬데믹 전 긍정 2*2.png&#39;)</code></pre>
<h2 id="17-토픽별-리뷰-영향-파악">17. 토픽별 리뷰 영향 파악</h2>
<pre><code class="language-python"># pos_lda4 모델의 corpus와 dictionary 사용
corpus = pos_corpus
dictionary = pos_id2word

# 토픽별 가장 큰 값의 문서 index를 저장할 딕셔너리 초기화
top_docs_by_topic = {i: [] for i in range(pos_lda4.num_topics)}

# 모든 문서에 대해서 토픽 분포 계산 및 토픽별 가장 큰 값의 문서 index 저장
for i, row_list in enumerate(pos_lda4[corpus]):
    row = row_list[0] if pos_lda4.per_word_topics else row_list
    row = sorted(row, key=lambda x: (x[1]), reverse=True)

    top_topic = row[0][0]
    top_value = row[0][1]
    top_docs_by_topic[top_topic].append((i, top_value))

# 각 토픽별 가장 영향력 있는 문서들을 출력 결과를 파일에 저장
with open(&#39;before the pandemic pos.txt&#39;, &#39;w&#39;) as f:
    # 각 토픽별 가장 영향력 있는 문서들을 출력
    for i in range(pos_lda4.num_topics):
        f.write(f&quot;\n토픽 {i}에서 가장 영향력 있는 문서 10개:\n&quot;)
        top_docs = sorted(top_docs_by_topic[i], key=lambda x: x[1], reverse=True)[:10]
        for doc_index, value in top_docs:
            doc = pos_content[doc_index]
            f.write(f&quot;- {doc}\n&quot;)

    # 각 문서별 Dominant topic, Perc Contribution, Topic Keywords 정보를 출력 결과를 파일에 저장
    df_topic_sents_keywords = format_topics_sentences(ldamodel=pos_lda4, corpus=corpus, texts=pos_content)
    df_dominant_topic = df_topic_sents_keywords.reset_index()
    df_dominant_topic.columns = [&#39;Document_No&#39;, &#39;Dominant_Topic&#39;, &#39;Topic_Perc_Contrib&#39;, &#39;Keywords&#39;, &#39;Text&#39;]
    df_dominant_topic.to_csv(&#39;before the pandemic pos_dominant_topic.csv&#39;, index=False)</code></pre>
]]></description>
        </item>
        <item>
            <title><![CDATA[<발표논문> 0과잉 포아송 모형을 활용한 불법주정차 예측 모델링]]></title>
            <link>https://velog.io/@yu-na/%EB%B0%9C%ED%91%9C%EB%85%BC%EB%AC%B8-0%EA%B3%BC%EC%9E%89-%ED%8F%AC%EC%95%84%EC%86%A1-%EB%AA%A8%ED%98%95%EC%9D%84-%ED%99%9C%EC%9A%A9%ED%95%9C-%EB%B6%88%EB%B2%95%EC%A3%BC%EC%A0%95%EC%B0%A8-%EC%98%88%EC%B8%A1-%EB%AA%A8%EB%8D%B8%EB%A7%81</link>
            <guid>https://velog.io/@yu-na/%EB%B0%9C%ED%91%9C%EB%85%BC%EB%AC%B8-0%EA%B3%BC%EC%9E%89-%ED%8F%AC%EC%95%84%EC%86%A1-%EB%AA%A8%ED%98%95%EC%9D%84-%ED%99%9C%EC%9A%A9%ED%95%9C-%EB%B6%88%EB%B2%95%EC%A3%BC%EC%A0%95%EC%B0%A8-%EC%98%88%EC%B8%A1-%EB%AA%A8%EB%8D%B8%EB%A7%81</guid>
            <pubDate>Fri, 23 May 2025 10:54:02 GMT</pubDate>
            <description><![CDATA[<h1 id="한국스마트미디어학회-2023-스마트미디어-심포지움">한국스마트미디어학회 2023 스마트미디어 심포지움</h1>
<h3 id="일시--2023년-10월-26일--10월-28일">일시 : 2023년 10월 26일 ~ 10월 28일</h3>
<h3 id="장소--순천대학교-70주년기념관산학협력관">장소 : 순천대학교 70주년기념관&amp;산학협력관</h3>
<h3 id="주최--사한국스마트미디어학회사한국전자거래학회">주최 : 사)한국스마트미디어학회/사)한국전자거래학회</h3>
<h2 id="초록"><em>초록</em></h2>
<blockquote>
<p> 증가하는 자동차 대수로 인해 불법 주정차 문제가 심각해지고 있다. 이에 불법 주정차 요인 분석, 불법 주정차 감지 방법 등에 관한 연구가 진행되고 있으나 예측에 관한 연구는 미비하다. 이에 본 연구는 대구광역시 달서구 불법 주정차 데이터를 시간 단위로 예측하여 불법 주정차 발생 패턴을 파악하고 불법 주정차 예방에 기여하고자 한다. 연구에 사용된 데이터는 공공데이터 포탈과 D-데이터 허브의 대구광역시 달서구 불법 주정차 데이터이다. 불법 주정차가 발생한 정확한 지점을 파악하기 위해 두 데이터를 유사도 90%를 기준으로 병합하였으며 분석에 사용된 데이터는 총 182,163개이다. 불법 주정차 데이터는 해당 사건이 감지된 시점에만 기록됨으로 0값이 대다수이다. 이에 본 연구는 0과잉 포아송 모형을 통해 시간 단위 예측을 진행하였다. 본 연구를 바탕을 혼잡이 예상되는 지점을 사전에 파악하여 더욱 효율적인 교통 단속이 가능할 것으로 기대된다.</p>
</blockquote>
<p><img src="https://velog.velcdn.com/images/yu-na/post/e57d2eb0-fc98-43bd-9899-374b83f6d3eb/image.png" alt=""></p>
<p>프로시딩 <a href="https://www.kism.or.kr/bbs/board.php?bo_table=DA01030000&amp;wr_id=111&amp;sst=wr_hit&amp;sod=desc&amp;sop=and&amp;page=4">https://www.kism.or.kr/bbs/board.php?bo_table=DA01030000&amp;wr_id=111&amp;sst=wr_hit&amp;sod=desc&amp;sop=and&amp;page=4</a></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[<게재논문> Analyzing User Feedback on a Fan Community Platform 'Weverse': A Text Mining Approach ]]></title>
            <link>https://velog.io/@yu-na/%EA%B2%8C%EC%9E%AC%EB%85%BC%EB%AC%B8-Analyzing-User-Feedback-on-a-Fan-Community-Platform-Weverse-A-Text-Mining-Approach</link>
            <guid>https://velog.io/@yu-na/%EA%B2%8C%EC%9E%AC%EB%85%BC%EB%AC%B8-Analyzing-User-Feedback-on-a-Fan-Community-Platform-Weverse-A-Text-Mining-Approach</guid>
            <pubDate>Fri, 23 May 2025 10:37:25 GMT</pubDate>
            <description><![CDATA[<h1 id="-analyzing-user-feedback-on-a-fan-community-platform-weverse-a-text-mining-approach-">* Analyzing User Feedback on a Fan Community Platform &#39;Weverse&#39;: A Text Mining Approach *</h1>
<p><em>Abstract</em></p>
<blockquote>
<p>This study applies topic modeling to uncover user experience and app issues expressed in users&#39; online reviews of a fan community platform, Weverse on Google Play Store. It allows us to identify the features which need to be improved to enhance user experience or need to be maintained and leveraged to attract more users. Therefore, we collect 88,068 first-level English online reviews of Weverse on Google Play Store with Google-Play-Scraper tool. After the initial preprocessing step, a dataset of 31,861 online reviews is analyzed using Latent Dirichlet Allocation (LDA) topic modeling with Gensim library in Python. There are 5 topics explored in this study which highlight significant issues such as network connection error, delayed notification, and incorrect translation. Besides, the result revealed the app&#39;s effectiveness in fostering not only interaction between fans and artists but also fans&#39; mutual relationships. Consequently, the business can strengthen user engagement and loyalty by addressing the identified drawbacks and leveraging the platform for user communication.
######
Keywords: Weverse| Topic modeling| LDA| Fan community platform| Communication</p>
</blockquote>
<p><em>Van Ho, T. T., Noh, M. J., Lee, Y. N., &amp; Kim, Y. S. (2024). Analyzing User Feedback on a Fan Community Platform&#39;Weverse&#39;: A Text Mining Approach. 스마트미디어저널, 13(6), 62-71.</em></p>
<p><a href="https://www.dbpia.co.kr/journal/articleDetail?nodeId=NODE11979888">https://www.dbpia.co.kr/journal/articleDetail?nodeId=NODE11979888</a></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[<게재논문>Empowering Agriculture: Exploring User Sentiments and Suggestions for Plantix, a Smart Farming Application]]></title>
            <link>https://velog.io/@yu-na/%EA%B2%8C%EC%9E%AC%EB%85%BC%EB%AC%B8%EC%8A%A4%EB%A7%88%ED%8A%B8-%EA%B4%80%EA%B4%91-%ED%99%9C%EC%84%B1%ED%99%94%EB%A5%BC-%EC%9C%84%ED%95%9C-%ED%8A%B8%EB%A6%BD%EC%96%B4%EB%93%9C%EB%B0%94%EC%9D%B4%EC%A0%80-%EC%95%A0%ED%94%8C%EB%A6%AC%EC%BC%80%EC%9D%B4%EC%85%98-%EB%A6%AC%EB%B7%B0-%EB%B6%84%EC%84%9D-%ED%86%A0%ED%94%BD-%EB%AA%A8%EB%8D%B8%EB%A7%81%EC%9D%84-%EC%A4%91%EC%8B%AC%EC%9C%BC%EB%A1%9C</link>
            <guid>https://velog.io/@yu-na/%EA%B2%8C%EC%9E%AC%EB%85%BC%EB%AC%B8%EC%8A%A4%EB%A7%88%ED%8A%B8-%EA%B4%80%EA%B4%91-%ED%99%9C%EC%84%B1%ED%99%94%EB%A5%BC-%EC%9C%84%ED%95%9C-%ED%8A%B8%EB%A6%BD%EC%96%B4%EB%93%9C%EB%B0%94%EC%9D%B4%EC%A0%80-%EC%95%A0%ED%94%8C%EB%A6%AC%EC%BC%80%EC%9D%B4%EC%85%98-%EB%A6%AC%EB%B7%B0-%EB%B6%84%EC%84%9D-%ED%86%A0%ED%94%BD-%EB%AA%A8%EB%8D%B8%EB%A7%81%EC%9D%84-%EC%A4%91%EC%8B%AC%EC%9C%BC%EB%A1%9C</guid>
            <pubDate>Fri, 23 May 2025 10:27:04 GMT</pubDate>
            <description><![CDATA[<p><img src="https://velog.velcdn.com/images/yu-na/post/336fe468-3827-4eaf-b274-a64a6bb02c90/image.png" alt=""></p>
<h1 id="empowering-agriculture-exploring-user-sentiments-and-suggestions-for-plantix-a-smart-farming-application"><em>Empowering Agriculture: Exploring User Sentiments and Suggestions for Plantix, a Smart Farming Application</em></h1>
<p><em>Abstract</em></p>
<blockquote>
<p>Farming activities are transforming from traditional skill-based agriculture into knowledgebased and technology-driven digital agriculture. The use of intelligent information and communication technology introduces the idea of smart farming that enables farmers to collect weather data, monitor crop growth remotely and detect crop diseases easily. The introduction of Plantix, a pest and disease management tool in the form of a mobile application has allowed farmers to identify pests and diseases of the crop using their mobile devices. Hence, this study collected the reviews of Plantix to explore the response of the users on the Google Play Store
towards the application through Latent Dirichlet Allocation (LDA) topic modeling. Results indicate four latent topics in the reviews: two positive evaluations (compliments, appreciation) and two suggestions (plant options, recommendations). We found the users suggested the application to additional plant options and additional features that might help the farmers with their difficulties. In addition, the application is expected to benefit the farmer more by having an early alert of diseases to farmers and providing various substitutes and a list of components for the remedial measures. 
######
<em>Keywords : Smart farming|Plant disease detection|User review analytics|LDA|Text Mining</em></p>
</blockquote>
<p><em>Siow, M. Q., Han, M. M. C., Lee, Y. N., Yu, S. Y., Noh, M. J., &amp; Kim, Y. S. (2023). Empowering Agriculture: Exploring User Sentiments and Suggestions for Plantix, a Smart Farming Application. 스마트미디어저널, 12(10), 38-46.</em></p>
<p><a href="https://www.dbpia.co.kr/Journal/articleDetail?nodeId=NODE11783938">https://www.dbpia.co.kr/Journal/articleDetail?nodeId=NODE11783938</a></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[<발표논문>COVID-19 팬데믹 기간 Messenger 어플리케이션 평점-리뷰 분석]]></title>
            <link>https://velog.io/@yu-na/%EB%B0%9C%ED%91%9C%EB%85%BC%EB%AC%B8COVID-19-%ED%8C%AC%EB%8D%B0%EB%AF%B9-%EA%B8%B0%EA%B0%84-Messenger-%EC%96%B4%ED%94%8C%EB%A6%AC%EC%BC%80%EC%9D%B4%EC%85%98-%ED%8F%89%EC%A0%90-%EB%A6%AC%EB%B7%B0-%EB%B6%84%EC%84%9D</link>
            <guid>https://velog.io/@yu-na/%EB%B0%9C%ED%91%9C%EB%85%BC%EB%AC%B8COVID-19-%ED%8C%AC%EB%8D%B0%EB%AF%B9-%EA%B8%B0%EA%B0%84-Messenger-%EC%96%B4%ED%94%8C%EB%A6%AC%EC%BC%80%EC%9D%B4%EC%85%98-%ED%8F%89%EC%A0%90-%EB%A6%AC%EB%B7%B0-%EB%B6%84%EC%84%9D</guid>
            <pubDate>Fri, 23 May 2025 10:17:05 GMT</pubDate>
            <description><![CDATA[<h1 id="한국스마트미디어학회_2023종합학술대회">한국스마트미디어학회_2023종합학술대회</h1>
<h3 id="일시--2023년-04월-27일--04월-29일">일시 : 2023년 04월 27일 ~ 04월 29일</h3>
<h3 id="장소--제주대학교-아라컨벤션홀">장소 : 제주대학교 아라컨벤션홀</h3>
<h3 id="주최--사한국스마트미디어학회">주최 : 사)한국스마트미디어학회</h3>
<h2 id="초록"><em>초록</em></h2>
<blockquote>
<p> COVID-19 팬데믹 영향으로 대면 소통이 어려워지면서 메신저 애플리케이션을 통한 소통이 증가하고 있다. 이에 따라 원격 교육이나 원격 의료 등에 관한 연구가 진행되고 있으나 팬데믹이 메신저 애플리케이션 리뷰에 미친 영향에 관한 연구는 미비한 편이다. 이에 본 연구의 목적은 Messenger 애플리케이션의 리뷰를 분석해 사용자들의 만족도를 향상하기 위한 방안을 도출하는 것이다. 이에 google-play-scraper를 통해 구글플레이스토어에서 Messenger 애플리케이션 리뷰를 수집한 후 평점을 기준으로 1, 2는 부정으로 4, 5는 긍정으로 분류했다. 분석에 사용한 데이터는 긍정 리뷰 25,266개와 부정 리뷰 43,540개이다. gensim기반 LDA (Latent Dirichlet Allocation) 기법을 통해 분석을 진행한 결과 긍정의 경우 업데이트, 발신 기능, 사용 목적, 사용 경험과 같은 토픽이 나타났다. 부정의 경우는 발신 기능, 알림 기능, 채팅 기능, 계정 관리와 같은 토픽이 나타났다. 본 연구 결과를 바탕으로 애플리케이션개발자들은 해당 부분에 초점을 맞춰 애플리케이션을 유지 및 보수하면 사용자 만족도를 높일 수 있을 것이다.</p>
</blockquote>
<p><img src="https://velog.velcdn.com/images/yu-na/post/f6eb6367-e0bc-442d-b9e9-083f453b8afa/image.png" alt=""></p>
<p>프로시딩 <a href="https://www.kism.or.kr/bbs/board.php?bo_table=DA01030000&amp;wr_id=110&amp;sst=wr_hit&amp;sod=desc&amp;sop=and&amp;page=4">https://www.kism.or.kr/bbs/board.php?bo_table=DA01030000&amp;wr_id=110&amp;sst=wr_hit&amp;sod=desc&amp;sop=and&amp;page=4</a></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[<게재논문>팬데믹 기간 Messenger 애플리케이션 리뷰 변화를 통한 서비스 전략 분석]]></title>
            <link>https://velog.io/@yu-na/%EA%B2%8C%EC%9E%AC%EB%85%BC%EB%AC%B8-%ED%8C%AC%EB%8D%B0%EB%AF%B9-%EA%B8%B0%EA%B0%84-Messenger-%EC%95%A0%ED%94%8C%EB%A6%AC%EC%BC%80%EC%9D%B4%EC%85%98-%EB%A6%AC%EB%B7%B0-%EB%B3%80%ED%99%94%EB%A5%BC-%ED%86%B5%ED%95%9C-%EC%84%9C%EB%B9%84%EC%8A%A4-%EC%A0%84%EB%9E%B5-%EB%B6%84%EC%84%9D</link>
            <guid>https://velog.io/@yu-na/%EA%B2%8C%EC%9E%AC%EB%85%BC%EB%AC%B8-%ED%8C%AC%EB%8D%B0%EB%AF%B9-%EA%B8%B0%EA%B0%84-Messenger-%EC%95%A0%ED%94%8C%EB%A6%AC%EC%BC%80%EC%9D%B4%EC%85%98-%EB%A6%AC%EB%B7%B0-%EB%B3%80%ED%99%94%EB%A5%BC-%ED%86%B5%ED%95%9C-%EC%84%9C%EB%B9%84%EC%8A%A4-%EC%A0%84%EB%9E%B5-%EB%B6%84%EC%84%9D</guid>
            <pubDate>Thu, 22 May 2025 12:46:50 GMT</pubDate>
            <description><![CDATA[<p><img src="https://velog.velcdn.com/images/yu-na/post/038c8f0e-270a-461f-b76c-8cd56c23a16d/image.png" alt=""></p>
<h1 id="팬데믹-기간-messenger-애플리케이션-리뷰-변화를-통한-서비스-전략-분석"><em>팬데믹 기간 Messenger 애플리케이션 리뷰 변화를 통한 서비스 전략 분석.</em></h1>
<p><em>초록</em></p>
<blockquote>
<p>COVID-19 팬데믹 영향으로 대면 소통이 어려워지면서 비대면 소통의 영향을 파악하는 연구가 진행되고 있으나 메신저 애플리케이션 리뷰를 통해 이를 살펴본 연구는 미비하다. 본 연구는 구글 플레이 스토어 내의 메신저 애플 리케이션 리뷰 데이터를 수집하여 LDA(Latent Dirichlet Allocation)토픽 모델링을 통해 팬데믹의 영향을 파악 하고, 이에 따른 서비스 전략 방안을 제시하고자 한다. 연구에서는 팬데믹이 시작된 시점과 사용자가 부여한 평점 을 기준으로 데이터를 분류하였다. 분석 결과 주로 중장년층이 메신저를 사용하는 것으로 나타났으며, 팬데믹 이후 에는 가족과의 소통이 증가한 것으로 확인되었다. 사용자들은 애플리케이션의 업데이트에 대해 불만을 표현하였으 며, 변화에 대한 적응이 어려움을 보였다. 이에 업데이트 주기를 조정하고 사용자들의 의견을 적극 수용하는 개발 접근이 필요하다. 또한, 직관적이고 간편한 사용자 인터페이스(UI)를 제공한다면 사용자 만족도를 향상시킬 수 있 을 것으로 기대된다.
######
■중심어 : 메신저 애플리케이션 ; 코로나 ; 사용자 리뷰 분석 ; LDA ; 사용자 만족</p>
</blockquote>
<p><em>이유나, 노미진, &amp; 김양석. (2023). 팬데믹 기간 Messenger 애플리케이션 리뷰 변화를 통한 서비스 전략 분석. 스마트미디어저널, 12(6), 15-26.</em></p>
<p><a href="https://www.dbpia.co.kr/Journal/articleDetail?nodeId=NODE11737962">https://www.dbpia.co.kr/Journal/articleDetail?nodeId=NODE11737962</a></p>
]]></description>
        </item>
    </channel>
</rss>