\documentclass[border=10pt]{standalone}
\usepackage{tikz}
\usetikzlibrary{shapes.geometric, arrows, positioning, fit}

\begin{document}

\tikzstyle{process} = [rectangle, minimum width=3cm, minimum height=1cm, text centered, draw=orange, fill=yellow!30, rounded corners]
\tikzstyle{decision} = [diamond, minimum width=3cm, minimum height=1cm, text centered, draw=green!50!black, fill=green!20]
\tikzstyle{arrow} = [thick, ->, >=stealth, draw=blue!50!black]

\begin{tikzpicture}[node distance=2cm]
    % Data Collection
    \node (dc) [process] {Data Collection};
    \node (texts) [process, below left=of dc] {Collect Texts};
    \node (labels) [process, below right=of dc] {Label Texts by Culture};
    
    % Preprocessing
    \node (prep) [process, below=3cm of dc] {Text Preprocessing};
    \node (token) [process, below left=of prep] {Tokenization};
    \node (stop) [process, below=of prep] {Remove Stopwords};
    \node (stem) [process, below right=of prep] {Stemming/Lemmatization};
    
    % Feature Extraction
    \node (fe) [process, below=3cm of prep] {Feature Extraction};
    \node (tfidf) [process, below left=of fe] {TF-IDF};
    \node (we) [process, below right=of fe] {Word Embeddings};
    
    % Clustering
    \node (clust) [process, below=3cm of fe] {Clustering Algorithms};
    \node (kmeans) [process, below left=of clust] {K-Means};
    \node (dbscan) [process, below right=of clust] {DBSCAN};
    
    % Model Evaluation
    \node (eval) [process, right=4cm of clust] {Model Evaluation};
    \node (sil) [process, below=of eval] {Silhouette Score};
    
    % Engagement Analysis
    \node (engage) [process, below=3cm of clust] {Engagement Analysis};
    \node (feedback) [process, below left=of engage] {Collect Reader Feedback};
    \node (metrics) [process, below right=of engage] {Engagement Metrics};
    
    % Impact Assessment
    \node (impact) [decision, below=3cm of engage] {Assess Impact};
    \node (style) [process, below left=of impact] {Style Clusters};
    
    % Arrows
    \draw [arrow] (dc) -- (texts);
    \draw [arrow] (dc) -- (labels);
    \draw [arrow] (prep) -- (token);
    \draw [arrow] (prep) -- (stop);
    \draw [arrow] (prep) -- (stem);
    \draw [arrow] (fe) -- (tfidf);
    \draw [arrow] (fe) -- (we);
    \draw [arrow] (clust) -- (kmeans);
    \draw [arrow] (clust) -- (dbscan);
    \draw [arrow] (eval) -- (sil);
    \draw [arrow] (engage) -- (feedback);
    \draw [arrow] (engage) -- (metrics);
    \draw [arrow] (impact) -- (style);
    \draw [arrow] (impact) -- (metrics);
    
    % Connecting arrows
    \draw [arrow] (dc) -- (prep);
    \draw [arrow] (prep) -- (fe);
    \draw [arrow] (fe) -- (clust);
    \draw [arrow] (clust) -- (eval);
    \draw [arrow] (clust) -- (engage);
    \draw [arrow] (engage) -- (impact);
    
    % Grouping
    \node [fit=(dc) (texts) (labels), draw=red!50, dashed, inner sep=10pt, label=above:Data Collection] {};
    \node [fit=(prep) (token) (stop) (stem), draw=red!50, dashed, inner sep=10pt, label=left:Preprocessing] {};
    \node [fit=(fe) (tfidf) (we), draw=red!50, dashed, inner sep=10pt, label=left:Feature Extraction] {};
    \node [fit=(clust) (kmeans) (dbscan), draw=red!50, dashed, inner sep=10pt, label=left:Clustering] {};
    \node [fit=(engage) (feedback) (metrics), draw=red!50, dashed, inner sep=10pt, label=left:Engagement Analysis] {};
\end{tikzpicture}

\end{document}