Detecting community structure in bipartite networks based on matrix factorisation