Apple was quietly all over the world's biggest Android phone show, and that says a lot
Back to Tutorials
techTutorialintermediate

Apple was quietly all over the world's biggest Android phone show, and that says a lot

March 5, 20265 views6 min read

Learn to build a system that detects design influence between smartphone manufacturers by analyzing event data and feature descriptions, similar to how Apple's impact was observed at MWC 2026.

Introduction

In this tutorial, we'll explore how to analyze and extract design and feature influences from mobile technology events using Python and web scraping techniques. Based on Apple's subtle but significant presence at MWC 2026, we'll build a tool that can identify design patterns and feature similarities between competing smartphone manufacturers. This intermediate-level tutorial will teach you how to scrape event data, process natural language, and compare design elements programmatically.

Prerequisites

  • Python 3.8+ installed on your system
  • Familiarity with basic Python programming concepts
  • Understanding of web scraping and API usage
  • Basic knowledge of natural language processing concepts
  • Required Python packages: requests, beautifulsoup4, nltk, pandas, scikit-learn

Step-by-step Instructions

Step 1: Set up your development environment

Install required packages

First, we need to install all the necessary Python libraries for our analysis. Run the following commands in your terminal:

pip install requests beautifulsoup4 nltk pandas scikit-learn

This creates the foundation for our web scraping and analysis capabilities. Each package serves a specific purpose: requests for HTTP communication, BeautifulSoup for HTML parsing, NLTK for natural language processing, pandas for data manipulation, and scikit-learn for machine learning comparisons.

Step 2: Create the web scraper for event data

Build the data collection module

Let's create a basic scraper that can collect information about mobile device announcements from tech event websites:

import requests
from bs4 import BeautifulSoup
import json


def scrape_event_data(url):
    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36'
    }
    response = requests.get(url, headers=headers)
    soup = BeautifulSoup(response.content, 'html.parser')
    
    # Extract device information
    devices = []
    device_elements = soup.find_all('div', class_='device-card')
    
    for element in device_elements:
        device_info = {
            'name': element.find('h3', class_='device-name').text.strip(),
            'brand': element.find('span', class_='brand').text.strip(),
            'features': [f.text.strip() for f in element.find_all('li', class_='feature')],
            'design_elements': [d.text.strip() for d in element.find_all('span', class_='design')]
        }
        devices.append(device_info)
    
    return devices

# Example usage
if __name__ == '__main__':
    devices = scrape_event_data('https://example-tech-event.com/devices')
    print(json.dumps(devices, indent=2))

This scraper mimics how Apple's influence might be detected by analyzing the language used in device descriptions and feature lists. The structure allows us to extract key information that we can later compare across different manufacturers.

Step 3: Implement natural language processing for feature analysis

Create text processing functions

Now we'll build functions to analyze the language used in device descriptions to identify design influences:

import nltk
from nltk.tokenize import word_tokenize
from nltk.corpus import stopwords
from nltk.stem import WordNetLemmatizer
from collections import Counter

# Download required NLTK data
nltk.download('punkt')
nltk.download('stopwords')
nltk.download('wordnet')

lemmatizer = WordNetLemmatizer()
stop_words = set(stopwords.words('english'))

def preprocess_text(text):
    # Tokenize and clean text
    tokens = word_tokenize(text.lower())
    tokens = [lemmatizer.lemmatize(token) for token in tokens if token.isalpha()]
    tokens = [token for token in tokens if token not in stop_words]
    return tokens

def analyze_feature_similarity(device1_features, device2_features):
    # Convert features to tokenized lists
    tokens1 = [preprocess_text(feature) for feature in device1_features]
    tokens2 = [preprocess_text(feature) for feature in device2_features]
    
    # Flatten lists
    flat_tokens1 = [token for sublist in tokens1 for token in sublist]
    flat_tokens2 = [token for sublist in tokens2 for token in sublist]
    
    # Calculate similarity using term frequency
    counter1 = Counter(flat_tokens1)
    counter2 = Counter(flat_tokens2)
    
    # Simple Jaccard similarity
    intersection = set(counter1.keys()) & set(counter2.keys())
    union = set(counter1.keys()) | set(counter2.keys())
    
    if len(union) == 0:
        return 0
    
    similarity = len(intersection) / len(union)
    return similarity

This analysis helps us detect how similar manufacturers are in their language when describing similar features, which can indicate design influence. For example, if both Samsung and Apple use similar terminology for camera features, it might suggest Apple's influence.

Step 4: Build the design influence detection system

Implement comparison algorithms

Let's create a system that can detect design influence by comparing feature sets:

import pandas as pd
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.metrics.pairwise import cosine_similarity

class DesignInfluenceDetector:
    def __init__(self):
        self.vectorizer = TfidfVectorizer()
        
    def extract_design_patterns(self, devices):
        # Combine all features for each device
        device_patterns = []
        for device in devices:
            combined_features = ' '.join(device['features'])
            device_patterns.append({
                'name': device['name'],
                'brand': device['brand'],
                'combined_features': combined_features
            })
        return device_patterns
    
    def compare_devices(self, device1, device2):
        # Create TF-IDF vectors
        texts = [device1['combined_features'], device2['combined_features']]
        tfidf_matrix = self.vectorizer.fit_transform(texts)
        
        # Calculate cosine similarity
        similarity = cosine_similarity(tfidf_matrix[0:1], tfidf_matrix[1:2])[0][0]
        
        return {
            'device1': device1['name'],
            'device2': device2['name'],
            'similarity_score': similarity,
            'brand1': device1['brand'],
            'brand2': device2['brand']
        }
    
    def detect_influences(self, devices):
        # Compare all devices against each other
        influences = []
        
        for i in range(len(devices)):
            for j in range(i+1, len(devices)):
                comparison = self.compare_devices(devices[i], devices[j])
                if comparison['similarity_score'] > 0.3:  # Threshold for influence
                    influences.append(comparison)
        
        return influences

This system uses TF-IDF vectorization and cosine similarity to detect when different manufacturers are using similar language patterns in their feature descriptions, which is exactly how Apple's influence might be detected at events like MWC.

Step 5: Create the main analysis pipeline

Integrate all components

Now we'll create the main function that ties everything together:

def main_analysis_pipeline():
    # Simulate scraped data (in practice, this would come from web scraping)
    sample_devices = [
        {
            'name': 'iPhone 17 Pro',
            'brand': 'Apple',
            'features': [
                'Titanium frame design',
                'Pro camera system',
                'Dynamic island display',
                'A18 chip performance'
            ],
            'design_elements': ['minimalist', 'premium materials', 'integrated controls']
        },
        {
            'name': 'Galaxy S26 Ultra',
            'brand': 'Samsung',
            'features': [
                'Titanium frame design',
                'Advanced camera system',
                'Dynamic island display',
                'Snapdragon 8 Gen 3 performance'
            ],
            'design_elements': ['premium materials', 'sleek profile', 'integrated controls']
        }
    ]
    
    # Initialize detector
    detector = DesignInfluenceDetector()
    
    # Extract patterns
    patterns = detector.extract_design_patterns(sample_devices)
    
    # Detect influences
    influences = detector.detect_influences(patterns)
    
    # Display results
    print("\nDetected Design Influences:")
    for influence in influences:
        print(f"{influence['device1']} ({influence['brand1']}) vs {influence['device2']} ({influence['brand2']})")
        print(f"Similarity Score: {influence['similarity_score']:.2f}")
        print("---")
    
    return influences

# Run the analysis
if __name__ == '__main__':
    main_analysis_pipeline()

This pipeline simulates how Apple's influence might be detected at MWC by comparing how different manufacturers describe similar design elements and features, such as titanium frames and dynamic displays.

Step 6: Generate insights and visualizations

Add data visualization capabilities

Finally, let's add visualization to better understand the detected influences:

import matplotlib.pyplot as plt

def visualize_influences(influences):
    if not influences:
        print("No influences detected.")
        return
    
    # Prepare data for plotting
    devices = [f"{i['device1']}\nvs\n{i['device2']}" for i in influences]
    scores = [i['similarity_score'] for i in influences]
    
    # Create bar chart
    plt.figure(figsize=(10, 6))
    bars = plt.bar(range(len(devices)), scores, color='skyblue')
    plt.xlabel('Device Comparisons')
    plt.ylabel('Design Similarity Score')
    plt.title('Detected Design Influences at Mobile Events')
    plt.xticks(range(len(devices)), devices, rotation=45, ha='right')
    
    # Add value labels on bars
    for i, (bar, score) in enumerate(zip(bars, scores)):
        plt.text(bar.get_x() + bar.get_width()/2, bar.get_height() + 0.01,
                f'{score:.2f}', ha='center', va='bottom')
    
    plt.tight_layout()
    plt.show()

# Call visualization function
influences = main_analysis_pipeline()
visualize_influences(influences)

This visualization helps identify which devices show the strongest design similarities, directly demonstrating how Apple's design language might be influencing competitors at major events.

Summary

In this tutorial, we've built a comprehensive system for analyzing design influence in mobile technology events. We've created a web scraper to collect device data, implemented natural language processing to analyze feature descriptions, and developed a machine learning-based comparison system to detect when manufacturers are using similar design language. This approach mirrors how Apple's subtle influence might be detected at events like MWC 2026, where competitors often adopt similar design elements and feature descriptions without direct acknowledgment. The system can be extended to include real-time web scraping, more sophisticated NLP models, and integration with actual event databases to provide ongoing analysis of design trends in the mobile industry.

Source: ZDNet AI

Related Articles