From 24fe5b77b7829a5d97d77367e204a36eacc8653d Mon Sep 17 00:00:00 2001 From: Erick Peirson Date: Mon, 11 Jul 2016 15:10:41 -0400 Subject: [PATCH 1/5] TETHNE-130 working on re-introducing dtm --- tethne/bin/dtm | Bin 0 -> 253740 bytes tethne/model/corpus/dtm.py | 620 ++++++++++++++++++++++++++++++++ tethne/model/corpus/mallet.py | 2 +- tethne/tests/test_models_dtm.py | 92 +++++ 4 files changed, 713 insertions(+), 1 deletion(-) create mode 100755 tethne/bin/dtm create mode 100644 tethne/model/corpus/dtm.py create mode 100644 tethne/tests/test_models_dtm.py diff --git a/tethne/bin/dtm b/tethne/bin/dtm new file mode 100755 index 0000000000000000000000000000000000000000..1974d3c7f73d2dcb67a3f8180c6d0c84e0b2fc74 GIT binary patch literal 253740 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 QJ_cnpgV^?BC(pnC1KFF{vH$=8 literal 0 HcmV?d00001 diff --git a/tethne/model/corpus/dtm.py b/tethne/model/corpus/dtm.py new file mode 100644 index 00000000..4c773daf --- /dev/null +++ b/tethne/model/corpus/dtm.py @@ -0,0 +1,620 @@ +""" +Fit the DTM topic model. +""" + +from tethne.model import Model + +import os, sys, re, shutil, tempfile, subprocess, csv, platform, inspect +from collections import defaultdict + +TETHNE_PATH = os.path.join(os.path.dirname(os.path.abspath(inspect.stack()[0][1])), '..', '..') +DTM_PATH = os.path.join(TETHNE_PATH, 'bin', 'dtm') + + +def _to_dtm_input(corpus, target, featureset_name, fields=['date','atitle'], **slice_kwargs): + """ + + Parameters + ---------- + target : str + Target path for documents; e.g. './mycorpus' will result in + './mycorpus-mult.dat', './mycorpus-seq.dat', 'mycorpus-vocab.dat', and + './mycorpus-meta.dat'. + D : :class:`.Corpus` + Contains :class:`.Paper` objects generated from the same DfR dataset + as t_ngrams, indexed by doi and sliced by date. + feature : str + (default: 'unigrams') Features in :class:`.Corpus` to use for + modeling. + fields : list + (optional) Fields in :class:`.Paper` to include in the metadata file. + + Returns + ------- + None : If all goes well. + + Raises + ------ + IOError + """ + + try: + vocab = corpus.features[featureset_name].index + lookup = corpus.features[featureset_name].lookup + features = corpus.features[featureset_name].features + except KeyError: + raise KeyError('No featureset found with name %s' % featureset_name) + + seq = {} + # Generate -mult.dat file (wordcounts for each document). + # From the DTM example: + # + # one-doc-per-line, each line of the form + # unique_word_count index1:count1 index2:count2 ... indexn:counnt + # The docs in foo-mult.dat should be ordered by date, with the first + # docs from time1, the next from time2, ..., and the last docs from + # timen. + # + # And -meta.dat file (with DOIs). + # + # a file with information on each of the documents, arranged in + # the same order as the docs in the mult file. + # + seq = defaultdict(list) + try: + metaFile = open(target + '-meta.dat', 'wb') # Metadata. + multFile = open(target + '-mult.dat', 'wb') + except IOError: + raise IOError('Invalid target. Could not open files for writing.') + + metaFile.write('\t'.join(['id'] + fields ) + '\n') # Header row. + for year, papers in corpus.slice(**slice_kwargs): + for paper in papers: + ident = getattr(paper, corpus.index_by) + if ident not in features: + continue + + grams = features[ident] + seq[year].append(ident) + wordcount = str(len(grams)) # Number of unique words. + + # Write data. + mdat = ['{0}:{1}'.format(lookup[g], c) for g, c in grams] + multFile.write(' '.join([wordcount] + mdat) + '\n') + + # Write metadata. + meta = [ident] + [unicode(getattr(paper, f, u'')) for f in fields] + metaFile.write('\t'.join(meta) + '\n') + + metaFile.close() + multFile.close() + + # Generate -seq.dat file (number of papers per year). + # From the DTM example: + # + # Number_Timestamps + # number_docs_time_1 + # ... + # number_docs_time_i + # ... + # number_docs_time_NumberTimestamps + # + with open(target + '-seq.dat', 'wb') as seqFile: + seqFile.write(str(len(seq)) + '\n') + for year, papers in sorted(seq.items()): + seqFile.write('{0}\n'.format(len(papers))) + + # a file with all of the words in the vocabulary, arranged in + # the same order as the word indices + with open(target + '-vocab.dat', 'wb') as vocabFile: + for index, word in sorted(vocab.items()): + vocabFile.write('{0}\n'.format(word)) + + return len(seq) + + +class DTMModel(Model): + dtm_path = DTM_PATH + + def prep(self, **slice_kwargs): + self.slice_kwargs = slice_kwargs + self.outname = '{0}/model_run'.format(self.temp) + + self.mult_path = '{0}/tethne-mult.dat'.format(self.temp) + self.seq_path = '{0}/tethne-seq.dat'.format(self.temp) + self.vocab_path = '{0}/tethne-vocab.dat'.format(self.temp) + self.meta_path = '{0}/tethne-meta.dat'.format(self.temp) + self._generate_corpus(**slice_kwargs) + + def run(self, **kwargs): + ## Run the dynamic topic model. + #./main \ + # --ntopics=20 \ + # --mode=fit \ + # --rng_seed=0 \ + # --initialize_lda=true \ + # --corpus_prefix=example/test \ + # --outname=example/model_run \ + # --top_chain_var=0.005 \ + # --alpha=0.01 \ + # --lda_sequence_min_iter=6 \ + # --lda_sequence_max_iter=20 \ + # --lda_max_em_iter=10 + if not hasattr(self, 'll'): + self.ll = [] + if not hasattr(self, 'll_iters'): + self.ll_iters = [] + + top_chain_var = kwargs.get('top_chain_var', 0.005) + lda_seq_min_iter = kwargs.get('lda_seq_min_iter', 3) + lda_seq_max_iter = kwargs.get('lda_seq_max_iter', 10) + lda_max_em_iter = kwargs.get('lda_max_em_iter', 5) + alpha = kwargs.get('alpha', 0.01) + + max_iter = getattr(self, 'max_iter', 100) + Z = getattr(self, 'Z', 20) + + max_v = lda_seq_min_iter * lda_max_em_iter * self.N + + self.conv = [] + i = 1 + + corpus_prefix = '{0}/tethne'.format(self.temp) + + FNULL = open(os.devnull, 'w') + + p = subprocess.Popen( [ self.dtm_path, + '--ntopics={0}'.format(Z), + '--mode=fit', + '--rng_seed=0', + '--initialize_lda=true', + '--corpus_prefix={0}'.format(corpus_prefix), + '--outname={0}'.format(self.outname), + '--top_chain_var={0}'.format(top_chain_var), + '--alpha={0}'.format(alpha), + '--lda_sequence_min_iter={0}'.format(lda_seq_min_iter), + '--lda_sequence_max_iter={0}'.format(lda_seq_max_iter), + '--lda_max_em_iter={0}'.format(lda_max_em_iter) ], + stderr=subprocess.PIPE, + stdout=subprocess.PIPE) + + while p.poll() is None: + l = p.stderr.readline() + print l + try: # Find the LL + this_ll = float(re.findall(r'^lhood\s+=\s+([-]?\d+\.\d+)', l)[0]) + self.ll.append(this_ll) + + self.ll_iters.append(i) + i += 1 + except IndexError: + pass + + try: # Find conv + conv = re.findall(r'conv\s+=\s+([-]?\d+\.\d+e[-]\d+)', l) + self.conv.append(float(conv[0])) + + progress = int(100 * float(len(self.conv))/float(max_v)) + + except IndexError: + pass + self.load() + + # self.max_iter += lda_max_em_iter # TODO: does this make sense? + + + def _generate_corpus(self, **slice_kwargs): + """ + Writes a corpus to disk amenable to DTM. + """ + + self.N = _to_dtm_input(self.corpus, self.temp+'/tethne', featureset_name=self.featureset_name) + + def load(self): + """Load and return a :class:`.DTMModel`\.""" + + self.e_theta, self.phi, self.metadata, self.vocabulary = from_gerrish(self.outname, self.meta_path, self.vocab_path) + + self.Z = e_theta.shape[0] # Number of topics. + self.M = e_theta.shape[1] # Number of documents. + + self.W = phi.shape[1] # Number of words. + self.T = phi.shape[2] # Number of time periods. + + self.lookup = { v['id']:k for k,v in metadata.iteritems() } + + logging.debug('DTMModel.__init__(): loaded model with' + \ + ' {0} topics, {1} documents,'.format(self.Z, self.M) + \ + ' {0} words, {1} time periods.'.format(self.W, self.T)) + + + + def _item_description(self, i, **kwargs): + """ + Proportion of each topic in document. + """ + + return [ (k, self.e_theta[k, i]) + for k in xrange(self.e_theta[:, i].size) ] + + def _dimension_description(self, k, t=0, **kwargs): + """ + Yields probability distribution over terms. + """ + + return [ (w, self.phi[k, w, t]) + for w in xrange(self.phi[k, :, t].size) ] + + def _dimension_items(self, k, threshold, **kwargs): + """ + Returns items that contain ``k`` at or above ``threshold``. + + Parameters + ---------- + k : int + Topic index. + threshold : float + Minimum representation of ``k`` in document. + + Returns + ------- + description : list + A list of ( item, weight ) tuples. + """ + + description = [ (self.metadata[i]['id'], self.e_theta[k,i]) + for i in xrange(self.e_theta[k,:].size) + if self.e_theta[k,i] >= threshold ] + return description + + def topic_evolution(self, k, Nwords=5): + """ + Generate a plot that shows p(w|z) over time for the top ``Nwords`` + terms. + + Parameters + ---------- + k : int + A topic index. + Nwords : int + Number of words to return. + + Returns + ------- + keys : list + Start-date of each time-period. + t_series : list + Array of p(w|t) for Nwords for each time-period. + """ + + t_keys = range(self.T) + t_values = {} + for t in t_keys: + dim = self.dimension(k, t=t, top=Nwords) + for w,p in dim: + if w not in t_values: + t_values[w] = {} + t_values[w][t] = p + + t_series = {} + for w, values in t_values.iteritems(): + word = self.vocabulary[w] + series = [] + for t in t_keys: + if t in values: + series.append(values[t]) + else: # No value for that time-period. + series.append(0.) + t_series[word] = series + + return t_keys, t_series + + def list_topic(self, k, t, Nwords=10): + """ + Yields the top ``Nwords`` for topic ``k``. + + Parameters + ---------- + k : int + A topic index. + t : int + A time index. + Nwords : int + Number of words to return. + + Returns + ------- + as_list : list + List of words in topic. + """ + words = self.dimension(k, t=t, top=Nwords) + as_list = [ self.vocabulary[w] for w,p in words ] + + return as_list + + def list_topic_diachronic(self, k, Nwords=10): + as_dict = { t:self.list_topic(k, t, Nwords) + for t in xrange(self.T) } + return as_dict + + def print_topic_diachronic(self, k, Nwords=10): + as_dict = self.list_topic_diachronic(k, Nwords) + s = [] + for key, value in as_dict.iteritems(): + s.append('{0}: {1}'.format(key, ', '.join(value))) + as_string = '\n'.join(s) + + print as_string + + def print_topic(self, k, t, Nwords=10): + """ + Yields the top ``Nwords`` for topic ``k``. + + Parameters + ---------- + k : int + A topic index. + t : int + A time index. + Nwords : int + Number of words to return. + + Returns + ------- + as_string : str + Joined list of words in topic. + """ + + as_string = ', '.join(self.list_topic(k, t=t, Nwords=Nwords)) + + print as_string + + def list_topics(self, t, Nwords=10): + """ + Yields the top ``Nwords`` for each topic. + + Parameters + ---------- + t : int + A time index. + Nwords : int + Number of words to return for each topic. + + Returns + ------- + as_dict : dict + Keys are topic indices, values are list of words. + """ + + as_dict = {} + for k in xrange(self.Z): + as_dict[k] = self.list_topic(k, t, Nwords) + + return as_dict + + def print_topics(self, t, Nwords=10): + """ + Yields the top ``Nwords`` for each topic. + + Parameters + ---------- + t : int + A time index. + Nwords : int + Number of words to return for each topic. + + Returns + ------- + as_string : str + Newline-delimited lists of words for each topic. + """ + + as_dict = self.list_topics(t, Nwords) + s = [] + for key, value in as_dict.iteritems(): + s.append('{0}: {1}'.format(key, ', '.join(value))) + as_string = '\n'.join(s) + + print as_string + + + +def from_gerrish(target, metadata, vocabulary, metadata_key='doi'): + """ + Generate a :class:`.DTMModel` from the output of `S. Gerrish's C++ DTM + implementation `_. + + The Gerrish DTM implementation generates a large number of data files + contained in a directory called ``lda-seq``. The ``target`` parameter + should be the path to that directory. + + ``metadata`` should be the path to a tab-delimted metadata file. Those + records should occur in the same order as in the corpus data files used + to generate the model. For example:: + + id date atitle + 10.2307/2437162 1945 SOME ECOTYPIC RELATIONS OF DESCHAMPSIA CAESPITOSA + 10.2307/4353229 1940 ENVIRONMENTAL INFLUENCE AND TRANSPLANT EXPERIMENTS + 10.2307/4353158 1937 SOME FUNDAMENTAL PROBLEMS OF TAXONOMY AND PHYLOGENETICS + + ``vocabulary`` should be the path to a file containing the words used to + generate the model, one per line. + + Parameters + ---------- + target : str + Path to ``lda-seq`` output directory. + metadata : str + Path to metadata file. + vocabulary : str + Path to vocabulary file. + + Returns + ------- + :class:`.DTMModel` + """ + + e_log_prob = 'topic-{0}-var-e-log-prob.dat' + info = 'topic-{0}-info.dat' + obs = 'topic-{0}-obs.dat' + + reader = GerrishLoader(target, metadata, vocabulary)#, metadata, vocabulary) + return reader.load() + + +class GerrishLoader(object): + """ + Helper class for parsing results from `S. Gerrish's C++ implementation `_ + Parameters + ---------- + target : str + Path to ``lda-seq`` output directory. + metadata : str + Path to metadata file. + vocabulary : str + Path to vocabulary file. + + Returns + ------- + :class:`.DTMModel` + """ + + def __init__(self, target, metadata_path, vocabulary_path): + self.target = target + self.metadata_path = metadata_path + self.vocabulary_path = vocabulary_path + + self.handler = { 'prob': self._handle_prob, + 'info': self._handle_info, + 'obs': self._handle_obs } + + self.tdict = {} + + def load(self): + try: + contents = os.listdir(self.target) + lda_seq_dir = os.listdir('{0}/lda-seq'.format(self.target)) + except OSError: + raise OSError("Invalid target path.") + + # Metadata. + self._handle_metadata() + self._handle_vocabulary() + + # Meta-parameters. + self._handle_metaparams() + + # Topic proportions. + self._handle_gammas() + + # p(w|z) + for fname in lda_seq_dir: + fs = re.split('-|\.', fname) + + if fs[0] == 'topic': + z_s = fs[1] + z = int(z_s) + self.handler[fs[-2]](fname, z) + + tkeys = sorted(self.tdict.keys()) + self.phi = np.array( [ self.tdict[z] for z in tkeys ]) + + return self.e_theta, self.phi, self.metadata, self.vocabulary + + def _handle_metaparams(self): + # Read metaparameters. + with open('{0}/lda-seq/info.dat'.format(self.target), 'rb') as f: + for line in f.readlines(): + ls = line.split() + if ls[0] == 'NUM_TOPICS': + self.N_z = int(ls[1]) + + elif ls[0] == 'NUM_TERMS': + self.N_w = int(ls[1]) + + elif ls[0] == 'SEQ_LENGTH': + self.N_t = int(ls[1]) + + elif ls[0] == 'ALPHA': + self.A = np.array(ls[2:]) + + def _handle_gammas(self): + # Read gammas -> e_theta + with open('{0}/lda-seq/gam.dat'.format(self.target), 'rb') as f: + data = np.array(f.read().split()) + self.N_d = data.shape[0]/self.N_z + b = data.reshape((self.N_d, self.N_z)).astype('float32') + rs = np.sum(b, axis=1) + self.e_theta = np.array([ b[:,z]/rs for z in xrange(self.N_z) ]) + + def _handle_prob(self, fname, z): + """ + - topic-???-var-e-log-prob.dat: the e-betas (word distributions) for + topic ??? for all times. This is in row-major form, + """ + with open('{0}/lda-seq/{1}'.format(self.target, fname), 'rb') as f: + data = np.array(f.read().split()).reshape((self.N_w, self.N_t)) + self.tdict[z] = np.exp(data.astype('float32')) + + def _handle_info(self, fname, z): + """ + No need to do anything with these yet. + """ + pass + + def _handle_obs(self, fname, z): + """ + TODO: Figure out what, if anything, this is good for. + """ + pass + + def _handle_metadata(self): + """ + + Returns + ------- + metadata : dict + Keys are document indices, values are identifiers from a + :class:`.Paper` property (e.g. DOI). + """ + + if self.metadata_path is None: + self.metadata = None + return + + self.metadata = {} + + with open(self.metadata_path, "rU") as f: + reader = csv.reader(f, delimiter='\t') + + all_lines = [ l for l in reader ] + keys = all_lines[0] + lines = all_lines[1:] + + i = 0 + for l in lines: + self.metadata[i] = { keys[i]:l[i] for i in xrange(0, len(l)) } + i += 1 + + return self.metadata + + def _handle_vocabulary(self): + """ + + Returns + ------- + vocabulary : dict + Keys are word indices, values are word strings. + """ + if self.vocabulary_path is None: + raise RuntimeError("No vocabulary provided.") + + # Build vocabulary + self.vocabulary = {} + with open(self.vocabulary_path, 'rU') as f: + i = 0 + for v in f.readlines(): + self.vocabulary[i] = v.strip('\n') + i += 1 + + return self.vocabulary diff --git a/tethne/model/corpus/mallet.py b/tethne/model/corpus/mallet.py index 0e794033..c6a79c9a 100644 --- a/tethne/model/corpus/mallet.py +++ b/tethne/model/corpus/mallet.py @@ -1,5 +1,5 @@ """ -Classes and methods related to the :class:`.MALLETModelManager`\. +Fit the vanilla LDA topic model with MALLET. """ import os, sys, re, shutil, tempfile, subprocess, csv, platform, inspect diff --git a/tethne/tests/test_models_dtm.py b/tethne/tests/test_models_dtm.py new file mode 100644 index 00000000..d76d2d22 --- /dev/null +++ b/tethne/tests/test_models_dtm.py @@ -0,0 +1,92 @@ +import sys +sys.path.append('../tethne') + +import unittest +import tempfile +import os +from xml.etree import ElementTree as ET +import networkx as nx +import csv + + +from tethne.readers.wos import read +from tethne import FeatureSet, tokenize +from tethne.networks import topics +from tethne.model.corpus.dtm import DTMModel +from nltk.tokenize import word_tokenize + +datapath = './tethne/tests/data/wos3.txt' +sandbox = './tethne/tests/sandbox' + +import logging +logger = logging.getLogger('dtm') +logger.setLevel('DEBUG') + + +from tethne.model.corpus.dtm import _to_dtm_input + + +class TestToDTMInput(unittest.TestCase): + def setUp(self): + self.corpus = read(datapath, index_by='wosid') + self.basepath = os.path.join(sandbox, 'dtm_test') + self.corpus.index_feature('abstract', word_tokenize) + for fname in ['meta', 'mult', 'seq', 'vocab']: + try: + os.remove(self.basepath + '-%s.dat' % fname) + except OSError: + pass + + def test_to_dtm_input(self): + _to_dtm_input(self.corpus, self.basepath, 'abstract') + + for fname in ['meta', 'mult', 'seq', 'vocab']: + self.assertTrue(os.path.exists(self.basepath + '-%s.dat' % fname)) + + def tearDown(self): + for fname in ['meta', 'mult', 'seq', 'vocab']: + os.remove(self.basepath + '-%s.dat' % fname) + + +class TestDTMModel(unittest.TestCase): + def setUp(self): + self.corpus = read(datapath, index_by='wosid') + self.basepath = os.path.join(sandbox, 'dtm_test') + self.corpus.index_feature('abstract', word_tokenize) + for fname in ['meta', 'mult', 'seq', 'vocab']: + try: + os.remove(self.basepath + '-%s.dat' % fname) + except OSError: + pass + + def test_init(self): + self.model = DTMModel(self.corpus, featureset_name='abstract') + + def test_fit(self): + self.model = DTMModel(self.corpus, featureset_name='abstract') + self.model.fit(Z=20) + +# class TestLDAModel(unittest.TestCase): +# def setUp(self): +# from tethne.model.corpus.dtm import DTMModel +# corpus = read(datapath, index_by='wosid') +# corpus.index_feature('abstract', tokenize, structured=True) +# self.model = LDAModel(corpus, featureset_name='abstract') +# self.model.fit(Z=20, max_iter=500) +# +# def test_ldamodel(self): +# dates, rep = self.model.topic_over_time(1) +# self.assertGreater(sum(rep), 0) +# self.assertEqual(len(dates), len(rep)) +# +# self.assertIsInstance(self.model.phi, FeatureSet) +# self.assertIsInstance(self.model.theta, FeatureSet) +# +# self.assertIsInstance(self.model.list_topics(), list) +# self.assertGreater(len(self.model.list_topics()), 0) +# self.assertIsInstance(self.model.list_topic(0), list) +# self.assertGreater(len(self.model.list_topic(0)), 0) + + +if __name__ == '__main__': + unittest.main() From 832597515ba0d731c93b1f59cb1044f4ef8dd9b5 Mon Sep 17 00:00:00 2001 From: Erick Peirson Date: Mon, 11 Jul 2016 18:40:14 -0400 Subject: [PATCH 2/5] bringing DTM back #147 TETHNE-130 --- setup.py | 1 + tethne/model/corpus/dtm.py | 269 +++++++++++++++++++++++--------- tethne/tests/test_models_dtm.py | 60 +++---- 3 files changed, 224 insertions(+), 106 deletions(-) diff --git a/setup.py b/setup.py index 82c8cc2b..fcdd2a2d 100644 --- a/setup.py +++ b/setup.py @@ -51,5 +51,6 @@ "slate", "Unidecode==0.4.17", "nltk", + "numpy==1.9.3" ], ) diff --git a/tethne/model/corpus/dtm.py b/tethne/model/corpus/dtm.py index 4c773daf..3de6b64b 100644 --- a/tethne/model/corpus/dtm.py +++ b/tethne/model/corpus/dtm.py @@ -5,13 +5,19 @@ from tethne.model import Model import os, sys, re, shutil, tempfile, subprocess, csv, platform, inspect +try: + import numpy as np +except ImportError: + raise ImportError('DTMModel requires Numpy') + from collections import defaultdict TETHNE_PATH = os.path.join(os.path.dirname(os.path.abspath(inspect.stack()[0][1])), '..', '..') DTM_PATH = os.path.join(TETHNE_PATH, 'bin', 'dtm') -def _to_dtm_input(corpus, target, featureset_name, fields=['date','atitle'], **slice_kwargs): +def _to_dtm_input(corpus, target, featureset_name, fields=['date','atitle'], + **slice_kwargs): """ Parameters @@ -99,10 +105,12 @@ def _to_dtm_input(corpus, target, featureset_name, fields=['date','atitle'], **s # ... # number_docs_time_NumberTimestamps # + years = [] with open(target + '-seq.dat', 'wb') as seqFile: seqFile.write(str(len(seq)) + '\n') for year, papers in sorted(seq.items()): seqFile.write('{0}\n'.format(len(papers))) + years.append(year) # a file with all of the words in the vocabulary, arranged in # the same order as the word indices @@ -110,7 +118,7 @@ def _to_dtm_input(corpus, target, featureset_name, fields=['date','atitle'], **s for index, word in sorted(vocab.items()): vocabFile.write('{0}\n'.format(word)) - return len(seq) + return years, len(seq) class DTMModel(Model): @@ -180,54 +188,36 @@ def run(self, **kwargs): while p.poll() is None: l = p.stderr.readline() - print l - try: # Find the LL - this_ll = float(re.findall(r'^lhood\s+=\s+([-]?\d+\.\d+)', l)[0]) - self.ll.append(this_ll) - + match = re.match(r'^lhood\s+=\s+([-]?\d+\.\d+)', l) + if match: # Find the LL + self.ll.append(match.groups()[0]) self.ll_iters.append(i) i += 1 - except IndexError: - pass - - try: # Find conv - conv = re.findall(r'conv\s+=\s+([-]?\d+\.\d+e[-]\d+)', l) - self.conv.append(float(conv[0])) - progress = int(100 * float(len(self.conv))/float(max_v)) - - except IndexError: - pass self.load() - # self.max_iter += lda_max_em_iter # TODO: does this make sense? - - def _generate_corpus(self, **slice_kwargs): """ Writes a corpus to disk amenable to DTM. """ - self.N = _to_dtm_input(self.corpus, self.temp+'/tethne', featureset_name=self.featureset_name) + self.years, self.N = _to_dtm_input(self.corpus, self.temp+'/tethne', + featureset_name=self.featureset_name, + **slice_kwargs) def load(self): """Load and return a :class:`.DTMModel`\.""" - self.e_theta, self.phi, self.metadata, self.vocabulary = from_gerrish(self.outname, self.meta_path, self.vocab_path) + result = from_gerrish(self.outname, self.meta_path, self.vocab_path) + self.e_theta, self.phi, self.metadata, self.vocabulary = result - self.Z = e_theta.shape[0] # Number of topics. - self.M = e_theta.shape[1] # Number of documents. - - self.W = phi.shape[1] # Number of words. - self.T = phi.shape[2] # Number of time periods. - - self.lookup = { v['id']:k for k,v in metadata.iteritems() } - - logging.debug('DTMModel.__init__(): loaded model with' + \ - ' {0} topics, {1} documents,'.format(self.Z, self.M) + \ - ' {0} words, {1} time periods.'.format(self.W, self.T)) + self.Z = self.e_theta.shape[0] # Number of topics. + self.M = self.e_theta.shape[1] # Number of documents. + self.W = self.phi.shape[1] # Number of words. + self.T = self.phi.shape[2] # Number of time periods. + self.lookup = {v['id']:k for k,v in self.metadata.iteritems()} def _item_description(self, i, **kwargs): """ @@ -269,8 +259,6 @@ def _dimension_items(self, k, threshold, **kwargs): def topic_evolution(self, k, Nwords=5): """ - Generate a plot that shows p(w|z) over time for the top ``Nwords`` - terms. Parameters ---------- @@ -288,25 +276,19 @@ def topic_evolution(self, k, Nwords=5): """ t_keys = range(self.T) - t_values = {} + t_values = defaultdict(dict) for t in t_keys: dim = self.dimension(k, t=t, top=Nwords) - for w,p in dim: - if w not in t_values: - t_values[w] = {} + for w, p in dim: t_values[w][t] = p - t_series = {} + t_series = defaultdict(list) for w, values in t_values.iteritems(): word = self.vocabulary[w] - series = [] for t in t_keys: - if t in values: - series.append(values[t]) - else: # No value for that time-period. - series.append(0.) - t_series[word] = series + t_series[word].append(values[t] if t in values else 0.) + t_keys = getattr(self, 'years', t_keys) return t_keys, t_series def list_topic(self, k, t, Nwords=10): @@ -327,15 +309,12 @@ def list_topic(self, k, t, Nwords=10): as_list : list List of words in topic. """ - words = self.dimension(k, t=t, top=Nwords) - as_list = [ self.vocabulary[w] for w,p in words ] - return as_list + words = self.dimension(k, t=t, top=Nwords) + return [self.vocabulary[w] for w, p in words] def list_topic_diachronic(self, k, Nwords=10): - as_dict = { t:self.list_topic(k, t, Nwords) - for t in xrange(self.T) } - return as_dict + return {t: self.list_topic(k, t, Nwords) for t in xrange(self.T)} def print_topic_diachronic(self, k, Nwords=10): as_dict = self.list_topic_diachronic(k, Nwords) @@ -359,15 +338,9 @@ def print_topic(self, k, t, Nwords=10): Nwords : int Number of words to return. - Returns - ------- - as_string : str - Joined list of words in topic. """ - as_string = ', '.join(self.list_topic(k, t=t, Nwords=Nwords)) - - print as_string + print u', '.join(self.list_topic(k, t=t, Nwords=Nwords)) def list_topics(self, t, Nwords=10): """ @@ -382,15 +355,11 @@ def list_topics(self, t, Nwords=10): Returns ------- - as_dict : dict + dict Keys are topic indices, values are list of words. """ - as_dict = {} - for k in xrange(self.Z): - as_dict[k] = self.list_topic(k, t, Nwords) - - return as_dict + return {k: self.list_topic(k, t, Nwords) for k in xrange(self.Z)} def print_topics(self, t, Nwords=10): """ @@ -409,13 +378,169 @@ def print_topics(self, t, Nwords=10): Newline-delimited lists of words for each topic. """ - as_dict = self.list_topics(t, Nwords) - s = [] - for key, value in as_dict.iteritems(): - s.append('{0}: {1}'.format(key, ', '.join(value))) - as_string = '\n'.join(s) - print as_string + print u'\n'.join([u'{0}: {1}'.format(key, u', '.join(value)) + for key, value + in self.list_topics(t, Nwords).iteritems()]) + + def item(self, i, top=None, **kwargs): + """ + Describes an item in terms of dimensions and weights. + + Subclass must provide ``_item_description(i)`` method. + + Parameters + ---------- + i : int + Index for an item. + top : int + (optional) Number of (highest-w) dimensions to return. + + Returns + ------- + description : list + A list of ( dimension , weight ) tuples. + """ + + try: + description = self._item_description(i, **kwargs) + except KeyError: + raise KeyError('No such item index in this model.') + except AttributeError: + raise NotImplementedError('_item_description() not implemented' + \ + ' for this model class.') + + # Optionally, select only the top-weighted dimensions. + if type(top) is int: + D, W = zip(*description) # Dimensions and Weights. + D = list(D) # To support element deletion, below. + W = list(W) + top_description = [] + while len(top_description) < top: # Avoiding Numpy argsort. + d = W.index(max(W)) # Index of top weight. + top_description.append((D[d], W[d])) + del D[d], W[d] + return top_description + return description + + def item_relationship(self, i, j, **kwargs): + """ + Describes the relationship between two items. + + Subclass must provide ``_item_relationship(i, j)`` method. + + Parameters + ---------- + i : int + Item index. + j : int + Item index. + + Returns + ------- + list + A list of ( dimension , weight ) tuples. + """ + + try: + return self._item_relationship(i, j, **kwargs) + except AttributeError: + raise NotImplementedError('_item_relationship() not implemented' \ + + ' for this model class.') + + def dimension(self, d, top=None, asmatrix=False, **kwargs): + """ + Describes a dimension (eg a topic). + + Subclass must provide ``_dimension_description(d)`` method. + + Parameters + ---------- + d : int + Dimension index. + + Returns + ------- + description : list + A list of ( feature, weight ) tuples (e.g. word, prob ). + """ + + try: + description = self._dimension_description(d, **kwargs) + except AttributeError: + raise NotImplementedError('_dimension_description() not' + \ + ' implemented for this model class.') + + # Optionally, select only the top-weighted dimensions. + if type(top) is int: + D, W = zip(*description) # Dimensions and Weights. + D = list(D) # To support element deletion, below. + W = list(W) + top_description = [] + while len(top_description) < top: # Avoiding Numpy argsort. + d = W.index(max(W)) # Index of top weight. + top_description.append((D[d], W[d])) + del D[d], W[d] + + description = top_description + + if asmatrix: + J,K = zip(*description) + I = [ d for i in xrange(len(J)) ] + mat = coo_matrix(list(K), (I,list(J))).tocsc() + return mat + + return description + + def dimension_items(self, d, threshold, **kwargs): + """ + Describes a dimension in terms of the items that contain it. + + Subclass must provide ``_dimension_items(d, threshold)`` method. + + Parameters + ---------- + d : int + Dimension index. + threshold : float + Minimum representation of ``d`` in item. + + Returns + ------- + description : list + A list of ( item, weight ) tuples. + """ + + try: + return self._dimension_items(d, threshold, **kwargs) + except AttributeError: + raise NotImplementedError('_dimension_items() not implemented for' \ + + ' this model class.') + + def dimension_relationship(self, d, e, **kwargs): + """ + Describes the relationship between two dimensions. + + Subclass must provide ``_dimension_relationship(d, e)`` method. + + Parameters + ---------- + d : int + Dimension index. + e : int + Dimension index. + + Returns + ------- + relationship : list + A list of ( factor , weight ) tuples. + """ + + try: + return self._dimension_relationship(d, e, **kwargs) + except AttributeError: + raise NotImplementedError('_dimension_relationship() not' \ + + ' implemented for this model class.') @@ -517,7 +642,7 @@ def load(self): self.handler[fs[-2]](fname, z) tkeys = sorted(self.tdict.keys()) - self.phi = np.array( [ self.tdict[z] for z in tkeys ]) + self.phi = np.array([self.tdict[z] for z in tkeys]) return self.e_theta, self.phi, self.metadata, self.vocabulary diff --git a/tethne/tests/test_models_dtm.py b/tethne/tests/test_models_dtm.py index d76d2d22..5cbfc5da 100644 --- a/tethne/tests/test_models_dtm.py +++ b/tethne/tests/test_models_dtm.py @@ -26,16 +26,20 @@ from tethne.model.corpus.dtm import _to_dtm_input +def _cleanUp(basepath): + for fname in ['meta', 'mult', 'seq', 'vocab']: + try: + os.remove(basepath + '-%s.dat' % fname) + except OSError: + pass + + class TestToDTMInput(unittest.TestCase): def setUp(self): self.corpus = read(datapath, index_by='wosid') self.basepath = os.path.join(sandbox, 'dtm_test') self.corpus.index_feature('abstract', word_tokenize) - for fname in ['meta', 'mult', 'seq', 'vocab']: - try: - os.remove(self.basepath + '-%s.dat' % fname) - except OSError: - pass + _cleanUp(self.basepath) def test_to_dtm_input(self): _to_dtm_input(self.corpus, self.basepath, 'abstract') @@ -44,8 +48,7 @@ def test_to_dtm_input(self): self.assertTrue(os.path.exists(self.basepath + '-%s.dat' % fname)) def tearDown(self): - for fname in ['meta', 'mult', 'seq', 'vocab']: - os.remove(self.basepath + '-%s.dat' % fname) + _cleanUp(self.basepath) class TestDTMModel(unittest.TestCase): @@ -53,39 +56,28 @@ def setUp(self): self.corpus = read(datapath, index_by='wosid') self.basepath = os.path.join(sandbox, 'dtm_test') self.corpus.index_feature('abstract', word_tokenize) - for fname in ['meta', 'mult', 'seq', 'vocab']: - try: - os.remove(self.basepath + '-%s.dat' % fname) - except OSError: - pass + _cleanUp(self.basepath) def test_init(self): self.model = DTMModel(self.corpus, featureset_name='abstract') def test_fit(self): self.model = DTMModel(self.corpus, featureset_name='abstract') - self.model.fit(Z=20) - -# class TestLDAModel(unittest.TestCase): -# def setUp(self): -# from tethne.model.corpus.dtm import DTMModel -# corpus = read(datapath, index_by='wosid') -# corpus.index_feature('abstract', tokenize, structured=True) -# self.model = LDAModel(corpus, featureset_name='abstract') -# self.model.fit(Z=20, max_iter=500) -# -# def test_ldamodel(self): -# dates, rep = self.model.topic_over_time(1) -# self.assertGreater(sum(rep), 0) -# self.assertEqual(len(dates), len(rep)) -# -# self.assertIsInstance(self.model.phi, FeatureSet) -# self.assertIsInstance(self.model.theta, FeatureSet) -# -# self.assertIsInstance(self.model.list_topics(), list) -# self.assertGreater(len(self.model.list_topics()), 0) -# self.assertIsInstance(self.model.list_topic(0), list) -# self.assertGreater(len(self.model.list_topic(0)), 0) + self.model.fit(Z=5) + + self.assertEqual(self.model.e_theta.shape, (5, 220)) + self.assertEqual(self.model.phi.shape, (5, 7429, 12)) + + keys, values = self.model.topic_evolution(0) + self.assertEqual(keys, self.corpus.indices['date'].keys()) + + self.model.list_topic(0, 0) + self.model.list_topic_diachronic(0) + self.model.list_topics(0) + + def tearDown(self): + _cleanUp(self.basepath) + if __name__ == '__main__': From e51238470d0707f703709da9a886d3ed05b1b464 Mon Sep 17 00:00:00 2001 From: Erick Peirson Date: Wed, 13 Jul 2016 09:07:40 -0400 Subject: [PATCH 3/5] removed dtm executable --- tethne/bin/dtm | Bin 253740 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100755 tethne/bin/dtm diff --git a/tethne/bin/dtm b/tethne/bin/dtm deleted file mode 100755 index 1974d3c7f73d2dcb67a3f8180c6d0c84e0b2fc74..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 253740 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 QJ_cnpgV^?BC(pnC1KFF{vH$=8 From 3f2c4bcabc98c0d230cd9e69ab8c6384c1b381bd Mon Sep 17 00:00:00 2001 From: Erick Peirson Date: Wed, 13 Jul 2016 09:31:21 -0400 Subject: [PATCH 4/5] TETHNE-130 DTM support --- setup.py | 2 +- tethne/model/corpus/dtm.py | 42 +++++++++++++++++++++++++++++++-- tethne/tests/test_models_dtm.py | 28 +++++++++++++++++----- 3 files changed, 63 insertions(+), 9 deletions(-) diff --git a/setup.py b/setup.py index fcdd2a2d..bf6b20c5 100644 --- a/setup.py +++ b/setup.py @@ -51,6 +51,6 @@ "slate", "Unidecode==0.4.17", "nltk", - "numpy==1.9.3" + "numpy==1.11", ], ) diff --git a/tethne/model/corpus/dtm.py b/tethne/model/corpus/dtm.py index 3de6b64b..cb3adda1 100644 --- a/tethne/model/corpus/dtm.py +++ b/tethne/model/corpus/dtm.py @@ -13,7 +13,6 @@ from collections import defaultdict TETHNE_PATH = os.path.join(os.path.dirname(os.path.abspath(inspect.stack()[0][1])), '..', '..') -DTM_PATH = os.path.join(TETHNE_PATH, 'bin', 'dtm') def _to_dtm_input(corpus, target, featureset_name, fields=['date','atitle'], @@ -122,7 +121,46 @@ def _to_dtm_input(corpus, target, featureset_name, fields=['date','atitle'], class DTMModel(Model): - dtm_path = DTM_PATH + """ + Provides a wrapper for Dynamic Topic Model by David Blei et al [1][2]. + + In order to use this class you must have already compiled the ``dtm`` + package by Blei and Gerrish, located + [here](https://github.com/blei-lab/dtm). If you run into memory issues you + may want to try [this fork](https://github.com/fedorn/dtm). + + You must provide the path to the binary executable (usually called ``main``) + either by setting the DTM_PATH environment variable, or by passing + ``dtm_path='/path/to/dtm/main'`` to the constructor. + + [1] D. Blei and J. Lafferty. Dynamic topic models. In Proceedings of the + 23rd International Conference on Machine Learning, 2006. + + [2] S. Gerrish and D. Blei. A Language-based Approach to Measuring + Scholarly Impact. In Proceedings of the 27th International Conference on + Machine Learning, 2010. + + Examples + -------- + + .. code-block:: python + + >>> from tethne.readers.wos import read + >>> from nltk.tokenize import word_tokenize + >>> corpus = read('/path/to/my/data') + >>> corpus.index_feature('abstract', word_tokenize) + >>> from tethne import DTMModel + >>> model = DTMModel(corpus, + ... featureset_name='abstract', + ... dtm_path='/path/to/dtm/main') + >>> model.fit(Z=5) + + In practice you will want to do some filtering prior to modeling. + + """ + def __init__(self, *args, **kwargs): + self.dtm_path = os.environ.get('DTM_PATH', None) + super(DTMModel, self).__init__(*args, **kwargs) def prep(self, **slice_kwargs): self.slice_kwargs = slice_kwargs diff --git a/tethne/tests/test_models_dtm.py b/tethne/tests/test_models_dtm.py index 5cbfc5da..2b94084e 100644 --- a/tethne/tests/test_models_dtm.py +++ b/tethne/tests/test_models_dtm.py @@ -8,7 +8,6 @@ import networkx as nx import csv - from tethne.readers.wos import read from tethne import FeatureSet, tokenize from tethne.networks import topics @@ -22,6 +21,8 @@ logger = logging.getLogger('dtm') logger.setLevel('DEBUG') +DTM_PATH = os.environ.get('DTM_PATH', None) + from tethne.model.corpus.dtm import _to_dtm_input @@ -59,10 +60,25 @@ def setUp(self): _cleanUp(self.basepath) def test_init(self): - self.model = DTMModel(self.corpus, featureset_name='abstract') + # We have to depend on the user compiling DTM themselves at this point, + # so until we add a DTM build step to Travis this should only run if + # the path to DTM binary is set. + if not DTM_PATH: + return + self.model = DTMModel(self.corpus, + featureset_name='abstract', + dtm_path=DTM_PATH) def test_fit(self): - self.model = DTMModel(self.corpus, featureset_name='abstract') + # We have to depend on the user compiling DTM themselves at this point, + # so until we add a DTM build step to Travis this should only run if + # the path to DTM binary is set. + if not DTM_PATH: + return + + self.model = DTMModel(self.corpus, + featureset_name='abstract', + dtm_path=DTM_PATH) self.model.fit(Z=5) self.assertEqual(self.model.e_theta.shape, (5, 220)) @@ -71,9 +87,9 @@ def test_fit(self): keys, values = self.model.topic_evolution(0) self.assertEqual(keys, self.corpus.indices['date'].keys()) - self.model.list_topic(0, 0) - self.model.list_topic_diachronic(0) - self.model.list_topics(0) + self.model.list_topic(3, 0) + self.model.list_topic_diachronic(3) + self.model.list_topics(3) def tearDown(self): _cleanUp(self.basepath) From 5c60b1ebd4e844d2f13b3beeea14fae2534f9934 Mon Sep 17 00:00:00 2001 From: Erick Peirson Date: Wed, 13 Jul 2016 14:05:07 -0400 Subject: [PATCH 5/5] DTM tests should use tempdir --- tethne/tests/test_models_dtm.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tethne/tests/test_models_dtm.py b/tethne/tests/test_models_dtm.py index 2b94084e..e4b9759f 100644 --- a/tethne/tests/test_models_dtm.py +++ b/tethne/tests/test_models_dtm.py @@ -15,7 +15,7 @@ from nltk.tokenize import word_tokenize datapath = './tethne/tests/data/wos3.txt' -sandbox = './tethne/tests/sandbox' +sandbox = tempfile.mkdtemp() import logging logger = logging.getLogger('dtm')