• 대한전기학회
Mobile QR Code QR CODE : The Transactions of the Korean Institute of Electrical Engineers
  • COPE
  • kcse
  • 한국과학기술단체총연합회
  • 한국학술지인용색인
  • Scopus
  • crossref
  • orcid

  1. (Dept. of Software, Korea National University of Transportation, Korea)



Fake review detection, similarity-based detection, Natural Language Processing, Term Frequency, doc2vec

1. 서 론

인터넷과 스마트폰의 이용 증대로 소셜네트워크서비스(Social Network Service; SNS)의 이용이 급속도로 확산되었으며, SNS의 확산은 고객들의 행동 변화를 유발하게 되어 마케팅 시장에 변화를 가져왔다. 소비자들은 기업이 제공하는 정보보다 SNS 상의 후기 및 평판에 대한 신뢰가 높으며 구매 결정 단계에서 SNS 상의 정보에 크게 의존한다. 특히 외식업은 소비자가 직접 경험하기전까지는 그 결과를 미리 알 수 없는 특성을 갖고 있어 소비자들에게 외식 블로그의 정보는 구매에 영향을 크게 미친다(1).

때문에 외식산업 분야에서 블로그는 훌륭한 커뮤니케이션의 수단으로 활용되고 있다. 현재 국내 대표 포털 사이트 내 블로그의 주제 중 맛집이 별도의 카테고리로 존재하는 만큼 블로그는 외식 관련 정보를 검색하는주요 채널로 이용이 되고 있다(2).

이러한 점을 이용하여 블로거가 사업주로부터 대가를 지급받고 의도적으로 긍정적인 상품의 리뷰를 작성하는 이른바 ‘거짓 리뷰’ 가 생겨나 소비자들의 피해가 점차 커지고 있다.

이에 대비해 공정거래위원회는 사업주로부터 후원을 받고 글을 작성하는 경우 이를 명시하도록 하고 있지만 후원 표시 없이 블로그 마케팅을 진행하는 것이 더욱 효과적이기 때문에 이를 이용하는 경우가 존재한다(3).

때문에 소비자들도 나름의 거짓 리뷰를 판별하기 위해 특정 키워드를 제거하거나, 비속어를 함께 검색하는 등의 방법을 사용하지만 거짓 리뷰를 의뢰하는 사업자들도 이를 인지하며 발전하고 있어 검사를 통해 이를 미리 선별하여 소비자들을 방어할 수단의 필요성이 높다.

본 논문에서는 수집한 최신 음식점 리뷰 데이터 분석을 통해 거짓 리뷰의 특징을 추출하고, 수집한 데이터들의 유사도 검사를 통해 한글로 작성된 음식점 리뷰의 진위 여부를 판별하는 데에 대한 TF, TF-IDF, doc2vec의 성능을 비교하고자 한다.

2. Body

2.1 TF, TF-IDF, doc2vec

TF(Term Frequency)는 각 문서 간의 연관성을 수치로 확인하고자 할 때 단어가 몇 번 출현했는지를 나타내는 수치이다. TF 기법은 단어가 여러 번 출현되었다면 그 빈도수만큼 문서 간의 연관성이 있을 것이라는 가설을 배경으로 한다(4).

TF-IDF(Term Frequency-Inverse Document Frequency)는 관사와 같이 문장과의연관성이 낮음에도 불구하고 자주 출현하는 단어들이 문서 간의 연관성 수치에 영향을 끼치는 TF 기법의 단점을 개선하기 위해 단어에 제한을 두는 기법으로 검색엔진에서 사용하는 텍스트 데이터 처리 알고리즘이다(4).

doc2vec은 Word2Vec의 확장 기법으로 단순히 단어의 출현에 의지하지 않고, 단어와 단어 사이의 의미를 고려해 벡터화한다(5).

Example 1) A boy is sitting on a chair. The boy is my son.

Example 2) A girl is sitting on a bench. The girl is my daughter.

위 두 가지 예문으로 TF, TF-IDF, doc2vec을 살펴보면 다음과 같다.

표 1의 TF 값을 보면 ‘a’, ‘boy’, ‘is’가 2번의 출현으로 같은 TF 값을 가진다. 이는 문장과 연관성이 낮은 ‘a’가 단순히 출현 빈도가 높아 문장 속 중요한 단어인 ‘boy’와 같은 TF 값을 가져 TF 값 만으로는한 문장 내 다른 단어와의 연관성을 나타내기 힘든 점을 보여준다. 특정 단어가 문서 전체에서 얼마나 공통적으로 나타나는지 확인하여 문장 내 출현 빈도가 높은 연관성 없는 단어들을 제한할 필요가 있다(4).

표 1. 예문1의 TF Values

Table 1. TF Values of Example 1

Word

TF

a

2/12

boy

2/12

is

2/12

sitting

1/12

on

1/12

chair

1/12

the

1/12

my

1/12

son

1/12

표 2에서는 예문 두 개의 문장을 분자에 2를 삽입하고 각 단어는 몇 개의 문장에 출현되었는지 분모에 삽입한 후 로그를 취한다. ‘a’, ‘is’, ‘sitting’등 두 문장에서 모두 사용된 단어의 경우 log(2/2), 즉 IDF 값이 0이 된다. ‘boy’, ‘girl’ 등과 같은 단어의 경우 두 문장 중 한 문장에서만 출현했으므로 log(2/1) 즉 0.3의 IDF 값을 가지게 된다. 위 값의 결과와 같이 ‘a’와 같이 두 문장에 모두 나타난 단어는 제한을 받게 된다(4).

표 2. 예문 1, 2의 IDF Values

Table 2. IDF Valuesof Example 2

Word

IDF

a

log(2/2)

boy

log(2/1)

girl

log(2/1)

is

log(2/2)

sitting

log(2/2)

on

log(2/2)

chair

log(2/1)

bench

log(2/1)

the

log(2/2)

my

log(2/2)

son

log(2/1)

daughter

log(2/1)

그림. 1. 예문 1, 2 의 doc2vec Vector Values

Fig. 1. doc2vec Vector Values of Example 1, 2

../../Resources/kiee/KIEE.2020.69.6.924/fig1.png

반면 doc2vec은 단어의 출현 빈도수에만 의지하지 않고 벡터 값을 계산하기 때문에 단어가 다르더라도 연관성이 있는 단어들의 벡터 값이 비슷한 모습을 띈다.

2.2 State of restaurant review

그림. 2. 음식점 리뷰

Fig. 2. Restaurant Reviews

../../Resources/kiee/KIEE.2020.69.6.924/fig2.png

그림 2는 네이버 블로그 포스트를 ‘맛집’ 키워드로 검색한 결과를 수집한 데이터이다. 이와 같은 블로그 음식점 리뷰는 하루에도 수십 건 이상 작성되고 있으며, 전체 데이터는 2천만 건을 훌쩍 넘어 3천만 건에 다다른다. 음식점 리뷰글은 대체적으로 본문의 길이가 길고 내용이 서로 다른 모습이 나타난다. 하지만 거짓 리뷰의 경우 의뢰하는 사업자의 요청에 따른 일정한 형식(평균에 비해 많은 사진의 개수, ‘지역명’과 ‘맛집’ 같은 특정 키워드의 잦은 언급, 댓글 기능 비활성화 등)이 드러난다. 이미 등록된 글도 약 3천만 건 정도로 매우 많고, 새로 등록되는 글도 하루에 수십 건에 육박하기 때문에 이를 사람이 직접 판단하기에는 큰 무리가 있어 이미 등록된 거짓 리뷰와의 유사도를 구하여 진위 여부를 1차적으로 판별해 주는 기능의 필요성이 있다.

2.3 Experiment and Evaluation

2.3.1 Experimental environment

Python의 BeautifulSoup 라이브러리와 네이버 검색 api를 이용하여 크롤링 하였고, Python의 pandas 라이브러리를 이용하여 데이터를 분석하고 처리하였다. 한글로 작성된 리뷰를 형태소 별로 토큰화하기 위해 KoNLPy의 Kkma 클래스(6)를 사용하였으며 토큰화된 데이터를 벡터화하기 위해 sklearn의 TF, TF-IDF, gensim의 doc2vec 알고리즘을 적용하였다.

2.3.1.1 Comparison of Kkma class of KoNLPy and Komoran class of KoNLPy

KoNLPy의 Kkma 클래스의 경우 아래와 같은 예문을 표 3과 같이 토큰화한다.

Example 3) 강남역에 있는 맛집 추천합니다.

표 3. Kkma 클래스의 예문3 토큰화 결과

Table 3. Kkma class Tokenization Results of Example 3

Morpheme

Part of speech

강남

NNG

NNG

JKM

VV

ETD

NNG

NNG

추천

NNG

XSV

ㅂ니다

EPN

.

SF

KoNLPy의 다른 클래스인 Komoran 클래스의 경우 예문 3을 표 4와 같이 토큰화한다.

두 클래스를 제외한 KoNLPy의 다른 3개의 클래스도 Komoran과 비슷한 모습을 띈다.

위 결과와 같이 Kkma 클래스가 KoNLPy의 다른 클래스들에 비하여 명사를 더욱 세분화하여 토큰 화해 Kkma 클래스를 채택하였다.

표 4. Komoran 클래스의 예문3 토큰화 결과

Table 4. Komoran class Tokenization Results of Example 3

Morpheme

Part of speech

강남역

NNP

JKB

VV

ETM

맛집

NNG

추천

NNG

XSV

ㅂ니다

EF

.

SF

2.3.2 Experimental data

실험에는 국내 포털사이트 중 가장 큰 점유율을 가지고 있는 네이버의 블로그 포스트 중 ‘맛집’ 키워드를 이용한 검색 결과를 크롤링을 통해 수집한 블로거 ID, 제목, 본문, 사진 개수, 댓글 허용 유무 등의 정보를 가진 8,902개의 리뷰 데이터를 사용하였다.

2.3.2.1 Experimental data collection method

네이버 개발자 센터에 애플리케이션을 등록 후 생성된 Client ID와 Client Secret 값을 사용하여 검색 api를 이용하였다. 블로그 글을 검색하는 쿼리를 이용하여 ‘맛집’이라는 키워드를 유사도 순으로 검색한 값 약 3,000개와 최신 순으로 검색한 값 약 5,900개를 수집하였다. 수집한 데이터의 속성은 다음과 같다.

표 5. 수집한 데이터의 컬럼명과 설명

Table 5. Column Name and Description of Collected Data

Column Name

Description

url

URL of blog post

title

Title of the post

date

Upload Date

content

Text content of body

image_count

Number of images in the body

blogger_nickname

Blogger's nickname

blogger_id

Blogger's ID

comment

Whether the comment function is not allowed

2.3.2.2 Experimental data processing method

수집한 데이터의 본문 텍스트 내용 중 ‘추천’, ‘맛집’, ‘체험단’, ‘자료’ 키워드의 개수를 세어 각각 열을 추가하여 값을 넣었고, 본문 텍스트 내용을 KoNLPy의 Kkma 클래스를 이용해 토큰화하여 나온 명사들을 미리 수집한 한국 법정 동명과 시군구 명을 이용하여 비교해 일치하는 개수를 세어 열을 추가하여 값을 넣었다. 가공하여 추가된 속성은 다음과 같다.

표 6. 가공된 데이터의 추가된 컬럼명과 설명

Table 6. Column Name and Description Added to Processed Data

Column Name

Description

Recommendation

Number of '추천' words in the text

restaurant

Number of '맛집' words in the text

reference

Number of '자료' words in the text

sponsor

Number of '체험단' words in the text

region

The number of legal Korean names and city and county names in the text

spam

Fake Review Status

2.3.3 Experimental method

본 실험에서는 ground truth가 존재하지 않으므로 거짓 리뷰의 특징을 이용해 탐지한 리뷰를 ground truth로 이용했다. 실험에서 이용한 거짓 리뷰의 특징은 다음과 같다.

표 7. 거짓 리뷰 특징

Table 7. Characteristics of Fake Review

Characteristic

Content

1

Where the area name is mentioned more than $n_1$ times

2

Keyword '추천' is mentioned more than $n_2$ times

3

Keyword '맛집' is mentioned more than $n_3$ times

4

The '체험단' keyword exists.

5

The '자료' keyword exists.

6

If more than $n_4$ pictures are attached

7

The comment function is disabled.

위 특징 중 3가지 이상을 만족하는 리뷰는 거짓 리뷰로 판단한다. 본 실험에서는 $n_{1}...n_{4}$의 값을 각각 10, 3, 5, 30으로 설정하였다.

각 리뷰의 본문 내용을 KoNLPy의 kkma 클래스를 이용해 형태소 별로 토큰화하여 TF, TF-IDF, doc2vec으로 각각 벡터화를 한다. 이후 각 알고리즘 별로 해당 리뷰를 제외한 다른 모든 리뷰들의 본문 데이터와 유사도를 구하여 유사도가 가장 높은 상위 10개의 리뷰 중 7개 이상의 리뷰가 거짓 리뷰인 경우 이는 거짓 리뷰라고 판단하였다.

2.3.4 Evaluation method

Recall은 Sensitivity라고도 부르고 거짓 리뷰 중 알고리즘이 정답을 맞힌 비율이며, Specificity는 진실 리뷰 중 알고리즘이 정답을 맞힌 비율이다. Precision은 거짓 리뷰라고 알고리즘이 분류한 리뷰가 정말로 거짓 리뷰 일 확률이다. Accuracy(정확도)는 전체 리뷰 중 알고리즘이 맞춘 비율을 말한다. 진실 리뷰를 거짓 리뷰로 잘못 탐지를 하는 경우, 음식점의 방문이 줄어드는 등과 같은 큰 부정적인 영향을 미칠 수 있기 때문에, specificity가 높을수록 좋다. 즉 거짓 리뷰라고 판별이 되었을 때는 이 안에 진실 리뷰가 적게 섞일수록 좋으며 따라서 precision이 높을수록 좋다.

표 8. Confusion Matrix

Table 8. Confusion Matrix

Fake Review

Real Review

Predicted Fake Review

True Positive (TP)

False Positive (FP)

Predicted Real Review

False Negative (FN)

True Negative (TN)

$Precision =\dfrac{TP}{TP+FP}$ $\quad$ $Recall =\dfrac{TP}{TP+FN}$

$Accuracy =\dfrac{TP+TN}{TP+FP+FN+TN}$ $\quad$ $Specific y =\dfrac{TN}{TN+FP}$

2.3.5 Experiment Results and Evaluation

수집한 8,092 개의 데이터 중 1,534 개가 거짓 리뷰였고 이 중 TF, TF-IDF, doc2vec 은 각각 1,507 개, 567 개, 262 개의 거짓 리뷰를 탐지하였다. 즉 거짓 리뷰를 거짓 리뷰라고 판별할 확률 (Recall)은 TF가 가장 높았다. Recall 은 각각98.24%, 36.96%, 17.08%이었다 (표 10). Recall만을 보면 TF의 성능이 가장 우수해 보이지만, 각각 6,503 개, 834 개, 79 개의 진실 리뷰를 거짓 리뷰라고 판단하고 있으며, 이는 TF의 specificity가 매우 낮음을 보여준다 (표 10, specificity, TF: 11.74%, TF-IDF: 88.68%, doc2vec: 98.93%). TF는 단순히 많은 리뷰를 거짓 리뷰라 판단하고 있어, 정확도가 매우 떨어진다 (표 10, accuracy, TF: 26.65%, TP-IDF: 79.77%, doc2vec: 84.82%)

표 9. 알고리즘별 실험 결과

Table 9. Algorithm-specific experimental results

TP

FP

FN

TN

TF

1,507

6,503

27

865

TF-IDF

567

834

967

6,534

doc2vec

262

79

1,272

7,289

표 10. 알고리즘별 실험 결과

Table 10. Algorithm-specific experimental results

Accuracy

Precision

Specificity

Recall

Average

TF

26.65%

18.81%

11.74%

98.24%

38.86%

TF-IDF

79.77%

40.47%

88.68%

36.96%

61.47%

doc2vec

84.82%

76.83%

98.93%

17.08%

69.42%

전체 리뷰 중 1534개가 거짓 리뷰인데 (약 17.23%), TF는 전체 리뷰 중 89.98%의 리뷰를 거짓 리뷰로 판별하고, TF-IDF는 15.74%, doc2vec은 3.83%만을 거짓 리뷰로 판별하는 것을 볼 때, TF는 거의 대부분의 리뷰를 거짓 리뷰로 판별하고, doc2vec은 거의 대부분의 리뷰를 진실 리뷰로 판단하는 것을 알 수 있다. 즉, doc2vec은 리뷰가 거짓 리뷰라고 결론을 잘 내리지 않는 소극적인 모습을 보인다. 그러나 거짓 리뷰라고 판별하였을 때는 확실히 거짓인 것들만을 포함하는 것이 리뷰를 작성한 사람의 의견에 섣부른 판단을 내리지 않는 것이므로, precision이 높을수록 좋은 모델이라고 할 수 있다. 이런 점에서 doc2vec은 가장 높은 precision을 보여주며 신중한 판단을 하고 있는 것으로 보인다.

예측한 진실 리뷰 중 TF, TF-IDF, doc2vec 은 각각 865 개, 6,534 개, 7,289 개가 진실 리뷰였으며, 각각 27 개, 967 개, 1,270 개가 거짓 리뷰였다. 진실 리뷰 중 알고리즘이 정확하게 맞춘 경우를 보여주는 specificity는 doc2vec이 가장 높았으며, 누구나 작성하여 인터넷에 개시를 할 수 있는 블로그 음식점 리뷰의 특성상 섣부른 판단이 되어서는 안되기 때문에 doc2Vec의 결과가 가장 좋다고 생각된다.

그림. 3. 알고리즘별 비교 그래프

Fig. 3. Algorithm-specific comparison graph

../../Resources/kiee/KIEE.2020.69.6.924/fig3.png

3. Conclusion

본 논문에서는 음식점 거짓 리뷰를 판단하는 데에는 doc2vec이 가장 적합하며 TF 가 가장 부적합하다는 것을 검증하였다. TF는 단순히 단어의 출현 빈도수만 고려하여 두 문서 간의 내용에 대한 유사도를 구하지만, doc2vec의 경우 단어와 단어 사이의 의미를 고려하여 두 문서 간 내용의 유사도를 구한다. 때문에 doc2vec의 경우 두 문서 간 사용된 단어가 일치하지 않더라도 전체 내용이 유사하면 유사도가 높게 나온다.

TF, TF-IDF, doc2vec을 이용하여 본문을 벡터화 한 후 유사도 비교를 통해 탐지한 결과를 다양한 성능 평가 방법을 활용하여 비교해 보았다. 그 결과 TF가 가장 많은 거짓 리뷰를 탐지하였지만, 사실 대부분의 리뷰를 거짓 리뷰로 판별하고 있어, 많은 진실 리뷰를 거짓 리뷰로 판단하여 specificity가 눈에 띄게 낮았다. 또한 거짓 리뷰로 판별된 경우의 다수는 잘못된 탐지로 precision 또한 매우 낮았다. 이는 결과적으로 TF는 가장 낮은 정확도를 보여주고 있음을 의미한다. 반면 doc2vec 은 가장 적은 거짓 리뷰를 탐지했지만, 거짓 리뷰로 판단하면 거짓 리뷰 일 확률이 가장 높았다(Precision). 또한 진실 리뷰를 거짓 리뷰로 판단하는 오류가 적어 specificity 또한 가장 높았다. 이는 결과적으로 높은 정확도로 이어졌다. 개인이 작성하여 누구나 인터넷에 개제할 수 있는 블로그 음식점 리뷰의 특성상, 신중한 판단이 중요하고 이런 측면에서 doc2vec 이 가장 적합하다고 생각한다.

본 연구에 사용된 분류 방식은 단순히 다른 리뷰와의 유사도를 기반으로 하고 있다. 가장 유사도가 높은 10개의 리뷰 중 7개 이상의 리뷰가 거짓 리뷰일 경우 거짓 리뷰로 판단하였는데, 여기서 사용된 7개라는 숫자는 임의로 설정된 것이다. 즉 해당 값의 변경에 따라서 본 연구의 결과는 달라질 수 있다. 그러나 이렇게 단순한 분류 방식을 사용하였음에도 불구하고, 비교한 3가지 피쳐 추출 알고리즘의 차이를 명확하게 볼 수 있었으며, 이는 딥러닝과 같은 최신 분류 모델을 적용할 경우에도 다르지 않을 것으로 생각된다. 향후 연구에서는 doc2vec 을 이용하여 다른 리뷰들과의 유사도뿐만 아니라, 최신 알고리즘을 적용, 거짓 리뷰 데이터를 학습하여 판단하는 모델에 대하여 연구를 해보고자 한다.

Acknowledgements

This was supported by Korea National University of Transportation in 2020.

References

1 
Jieung Kim, Yiyeon Kim, 2015, How the characteristics of the food-blog marketing effect to purchasing intension with the mediation effect of trust, International Journal of Tourism Management and Sciences, Vol. 30, No. 5, pp. 85-105Google Search
2 
Jihyun Oh, 2014, A Study on the Effect of the Directivity of Online Word-of-mouth Information on the Brand Attitude and Purchasing Intention of Customers when Searching for Eating Out Information through Blog Review, The Korean Society for Franchise Management Academic presentation papers, Vol. 2014, No. 11, pp. 347-366Google Search
3 
Heejung Lee, Jungyoon Yum, Se-Hoon Jeong, 2014, Effects of source type and sponsorship notification in blog marketing: An application of the persuasion knowledge model, Journal of Cybercommunication Academic Society, Vol. 31, No. 3, pp. 95-130Google Search
4 
Jonghwa Lee, Jongweon Kim, Moonbong Lee, 2019, A study on Korean language processing using TF-IDF, The Journal of Information Systems, Vol. 28, No. 3, pp. 105121DOI
5 
Quoc Le, Tomas Mikolov, 2014, Distributed Representations of Sentences and Documents, in International Conference on Machine LearningGoogle Search
6 
Eunjeong Park, Sungzoon Cho, 2014, KoNLPy: Korean natural language processing in Python, in Annual Conference on Human and Language Technology, pp. 133-136Google Search

저자소개

강한솔 (Hansol Kang)
../../Resources/kiee/KIEE.2020.69.6.924/au1.png

2021 pursuing the B.S. degree in Dept. of Software from Korea National University of Transportation, Korea.

Interests : Data Analytics, NLP and Machine Learning.

윤성욱 (Seongwook Youn)
../../Resources/kiee/KIEE.2020.69.6.924/au2.png

1997 B.S. degree in Computer Science from Sogang University, Seoul, Korea.

2002 M.S. Electrical Engineering, University of Southern California.

2009 Ph.D. Computer Science, University of Southern California.

2012~2013 LG Electronics CTO Researcher.

2015.9~currently Professor at Dept. of Software, Korea National University of Transportation, Korea.

Interests : Market Data Forecast, Data Science, Personal Information Management, etc.