1 AERIEL PERSPECTIVE

In analyzing iPhone 14 customer reviews using sentiment analysis, the process involved utilizing natural language processing (NLP) techniques to assess the overall sentiment expressed in the reviews, providing valuable insights into customer satisfaction and potential areas for improvement.

2 ABOUT DATASET

The dataset is from Kaggle. Here is the link iPhone 14 Customer Reviews

This dataset contains reviews of the iPhone 14 from various customers. Each entry in the dataset includes information such as the title of the review, the rating given by the customer, the detailed review text, the name of the customer, the date when the review was posted, and the location of the customer. These reviews offer insights into customer opinions, satisfaction levels, and preferences regarding the iPhone 14.

Column Descriptions:

Title: Title or headline of the review provided by the customer. It summarizes the main point or sentiment expressed in the review.

Rating: Numerical rating given by the customer for the iPhone 14. Ratings typically range from 1 to 5, with 5 indicating the highest satisfaction level.

Review: Detailed text of the review where the customer shares their experiences, opinions, and feedback about the iPhone 14.

Customer Name: Name or identifier of the customer who wrote the review. It helps in tracking individual reviewers and analyzing their feedback.

Dates: Date when the review was posted by the customer. It provides temporal information for analyzing trends and changes in customer sentiment over time.

Customer Location: Location of the customer who wrote the review.

3 Setting Global Options

knitr::opts_chunk$set(echo=T,message=F,warning = F,tidy=T)

4 Importing Dataset

iphone_14 = read.csv(file.choose())

# Having a look on the dataset

library(dplyr)
library(knitr)

iphone_14 %>%
    str() %>%
    kable()
## 'data.frame':    1024 obs. of  6 variables:
##  $ title            : chr  "Terrific" "Fabulous!" "Great product" "Just wow!" ...
##  $ rating           : num  5 5 5 5 4 5 5 5 4 5 ...
##  $ review           : chr  "I bought iPhone 14 in big billion days. Very happy. Excellent Product deliveryExcellent hapticsExcellent Perfor"| __truncated__ "Best smart phone under this price range compare to other phones in 2023 if you see overall build quality, perfo"| __truncated__ "Nice camera but battery drain fast specially on video recordingREAD MORE" "GoodREAD MORE" ...
##  $ customer_name    : chr  "Sathvick Kumaran" "Rahul Prasad " "Tara singh mehra" "Avi Nash" ...
##  $ dates            : chr  "4 months ago" "Jan, 2023" "11 months ago" "Feb, 2023" ...
##  $ customer_location: chr  " The Nilgiris District" " Debipur" " Ramnagar" " Bengaluru" ...

5 Data Cleaning

5.1 Missing values

colSums(is.na(iphone_14)) %>%
    kable()
x
title 0
rating 72
review 0
customer_name 0
dates 0
customer_location 0
  • Column Rating has 72 missing values

5.2 Handling missing values

iphone_14 = iphone_14 %>%
    na.omit()  #removing rows with na values

# rechecking for missing values

colSums(is.na(iphone_14)) %>%
    kable()
x
title 0
rating 0
review 0
customer_name 0
dates 0
customer_location 0
  • missing values removed

5.3 Duplicated entries

anyDuplicated.default(iphone_14)
## [1] 0
  • no duplicated entries

5.4 Dropping unnecessary variables

iphone_14 = iphone_14 %>%
    dplyr::select(1:4, 6)

6 Customer Insights

6.1 1. Top 20 locations that has more customers buying iPhone 14

iphone_14$customer_location %>%
    table() %>%
    as.data.frame() %>%
    rename(Location = ".") %>%
    dplyr::arrange(desc(Freq)) %>%
    head(20) %>%
    kable()
Location Freq
New Delhi 50
Bengaluru 47
Hyderabad 21
Kolkata 20
Mumbai 19
Ahmedabad 16
Bhubaneswar 14
Lucknow 13
Chennai 11
Patna 11
Pune 11
Indore 10
Jaipur 10
Nagpur 10
Ghaziabad 9
Bangalore 8
Bharuch 8
Gaya 8
Gurugram 8
Guwahati 8
  • New Delhi and Bengeluri has more customers buying iPhone 14.

  • iPhone 14 company should open a branch in this locations to reach out to more customers and increase company sales

6.2 2. iPhone 14 Rating According to customers

iphone_14$rating %>%
    table() %>%
    as.data.frame() %>%
    rename(`Rating Score` = ".", Frequency = "Freq") %>%
    dplyr::arrange(desc(Frequency)) %>%
    kable()
Rating Score Frequency
5 748
4 168
3 36
  • Most customer gave a rating of 5 showing that there are liking the phone.

6.3 3. Sentiment Analysis According to Customer Title

library(tm)

# Create a corpus
corpus <- VCorpus(VectorSource(iphone_14$title))


# Cleansing Text*

# Text preprocessing*
corpus <- tm_map(corpus, content_transformer(tolower))
corpus <- tm_map(corpus, removePunctuation)
corpus <- tm_map(corpus, removeNumbers)
corpus <- tm_map(corpus, removeWords, stopwords("english"))

# Creating a Term-Document Matrix

dtm = DocumentTermMatrix(corpus)

library(wordcloud)
invisible(wordcloud(corpus))

include_graphics("word.png")

  • Most customers gave a review of positive words
library(conflicted)
library(tidytext)
library(tidyverse)

sentiment_scores <- iphone_14 %>%
    unnest_tokens(word, title) %>%
    inner_join(get_sentiments("bing")) %>%
    count(sentiment) %>%
    spread(sentiment, n, fill = 0)

sentiment_scores %>%
    kable()
negative positive
4 862
  • Many customers gave positive words as feedback.