私はスパース行列を扱い始めているので、このトピックについてはあまり熟練していません。私の問題は、単語リストからの単純な共起行列があり、同じコンテキストで単語が出現する回数を数える単語ごとの2次元共起行列だけです。コーパスはそれほど大きくないため、マトリックスは非常にスパースです。それをスパース行列に変換して、より適切に処理できるようにし、最終的には後で行列の乗算を実行したいと思います。これまで私が行ったことは次のとおりです(最初の部分のみ、残りは出力形式とクリーニングデータのみです):
def matrix(from_corpus):
d = defaultdict(lambda : defaultdict(int))
heads = set()
trans = set()
for text in corpus:
d[text[0]][text[1]] += 1
heads.add(text[0])
trans.add(text[1])
return d,heads,trans
私のアイデアは、新しい関数を作成することです。
def matrix_to_sparse(d):
A = sparse.lil_matrix(d)
これは意味がありますか?ただし、これは機能しておらず、どういうわけか、スパース行列を取得する方法がありません。numpy配列で作業する方がよいでしょうか?これを行うための最良の方法は何でしょうか。行列を扱う多くの方法を比較したいと思います。
誰かが私をその方向に向かわせることができればいいのにと思います。