Optimizing co-occurrence matrix computation
From easiest to hardest:


Try running it in pypy or numba
Find a faster implementation. Unfortunately I can not recommend one.
Parallelize the loop over the documents. Not so hard since your vocabulary is precomputed. (Even if it weren't you could get away with it using the hashing trick.) Combine this with the first bullet.
Rewrite the inner loop in Cython.
Rewrite the whole thing in a faster language like C++ or Scala.