For the ugly hack --simply draw your arrow after both boxes are drawn -- that way the arrow will cover the border of both boxes
\documentclass{standalone}
\usepackage{amsmath}
\usepackage{tikz}
\usetikzlibrary{shapes.arrows}
\usetikzlibrary{positioning}
\begin{document}
\begin{tikzpicture}[node distance=.15cm,>=latex]
\tikzstyle{myarr} = [draw, inner sep=5pt, fill=black!20, single arrow,single arrow head extend=0.1cm]
\tikzstyle{mylbl} = [inner sep=0pt, color=blue!70, text centered, text width=2cm]
\tikzstyle{mybox} = [draw, inner sep=5pt, text centered]
\node[mybox, text depth=2cm, text width=2cm] (corpus) at (0,0) {\textbf{Corpus}};
% Is possible to resize the node to fit the whole content?
\node[mybox, text depth=1.75cm, text width=8.5cm, right=1cm of corpus] (embedding) {\textbf{Embedding method}};
\node[myarr, single arrow head extend=0cm, single arrow tip angle=130, right=-1cm of corpus] (transformation) {Transformation};
% UGLY HACK 1
% \node[myarr ,single arrow head extend=0cm,single arrow tip angle=130, rotate=0, right=-1cm of corpus] (transformationhack) {Transformation};
\node[mylbl, right=of transformation] (sentence) {``I think ??? I am''};
\node[myarr, right=of sentence] (arrowa) {};
\node[mybox, minimum height=7ex, right=of arrowa] (cbow) {\textbf{CBOW}};
\node[myarr, right=of cbow] (arrowb) {};
\node[mylbl, right=of arrowb] (predict) {``therefore''};
% Why do I need a larger spacing here?
\node[myarr, rotate=-90, below=.35cm of embedding] (arrowc) {};
% east?
\node[mybox, text width=4cm, text depth=2.5cm, below=of arrowc.east] (embeddings) {\textbf{Word embeddings}};
% How to center this at center of (embeddings) without hand picking.
\node[] at (6.3,-3.80) (matrix) {%
$\begin{bmatrix}
0.12 & 0.59 & \cdots & 0.33 \\
0.48 & 0.02 & \cdots & 0.29 \\
\vdots & \vdots & \ddots & \vdots \\
0.32 & 0.74 & \cdots & 0.61
\end{bmatrix}$
};
\end{tikzpicture}
\end{document}
EDIT --for the sentence break
Simply use align=left
in the definition of label box as below
\tikzstyle{mylbl} = [inner sep=0pt, color=blue!70, align=left ]
Now you can use \\
to break the sentence-- off course the alignment will be off since there is a "
in the first line but not in the second line so you can add a phantom "
in the second line which will not be printed but will improve the alignment
\node[mylbl, right=of transformation] (sentence) {``I think \\ \phantom{"}I am''};
\documentclass{standalone}
\usepackage{amsmath}
\usepackage{tikz}
\usetikzlibrary{shapes.arrows}
\usetikzlibrary{positioning}
\begin{document}
\begin{tikzpicture}[node distance=.15cm,>=latex]
\tikzstyle{myarr} = [draw, inner sep=5pt, fill=black!20, single arrow,single arrow head extend=0.1cm]
\tikzstyle{mylbl} = [inner sep=0pt, color=blue!70, align=left ]
\tikzstyle{mybox} = [draw, inner sep=5pt, text centered]
\node[mybox, text depth=2cm, text width=2cm] (corpus) at (0,0) {\textbf{Corpus}};
% Is possible to resize the node to fit the whole content?
\node[mybox, text depth=1.75cm, text width=8.5cm, right=1cm of corpus] (embedding) {\textbf{Embedding method}};
\node[myarr, single arrow head extend=0cm, single arrow tip angle=130, right=-1cm of corpus] (transformation) {Transformation};
% UGLY HACK 1
% \node[myarr ,single arrow head extend=0cm,single arrow tip angle=130, rotate=0, right=-1cm of corpus] (transformationhack) {Transformation};
\node[mylbl, right=of transformation] (sentence) {``I think \\ \phantom{"}I am''};
\node[myarr, right=of sentence] (arrowa) {};
\node[mybox, minimum height=7ex, right=of arrowa] (cbow) {\textbf{CBOW}};
\node[myarr, right=of cbow] (arrowb) {};
\node[mylbl, right=of arrowb] (predict) {``therefore''};
% Why do I need a larger spacing here?
\node[myarr, rotate=-90, below=.35cm of embedding] (arrowc) {};
% east?
\node[mybox, text width=4cm, text depth=2.5cm, below=of arrowc.east] (embeddings) {\textbf{Word embeddings}};
% How to center this at center of (embeddings) without hand picking.
\node[] at (6.3,-3.80) (matrix) {%
$\begin{bmatrix}
0.12 & 0.59 & \cdots & 0.33 \\
0.48 & 0.02 & \cdots & 0.29 \\
\vdots & \vdots & \ddots & \vdots \\
0.32 & 0.74 & \cdots & 0.61
\end{bmatrix}$
};
\end{tikzpicture}
\end{document}
EDIT2 -- for the enlarge node
Use the tikzlibrary{fit}
as below
\node[draw=teal, dashed,ultra thick, fit=(sentence) (arrowa)(arrowb) (cbow)(predict)] {};
This will auto enlarge if you add anything in the nodes inside
EDIT -- for arrowc.east
Anchors also get rotated when you rotate the arrow so east takes the place of south anchor when rotated -90
For the placement of matrix -- I again suggest fit library so that it can expand with the matrix
Your problems are related to choosing nodes from where to position is all
Complete MWE
\documentclass{standalone}
\usepackage{amsmath}
\usepackage{tikz}
\usetikzlibrary{shapes.arrows}
\usetikzlibrary{positioning,fit}
\begin{document}
\begin{tikzpicture}[node distance=.15cm,>=latex]
\tikzstyle{myarr} = [draw, inner sep=5pt, fill=black!20, single arrow,single arrow head extend=0.1cm]
\tikzstyle{mylbl} = [inner sep=0pt, color=blue!70, align=left ]
\tikzstyle{mybox} = [draw, inner sep=5pt, text centered]
\node[mybox, text depth=2cm, text width=2cm] (corpus) at (0,0) {\textbf{Corpus}};
% Is possible to resize the node to fit the whole content?
\node[mybox, draw=none, text depth=1.75cm, text width=8.5cm, right=1cm of corpus] (embedding) {\textbf{Embedding method}};
\node[myarr, single arrow head extend=0cm, single arrow tip angle=130, right=-1cm of corpus] (transformation) {Transformation};
% UGLY HACK 1
% \node[myarr ,single arrow head extend=0cm,single arrow tip angle=130, rotate=0, right=-1cm of corpus] (transformationhack) {Transformation};
\node[mylbl, right=of transformation] (sentence) {``I think \\ \phantom{"}I am''};
\node[myarr, right=of sentence] (arrowa) {};
\node[mybox, minimum height=7ex, right=of arrowa] (cbow) {\textbf{CBOW}};
\node[myarr, right=of cbow] (arrowb) {};
\node[mylbl, right=of arrowb] (predict) {``therefore''};
% Why do I need a larger spacing here?
\node[myarr, rotate=-90, below=of embedding] (arrowc) {};
% east?
\node[mybox, draw=none, below=of arrowc.east] (embeddings) {\textbf{Word embeddings}};
% How to center this at center of (embeddings) without hand picking.
\node[below=2cm of embedding] (matrix) {%
$\begin{bmatrix}
0.12 & 0.59 & \cdots & 0.33 \\
0.48 & 0.02 & \cdots & 0.29 \\
\vdots & \vdots & \ddots & \vdots \\
0.32 & 0.74 & \cdots & 0.61
\end{bmatrix}$
};
\node[draw=teal, dashed,ultra thick, fit=(matrix)(embeddings)] {};
\node[draw=teal, dashed,ultra thick, fit=(sentence) (arrowa)(arrowb) (cbow)(predict)] {};
\end{tikzpicture}
\end{document}