2016-06-16 13 views
0

私はPythonでLDA解析を行っています。そして、次のコードを使用して文書用語行列を作成しました。文書用語行列から単語頻度を抽出する方法は?

corpus = [dictionary.doc2bow(text) for text in texts]. 

コーパス全体で単語の頻度を数える簡単な方法はありますか?私はterm-idリストである辞書を持っているので、term-idとfrequencyという単語をマッチさせることができます。

+0

私はずっとこれを使用していない - しかし、merge_with()またはadd_documents()を使用して問題がありますか? https://radimrehurek.com/gensim/corpora/dictionary.html –

答えて

4

あなたはあなたに与えられた文字列textsの単語の出現頻度を与える文字列texts

from nltk import FreqDist 
import nltk 
texts = 'hi there hello there' 
words = nltk.tokenize.word_tokenize(texts) 
fdist = FreqDist(words) 

fdistで単語の出現頻度をカウントするためにnltkを使用することができます。

ただし、テキストのリストがあります。頻度をカウントする1つの方法は、CountVectorizerscikit-learnから文字列のリストに使用することです。

import numpy as np 
from sklearn.feature_extraction.text import CountVectorizer 
texts = ['hi there', 'hello there', 'hello here you are'] 
vectorizer = CountVectorizer() 
X = vectorizer.fit_transform(texts) 
freq = np.ravel(X.sum(axis=0)) # sum each columns to get total counts for each word 

このfreq辞書の値に対応させていただきますvectorizer.vocabulary_

import operator 
# get vocabulary keys, sorted by value 
vocab = [v[0] for v in sorted(vectorizer.vocabulary_.items(), key=operator.itemgetter(1))] 
fdist = dict(zip(vocab, freq)) # return same format as nltk 
+0

ありがとうございます。しかし、問題は私のテキストが単なる文書ではないということです。あなたがテキストのリストを持っている場合のために答えを更新しました –

+0

@ AegeanT.Wu、これはまだOKですか? – titipata

+0

vocabはソートされていますが、freqはソートされていませんが、それはリストです。私はテキスト[1]、テキスト[2]を持っています.... – learn2day

関連する問題