私は危機の期間を特定するためにニューススニペットを分析しようとしています。 これを行うには、私はすでに過去7年間にニュース記事をダウンロードし、利用可能にしています。 今、このデータセットにLDA(Latent Dirichlet Allocation)モデルを適用して、経済危機の兆候を示す国を特定します。私はヨルダンバーバーのブログ記事(https://rstudio-pubs-static.s3.amazonaws.com/79360_850b2a69980c4488b1db95987a24867a.html)に私のコードを基づかいLDAモデルでの「良い」/「悪い」ケースの規定(Pythonでgensimを使用)
- ここでは、これまでの私のコードです:
import os, csv
#create list with text blocks in rows, based on csv file
list=[]
with open('Testfile.csv', 'r') as csvfile:
emails = csv.reader(csvfile)
for row in emails:
list.append(row)
#create doc_set
doc_set=[]
for row in list:
doc_set.append(row[0])
#import plugins - need to install gensim and stop_words manually for fresh python install
from nltk.tokenize import RegexpTokenizer
from stop_words import get_stop_words
from nltk.stem.porter import PorterStemmer
from gensim import corpora, models
import gensim
tokenizer = RegexpTokenizer(r'\w+')
# create English stop words list
en_stop = get_stop_words('en')
# Create p_stemmer of class PorterStemmer
p_stemmer = PorterStemmer()
# list for tokenized documents in loop
texts = []
# loop through document list
for i in doc_set:
# clean and tokenize document string
raw = i.lower()
tokens = tokenizer.tokenize(raw)
# remove stop words from tokens
stopped_tokens = [i for i in tokens if not i in en_stop]
# stem tokens
stemmed_tokens = [p_stemmer.stem(i) for i in stopped_tokens]
# add tokens to list
texts.append(stemmed_tokens)
# turn our tokenized documents into a id <-> term dictionary
dictionary = corpora.Dictionary(texts)
# convert tokenized documents into a document-term matrix
corpus = [dictionary.doc2bow(text) for text in texts]
# generate LDA model
ldamodel = gensim.models.ldamodel.LdaModel(corpus, num_topics=5, id2word = dictionary, passes=10)
print(ldamodel.print_topics(num_topics=5, num_words=5))
# map topics to documents
doc_lda=ldamodel[corpus]
with open('doc_lda.csv', 'w') as outfile:
writer = csv.writer(outfile)
for row in doc_lda:
writer.writerow(row)
基本的に、私は上記のコードでトピックの数(5を識別 - にチェックする)、最後の行を使用して、各ニュース記事にこれらのトピックの1つに関連する記事の確率を示すスコアを割り当てます。 ここでは、トピックが危機に関連しているかどうかを質的に評価することができますが、それは少し残念です。 私はずっとやりたいことは、危機の間に記事が公開されたかどうかをアルゴリズムに伝え、この「追加情報」を使って自分の「危機年」と「危機以外の年」の両方のトピックを特定し、 。私のデータセットを単に分割するだけで、私の「悪い」(すなわち、危機の年のみ)のトピックは私の意見では機能しません。実際にはどのトピックが実際に危機に関連するかを手動で選択する必要があります。とにかく(スポーツニュース、...)。
したがって、「危機」と「非危機」の情報を組み込み、b)最適な数のトピック/単語を自動的に選択して、モデル?
ありがとうございます!
これはSOに完全に適切ではありませんそれはデータ分析の質問というほどプログラミングに関する質問ではないので、どこに適しているか分かりません... – drevicko