私はあなたが単語 - 単語共起行列を派生させることができるsklearnのモジュールを探しています。私は文書用語行列を得ることができますが、共起の単語語行列を得る方法についてはわかりません。単語 - 単語共出現行列
8
A
答えて
1
あなたはCountVectorizer
またはTfidfVectorizer
コード例ではngram_range
パラメータを使用することができます:あなたが明示的にvocabulary
を使用し、あなたがカウントしたい単語の共起言いたい場合
bigram_vectorizer = CountVectorizer(ngram_range=(2, 2)) # by saying 2,2 you are telling you only want pairs of 2 words
PARAM、すなわち:vocabulary = {'awesome unicorns':0, 'batman forever':1}
事前に定義された単語と単語の共起を持つ、わかりやすく使いやすいコードです。この場合、我々はawesome unicorns
とbatman forever
の共起のために追跡されています
from sklearn.feature_extraction.text import CountVectorizer
import numpy as np
samples = ['awesome unicorns are awesome','batman forever and ever','I love batman forever']
bigram_vectorizer = CountVectorizer(ngram_range=(1, 2), vocabulary = {'awesome unicorns':0, 'batman forever':1})
co_occurrences = bigram_vectorizer.fit_transform(samples)
print 'Printing sparse matrix:', co_occurrences
print 'Printing dense matrix (cols are vocabulary keys 0-> "awesome unicorns", 1-> "batman forever")', co_occurrences.todense()
sum_occ = np.sum(co_occurrences.todense(),axis=0)
print 'Sum of word-word occurrences:', sum_occ
print 'Pretty printig of co_occurrences count:', zip(bigram_vectorizer.get_feature_names(),np.array(sum_occ)[0].tolist())
最終的な出力は、私たちのsamples
提供されたデータに正確に対応し、('awesome unicorns', 1), ('batman forever', 2)
です。
11
ここでは、scikit-learnでCountVectorizer
を使用した私のソリューション例です。このpostを参照すると、単純に行列乗算を使って単語と単語の共起行列を得ることができます。
from sklearn.feature_extraction.text import CountVectorizer
docs = ['this this this book',
'this cat good',
'cat good shit']
count_model = CountVectorizer(ngram_range=(1,1)) # default unigram model
X = count_model.fit_transform(docs)
Xc = (X.T * X) # this is co-occurrence matrix in sparse csr format
Xc.setdiag(0) # sometimes you want to fill same word cooccurence to 0
print(Xc.todense()) # print out matrix in dense format
ます。またcount_model
に単語の辞書を参照することができ、
count_model.vocabulary_
それとも、あなたは対角成分で正規化したい場合は、(以前の記事で答えると呼びます)。
import scipy.sparse as sp
Xc = (X.T * X)
g = sp.diags(1./Xc.diagonal())
Xc_norm = g * XC# normalized co-occurence matrix
関連する問題
- 1. Count単語の出現
- 2. 正規表現の単語マッチングと次の単語の抽出
- 3. 文字列中の単語の集合から単語が出現する
- 4. マルチ単語列
- 5. Noun/Adjective/Etc単語リストまたは辞書(共通の単語)
- 6. 複数の単語の単語の出現数をカウントする問題
- 7. Python正規表現の単語内の単語の一致
- 8. 文字列内の単語の出現を取得する正規表現ですが、その単語を含む単語は含みません
- 9. 正規表現単語
- 10. Pythonでは、別の単語の出現後に単語の最初の出現を照合する
- 11. 各行の各単語の出現をカウントするには?
- 12. 文字列中の単語の出現数をカウントするアルゴリズム
- 13. 単語抽出複数行のテキストファイル
- 14. Excel特定の単語を1列から別の単語に抽出する
- 15. 単語辞書からの単語の抽出
- 16. csvで単語の出現をカウントし、行の出現を決定します。
- 17. その単語が別の単語
- 18. C#Create単語からの単語
- 19. 単語ゲームの無料単語リスト
- 20. preg_match_all単語のある単語のID
- 21. 単語の折り返しの単語
- 22. 単語のペアから単語
- 23. 単語と配列の単語を比較する
- 24. 文字列内の単語与えられた単語
- 25. 文書用語行列から単語頻度を抽出する方法は?
- 26. データフレーム内の単語/文の共起
- 27. 正規表現の後ろに文字列がない単語をマッチさせ、複数の単語(5単語まで)を一致させる正規表現
- 28. EditText - 単語ラップ(改行)リスナー
- 29. Pythonの単語リスト順列
- 30. 単語の単語から見出しのテキストを抽出する
いくつかのデータを追加して問題を解決しようとしましたか? – Cleb