# Second-order co-occurrence pointwise mutual information

Second-order co-occurrence pointwise mutual information is a semantic similarity measure using pointwise mutual information to sort lists of important neighbor words of the two target words from a large corpus. PMI-IR[clarification needed] used AltaVista's Advanced Search query syntax to calculate probabilities. Note that the NEAR" search operator of AltaVista is an essential operator in the PMI-IR method.[citation needed] However, it is no longer in use in AltaVista; this means that, from the implementation point of view, it is not possible to use the PMI-IR method in the same form in new systems. In any case, from the algorithmic point of view, the advantage of using SOC-PMI is that it can calculate the similarity between two words that do not co-occur frequently, because they co-occur with the same neighboring words. For example, the British National Corpus (BNC) has been used as a source of frequencies and contexts. The method considers the words that are common in both lists and aggregate their PMI values (from the opposite list) to calculate the relative semantic similarity. We define the pointwise mutual information function for only those words having $f^b (t_i, w)>0$,

$f^\text{pmi}(t_i,w)=\log_2 \frac{f^b (t_i,w)\times m}{f^t (t_i)f^t (w)},$

where $f^t (t_i)$ tells us how many times the type $t_i$ appeared in the entire corpus, $f^b(t_i, w)$ tells us how many times word $t_i$ appeared with word $w$ in a context window and $m$ is total number of tokens in the corpus. Now, for word $w$, we define a set of words, $X^w$, sorted in descending order by their PMI values with $w$ and taken the top-most $\beta$ words having $f^\text{pmi}(t_i, w)>0$.

The set $X^w$, contains words $X_i^w$,

$X^w=\{X_i^w\}$, where $i=1, 2, \ldots ,\beta$ and
$f^\text{pmi}(X_1^w, w)\geq f^\text{pmi}(X_2^w, w)\geq \cdots f^\text{pmi}(X_{\beta-1}^w, w)\geq f^\text{pmi}(X_\beta^w, w)$

A rule of thumb is used to choose the value of $\beta$. The $\beta$-PMI summation function of a word is defined with respect to another word. For word $w_1$ with respect to word $w_2$ it is:

$f(w_1,w_2,\beta)=\sum_{i=1}^\beta (f^\text{pmi}(X_i^{w_1},w_2))^\gamma$

where $f^\text{pmi}(X_i^{w_1},w_2)>0$ which sums all the positive PMI values of words in the set $X^{w_2}$ also common to the words in the set $X^{w_1}$. In other words, this function actually aggregates the positive PMI values of all the semantically close words of $w_2$ which are also common in $w_1$'s list. $\gamma$ should have a value greater than 1. So, the $\beta$-PMI summation function for word $w_1$ with respect to word $w_2$ having $\beta=\beta_1$ and the $\beta$-PMI summation function for word $w_2$ with respect to word $w_1$ having $\beta=\beta_2$ are

$f(w_1,w_2,\beta_1)=\sum_{i=1}^{\beta_1}(f^\text{pmi}(X_i^{w_1},w_2))^\gamma$

and

$f(w_2,w_1,\beta_2)=\sum_{i=1}^{\beta_2}(f^\text{pmi}(X_i^{w_2},w_1))^\gamma$

respectively.

Finally, the semantic PMI similarity function between the two words, $w_1$ and $w_2$, is defined as

$\mathrm{Sim}(w_1,w_2)=\frac{f(w_1,w_2,\beta_1)}{\beta_1}+\frac{f(w_2,w_1,\beta_2)}{\beta_2}.$

The semantic word similarity is normalized, so that it provides a similarity score between $0$ and $1$ inclusively. The normalization of semantic similarity algorithm returns a normalized score of similarity between two words. It takes as arguments the two words, $r_i$ and $s_j$, and a maximum value, $\lambda$, that is returned by the semantic similarity function, Sim(). It returns a similarity score between 0 and 1 inclusively. For example, the algorithm returns 0.986 for words cemetery and graveyard with $\lambda=20$ (for SOC-PMI method).