Zero Shot Classification of Reviews

Author
Affiliation

Group 19

Rutgers University, New Brunswick

Top 5 Labels for Positive Sentiment

C:\Users\chira\AppData\Local\Temp\ipykernel_11780\2217802626.py:10: FutureWarning:



Passing `palette` without assigning `hue` is deprecated and will be removed in v0.14.0. Assign the `x` variable to `hue` and set `legend=False` for the same effect.

Reliable service” stands out as the most frequently praised feature. Customer service and ease of use follow as other key drivers of positive sentiment.

Top 5 Labels for Negative Sentiment

Code
# Negative sentiment
negative_labels = top_label_counts[top_label_counts['sentiment'].str.lower() == 'negative']
negative_top5 = negative_labels.sort_values(by='count', ascending=False).head(5)

plt.figure(figsize=(10,5))
sns.barplot(x='top_label', y='count', data=negative_top5, palette="Set2")
plt.title('Top 5 Top Labels - Negative Sentiment')
plt.xlabel('Top Label')
plt.ylabel('Count')
plt.xticks(rotation=45)
plt.tight_layout()
plt.show()
C:\Users\chira\AppData\Local\Temp\ipykernel_11780\3209300340.py:7: FutureWarning:



Passing `palette` without assigning `hue` is deprecated and will be removed in v0.14.0. Assign the `x` variable to `hue` and set `legend=False` for the same effect.

Unresponsive customer service” dominates negative feedback. Price-related concerns and delivery issues (missing items, wait times) are also significant.

Top 5 Labels for Neutral Sentiment

Code
# Neutral sentiment
neutral_labels = top_label_counts[top_label_counts['sentiment'].str.lower() == 'neutral']
neutral_top5 = neutral_labels.sort_values(by='count', ascending=False).head(5)

plt.figure(figsize=(10,5))
sns.barplot(x='top_label', y='count', data=neutral_top5, palette="Set2")
plt.title('Top 5 Top Labels - Neutral Sentiment')
plt.xlabel('Top Label')
plt.ylabel('Count')
plt.xticks(rotation=45)
plt.tight_layout()
plt.show()
C:\Users\chira\AppData\Local\Temp\ipykernel_11780\200243279.py:7: FutureWarning:



Passing `palette` without assigning `hue` is deprecated and will be removed in v0.14.0. Assign the `x` variable to `hue` and set `legend=False` for the same effect.

Feedback reflects variability, with “mixed experiences” and “inconsistent service” being most mentioned. Neutral sentiments often reflect tempered expectations or situational outcomes.

UberEats - Top 5 Labels for Positive Sentiments

Code
# Filter UberEats reviews
ubereats = combined_df[combined_df['app_name'] == 'UberEats']

# Filter Positive sentiment
positive_df = ubereats[ubereats['sentiment'].str.lower() == 'positive']

# Top 5 labels
positive_top5 = positive_df['top_label'].value_counts().head(5)

# Plot
plt.figure(figsize=(8,5))
sns.barplot(x=positive_top5.index, y=positive_top5.values, palette='Set2')
plt.title('Top 5 Labels for UberEats - Positive Sentiment')
plt.xlabel('Top Label')
plt.ylabel('Count')
plt.xticks(rotation=45)
plt.tight_layout()
plt.show()
C:\Users\chira\AppData\Local\Temp\ipykernel_11780\3373619653.py:13: FutureWarning:



Passing `palette` without assigning `hue` is deprecated and will be removed in v0.14.0. Assign the `x` variable to `hue` and set `legend=False` for the same effect.

UberEats is positively recognized for reliable service and good customer support. “Good discounts” also appear, showing promotional offers impact user satisfaction.

UberEats - Top 5 Labels for Negative Sentiments

Code
# Filter Negative sentiment
negative_df = ubereats[ubereats['sentiment'].str.lower() == 'negative']

# Top 5 labels
negative_top5 = negative_df['top_label'].value_counts().head(5)

# Plot
plt.figure(figsize=(8,5))
sns.barplot(x=negative_top5.index, y=negative_top5.values, palette='Set2')
plt.title('Top 5 Labels for UberEats - Negative Sentiment')
plt.xlabel('Top Label')
plt.ylabel('Count')
plt.xticks(rotation=45)
plt.tight_layout()
plt.show()
C:\Users\chira\AppData\Local\Temp\ipykernel_11780\719617373.py:10: FutureWarning:



Passing `palette` without assigning `hue` is deprecated and will be removed in v0.14.0. Assign the `x` variable to `hue` and set `legend=False` for the same effect.

“Unresponsive customer service” is the top concern among UberEats users. Other recurring complaints include pricing and delivery fulfillment issues.

UberEats - Top 5 Labels for Neutral Sentiments

C:\Users\chira\AppData\Local\Temp\ipykernel_11780\3615030921.py:10: FutureWarning:



Passing `palette` without assigning `hue` is deprecated and will be removed in v0.14.0. Assign the `x` variable to `hue` and set `legend=False` for the same effect.

“Inconsistent service” and “mixed experiences” dominate the neutral feedback for UberEats. Sentiment here indicates fluctuating user experiences without strong positive or negative lean.

UberEats - Interactive Top 5 Labels

Code
import plotly.graph_objects as go
from plotly.subplots import make_subplots

# Prepare unique combinations
data_sources = ['Google Play', 'Reddit', 'App Store']
sentiments = ['Positive', 'Neutral', 'Negative']

# Store traces and buttons
fig = go.Figure()
buttons = []
visibility = []

# Track trace index
trace_idx = 0

for data_source in data_sources:
    for sentiment in sentiments:
        source_df = ubereats[ubereats['data_source'] == data_source]
        source_sentiment_df = source_df[source_df['sentiment'] == sentiment]
        top5_labels = source_sentiment_df['top_label'].value_counts().head(5)

        if not top5_labels.empty:
            trace = go.Bar(
                x=top5_labels.index,
                y=top5_labels.values,
                name=f'{data_source} - {sentiment}',
                visible=False,
                marker_color=px.colors.qualitative.Set2
            )
            fig.add_trace(trace)
            visibility.append((data_source, sentiment, trace_idx))
            trace_idx += 1

# Add dropdown buttons
for i, (ds, s, idx) in enumerate(visibility):
    vis = [False] * len(visibility)
    vis[idx] = True
    button = dict(
        label=f'{ds} - {s}',
        method='update',
        args=[{'visible': vis},
              {'title': f'UberEats - {ds} - {s} - Top 5 Labels'}]
    )
    buttons.append(button)

fig.update_layout(
    updatemenus=[
        dict(
            buttons=buttons,
            direction='down',
            showactive=True,
            x=0.5,
            xanchor='center',
            y=1.2,
            yanchor='top'
        )
    ],
    title='UberEats - Interactive Top 5 Labels',
    xaxis_title='Top Label',
    yaxis_title='Count'
)

fig.show()

For UberEats - for each data_source (ignoring sentiment), top 5 labels

Code
import plotly.graph_objects as go
import plotly.express as px

# List of data sources
data_sources = ['Google Play', 'Reddit', 'App Store']

# Initialize figure
fig = go.Figure()
buttons = []
visibility = []

# Add one bar trace per data source (initially hidden)
for idx, data_source in enumerate(data_sources):
    source_df = ubereats[ubereats['data_source'] == data_source]
    top5_labels = source_df['top_label'].value_counts().head(5)

    trace = go.Bar(
        x=top5_labels.index,
        y=top5_labels.values,
        name=data_source,
        visible=(idx == 0),  # Show only the first one initially
        marker_color=px.colors.qualitative.Set2
    )
    fig.add_trace(trace)

# Create dropdown buttons
for i, ds in enumerate(data_sources):
    vis = [False] * len(data_sources)
    vis[i] = True
    buttons.append(dict(
        label=ds,
        method='update',
        args=[{'visible': vis},
              {'title': f'UberEats - {ds} - Top 5 Labels (All Sentiments)'}]
    ))

# Final layout
fig.update_layout(
    updatemenus=[dict(
        buttons=buttons,
        direction='down',
        showactive=True,
        x=0.5,
        xanchor='center',
        y=1.2,
        yanchor='top'
    )],
    title=f'UberEats - {data_sources[0]} - Top 5 Labels (All Sentiments)',
    xaxis_title='Top Label',
    yaxis_title='Count'
)

fig.show()

For UberEats - overall (ignoring sentiment and datasource), top 5 labels

Code
top5_labels = ubereats['top_label'].value_counts().head(5)

plt.figure(figsize=(8,5))
sns.barplot(x=top5_labels.index, y=top5_labels.values, palette='Set2')
plt.title('UberEats - Top 5 Labels Overall')
plt.xlabel('Top Label')
plt.ylabel('Count')
plt.xticks(rotation=45)
plt.tight_layout()
plt.show()
C:\Users\chira\AppData\Local\Temp\ipykernel_11780\233713667.py:5: FutureWarning:



Passing `palette` without assigning `hue` is deprecated and will be removed in v0.14.0. Assign the `x` variable to `hue` and set `legend=False` for the same effect.

“Unresponsive customer service” is the most frequent concern, with “reliable service” following as a positive counterpoint. Mixed service perceptions dominate the narrative, showing a polarized customer experience.

DoorDash - Sentiment - Top 5 Labels

Code
import plotly.graph_objects as go
import plotly.express as px

# Filter DoorDash data
doordash = combined_df[combined_df['app_name'] == 'DoorDash']
sentiments = ['Positive', 'Neutral', 'Negative']

# Create figure
fig = go.Figure()
buttons = []

# Add one bar trace per sentiment
for idx, sentiment in enumerate(sentiments):
    sentiment_df = doordash[doordash['sentiment'] == sentiment]
    top5 = sentiment_df['top_label'].value_counts().head(5)

    fig.add_trace(go.Bar(
        x=top5.index,
        y=top5.values,
        name=sentiment,
        visible=(idx == 0),  # Show first sentiment by default
        marker_color=px.colors.qualitative.Set2
    ))

# Create dropdown buttons
for i, sentiment in enumerate(sentiments):
    vis = [False] * len(sentiments)
    vis[i] = True
    buttons.append(dict(
        label=sentiment,
        method='update',
        args=[{'visible': vis},
              {'title': f'DoorDash - {sentiment} Sentiment - Top 5 Labels'}]
    ))

# Final layout
fig.update_layout(
    updatemenus=[dict(
        buttons=buttons,
        direction='down',
        showactive=True,
        x=0.5,
        xanchor='center',
        y=1.2,
        yanchor='top'
    )],
    title='DoorDash - Positive Sentiment - Top 5 Labels',
    xaxis_title='Top Label',
    yaxis_title='Count'
)

fig.show()

DoorDash - Data Sources - Top 5 Labels

DoorDash - Google Play - Top 5 Labels (All Sentiments)

DoorDash - Overall Top 5 Labels

C:\Users\chira\AppData\Local\Temp\ipykernel_11780\1556962487.py:4: FutureWarning:



Passing `palette` without assigning `hue` is deprecated and will be removed in v0.14.0. Assign the `x` variable to `hue` and set `legend=False` for the same effect.

Similar to UberEats, DoorDash users frequently report “unresponsive customer service” and value “reliable service.” A notable portion of feedback also reflects inconsistency and mixed experiences.

GrubHub - Sentiment - Top 5 Labels

GrubHub - Data Sources - Sentiment - Top 5 Labels

GrubHub - Data_Source - Top 5 Labels (All Sentiments)

GrubHub - Overall Top 5 Labels

C:\Users\chira\AppData\Local\Temp\ipykernel_11780\3418218262.py:4: FutureWarning:



Passing `palette` without assigning `hue` is deprecated and will be removed in v0.14.0. Assign the `x` variable to `hue` and set `legend=False` for the same effect.

GrubHub shares similar patterns with its competitors—customer service issues top the list. “Reliable service” and “mixed experiences” suggest a divided but slightly less vocal user base.

Google Play - Sentiment - Top 5 Labels

Google Play - Overall Top 5 Labels (All Sentiments)

C:\Users\chira\AppData\Local\Temp\ipykernel_11780\3286387572.py:4: FutureWarning:



Passing `palette` without assigning `hue` is deprecated and will be removed in v0.14.0. Assign the `x` variable to `hue` and set `legend=False` for the same effect.

On Google Play, feedback on customer service is most dominant, both negatively (“unresponsive”) and positively (“good”). Usability (“easy to use”) and pricing also influence customer sentiment significantly.

Reddit - Sentiment - Top 5 Labels

Reddit - Overall Top 5 Labels (All Sentiments)

C:\Users\chira\AppData\Local\Temp\ipykernel_11780\1014653831.py:4: FutureWarning:



Passing `palette` without assigning `hue` is deprecated and will be removed in v0.14.0. Assign the `x` variable to `hue` and set `legend=False` for the same effect.

Reddit discussions heavily critique customer service, followed by comments on inconsistent and mixed experiences. Issues like missing items and driver problems highlight operational gaps.

App Store - Sentiment - Top 5 Labels

App Store - Overall Top 5 Labels (All Sentiments)

C:\Users\chira\AppData\Local\Temp\ipykernel_11780\1882811874.py:4: FutureWarning:



Passing `palette` without assigning `hue` is deprecated and will be removed in v0.14.0. Assign the `x` variable to `hue` and set `legend=False` for the same effect.

“Unresponsive customer service” overwhelmingly dominates App Store feedback. Other concerns like long wait times and delivery issues appear far less frequently, indicating focused dissatisfaction.

Top Label Frequency Over Time (All Apps & Platforms)

C:\Users\chira\AppData\Local\Temp\ipykernel_11780\3157324320.py:2: FutureWarning:

'M' is deprecated and will be removed in a future version, please use 'ME' instead.

“Unresponsive customer service” overwhelmingly dominates App Store feedback. Other concerns like long wait times and delivery issues appear far less frequently, indicating focused dissatisfaction.