Python gensim Word2Vec tutorial with TensorFlow and Keras

gensim Word2Vec - nearest words

I’ve been dedicating quite a bit of time recently to Word2Vec tutorials because of the importance of the Word2Vec concept for natural language processing (NLP) and also because I’ll soon be presenting some tutorials on recurrent neural networks and LSTMs for sequence prediction/NLP (UPDATE: I’ve completed a comprehensive tutorial on these topics – Recurrent neural networks and LSTM tutorial in Python and TensorFlow).  There are also some very interesting ideas floating around such as thought vectors which require an understanding of the Word2Vec concept.  My two Word2Vec tutorials are Word2Vec word embedding tutorial in Python and TensorFlow and A Word2Vec Keras tutorial showing the concepts of Word2Vec and implementing in TensorFlow and Keras, respectively.  In this tutorial, I am going to show you how you can use the original Google Word2Vec C code to generate word vectors, using the Python gensim library which wraps this cod,e and apply the results to TensorFlow and Keras.

The gensim Word2Vec implementation is very fast due to its C implementation – but to use it properly you will first need to install the Cython library. In this tutorial, I’ll show how to load the resulting embedding layer generated by gensim into TensorFlow and Keras embedding implementations.  Because of gensim’s blazing fast C wrapped code, this is a good alternative to running native Word2Vec embeddings in TensorFlow and Keras.


Recommended online course: If you are more of a video course learner, check out this inexpensive Udemy course: Natural Language Processing with Deep Learning in Python


Word2Vec and gensim

I’ve devoted plenty of words to explaining Word2Vec in my previous tutorials (here and here) so I’ll only briefly introduce the Word2Vec concepts here.  For further details, check out those tutorials. Here’s the (relatively) quick version – for each text data set that we create, we have to create a vocabulary. The vocabulary is the list of unique words within the text.  Often it is >10,000 words for serious data sets.  Machine learning models generally can’t take raw word inputs, so we first need to convert our data set into some number format – generally a list of unique integers.

Neural network based models like vector inputs. We, therefore, need to convert the integers into vectors.  A naive way of converting integers into vectors is to convert them into one-hot vectors – these are vectors where all of the values are set to zero, except for one i.e. [0, 0, 0, …, 1, …, 0, 0].  The “one-hot” value is located at the array index which matches the unique integer representation of the word. Therefore, our input one-hot vector must be at least the size of the vocabulary in length – i.e. >10,000 words.

There are two main problems with this type of representation of words – the first is that it is inefficient. Each word is represented by a 10,000 word plus vector, which for neural networks means a heck of a lot of associated weights between the input layer and the first hidden layer (generally millions).  The second is that it loses all contextual meaning of the words.  We need a way of representing words that is both efficient and yet retains some of the original meaning of the word and its relation to other words. Enter word embedding and Word2Vec.

Word embedding and Word2Vec

Word embedding involves creating better vector representations of words – both in terms of efficiency and maintaining meaning. For instance, a word embedding layer may involve creating a 10,000 x 300 sized matrix, whereby we look up a 300 length vector representation for each of the 10,000 words in our vocabulary.  This new, 300 length vector is obviously a lot more efficient than a 10,000 length one-hot representation.  But we also need to create this 300 length vector in such a way as to preserve some semblance of the meaning of the word.

Word2Vec does this by taking the context of words surrounding the target word.  So, if we have a context window of 2, the context of the target word “sat” in the sentence “the cat sat on the mat” is the list of words [“the”, “cat”, “on”, “the”]. In Word2Vec, the meaning of a word is roughly translatable to context – and it basically works. Target words which share similar common context words often have similar meanings. The way Word2Vec trains the embedding vectors is via a neural network of sorts – the neural network, given a one-hot representation of a target word, tries to predict the most likely context words.  For an introduction to neural networks, see this tutorial.

Here’s a naive way of performing the neural network training using an output softmax layer:

gensim word embedding softmax trainer

A word embedding softmax trainer

In this network, the 300 node hidden layer weights are training by trying to predict (via a softmax output layer) genuine, high probability context words.  Once the training is complete, the output softmax layer is discarded and what is of real value is the 10,000 x 300 weight matrix connecting the input to the hidden layer. This is our embedding matrix, and we can look up any member of our 10,000-word vocabulary and get it’s 300 length vector representation.

It turns out that this softmax way of training the embedding layer is very inefficient, due to the millions of weights that need to be involved in updating and calculating the softmax values. Therefore, a concept called negative sampling is used in the real Word2Vec, which involves training the layer with real context words and a few negative samples which are chosen randomly from outside the context.  For more details on this, see my Word2Vec Keras tutorial.

Now we understand what Word2Vec training of embedding layers involves, let’s talk about the gensim Word2Vec module.

A gensim Word2Vec tutorial

gensim Word2Vec - nearest words

Nearest words by cosine similarity

This section will give a brief introduction to the gensim Word2Vec module.  The gensim library is an open-source Python library that specializes in vector space and topic modeling.  It can be made very fast with the use of the Cython Python model, which allows C code to be run inside the Python environment. This is good for our purposes, as the original Google Word2Vec implementation is written in C, and gensim has a wrapper for this code, which will be explained below.

For this tutorial, we are going to use the text8 corpus sourced from here for our text data. All the code for this tutorial can be found on this site’s Github repository.

First off, we need to download the text8.zip file (if required) and extract it:

url = 'http://mattmahoney.net/dc/'
filename = maybe_download('text8.zip', url, 31344016)
root_path = "C:\\Users\Andy\PycharmProjects\\adventures-in-ml-code\\"
if not os.path.exists((root_path + filename).strip('.zip')):
    zipfile.ZipFile(root_path+filename).extractall()

This is all fairly straightforward Python file handling, downloading and zip file manipulation, so I won’t go into it here.

The next step that is required is to create an iterator for gensim to extract its data from.  We can cheat a little bit here and use a supplied iterator that gensim provides for the text8 corpus:

sentences = word2vec.Text8Corpus((root_path + filename).strip('.zip'))

The required input to the gensim Word2Vec module is an iterator object, which sequentially supplies sentences from which gensim will train the embedding layer. The line above shows the supplied gensim iterator for the text8 corpus, but below shows another generic form that could be used in its place for a different data set (not actually implemented in the code for this tutorial), where the data set also contains multiple files:

class MySentences(object):
    def __init__(self, dirname):
        self.dirname = dirname
 
    def __iter__(self):
        for fname in os.listdir(self.dirname):
            for line in open(os.path.join(self.dirname, fname)):
                yield line.split()

This capability of gensim is great, as it means you can setup iterators which cycle through the data without having to load the entire data set into memory.  This is vital, as some text data sets are huge  i.e. tens of GB.

After we’ve setup the iterator object, it is dead simple to train our word vectors:

logging.basicConfig(format='%(asctime)s : %(levelname)s : %(message)s', level=logging.INFO)
model = word2vec.Word2Vec(sentences, iter=10, min_count=10, size=300, workers=4)

The first line just lets us see the INFO logging that gensim provides as it trains. The second line will execute the training on the provided sentences iterator.  The first optional argument iter specifies how many times the training code will run through the data set to train the neural network (kind of like the number of training epochs). The gensim training code will actually run through all the data iter+1 time, as the first pass involves collecting all the unique words, creating dictionaries etc.  The next argument, min_count, specifies the minimum amount of times that the word has to appear in the corpus before it is included in the vocabulary – this allows us to easily eliminate rare words and reduce our vocabulary size.  The third argument is the size of the resultant word vector – in this case, we set it to 300. In other words, each word in our vocabulary, after training, will be represented by a 300 length word vector. Finally, if we are using Cython, we can specify how many parallel workers we would like to work on the data – this will speed up the training process. There are lots of other arguments, but these are the main ones to consider.

Let’s examine our results and see what else gensim can do.

# get the word vector of "the"
print(model.wv['the'])

This returns a 300 length numpy vector – as you can see, each word vector can be retrieved from the model via a dictionary key i.e. a word within our vocabulary.

# get the most common words
print(model.wv.index2word[0], model.wv.index2word[1], model.wv.index2word[2])

The word vectors are also arranged within the wv object with indexes – the lowest index (i.e. 0) represents the most common word, the highest (i.e. the length of the vocabulary minus 1) the least common word.  The above code returns: “the of and”, which is unsurprising, as these are very common words.

# get the least common words
vocab_size = len(model.wv.vocab)
print(model.wv.index2word[vocab_size - 1], model.wv.index2word[vocab_size - 2], model.wv.index2word[vocab_size - 3])

The discovered vocabulary is found in model.wv.vocab – by taking the length of this dictionary, we can determine the vocabulary size (in this case, it is 47,134 elements long). The code above returns: “zanetti markschies absentia” – rare words indeed.

# find the index of the 2nd most common word ("of")
print('Index of "of" is: {}'.format(model.wv.vocab['of'].index))

We can also go the other way i.e. retrieve the index of a word we supply.  In this case, we are getting the index of the second most common word “of”. As expected the above code returns “Index of “of” is: 1″.

# some similarity fun
print(model.wv.similarity('woman', 'man'), model.wv.similarity('man', 'elephant'))

We can also easily extract similarity measures between word vectors (gensim uses cosine similarity). The above code returns “0.6599 0.2955”, which again makes sense given the context such words are generally used in.

# what doesn't fit?
print(model.wv.doesnt_match("green blue red zebra".split()))

This fun function determines which word doesn’t match the context of the others – in this case, “zebra” is returned.

We also want to able to convert our data set from a list of words to a list of integer indexes, based on the vocabulary developed by gensim.  To do so, we can use the following code:

# convert the input data into a list of integer indexes aligning with the wv indexes
# Read the data into a list of strings.
def read_data(filename):
    """Extract the first file enclosed in a zip file as a list of words."""
    with zipfile.ZipFile(filename) as f:
        data = f.read(f.namelist()[0]).split()
    return data

def convert_data_to_index(string_data, wv):
    index_data = []
    for word in string_data:
        if word in wv:
            index_data.append(wv.vocab[word].index)
    return index_data

str_data = read_data(root_path + filename)
index_data = convert_data_to_index(str_data, model.wv)
print(str_data[:4], index_data[:4])

The first function, read_data simply extracts the zip file data and returns a list of strings in the same order as our original text data set.  The second function loops through each word in the data set, determines if it is in the vocabulary*, and if so, adds the matching integer index to a list.  The code above returns: “[‘anarchism’, ‘originated’, ‘as’, ‘a’] [5237, 3080, 11, 5]”.

* Remember that some words in the data set will be missing from the vocabulary if they are very rare in the corpus.

We can also save and reload our trained word vectors/embeddings by the following simple code:

# save and reload the model
model.save(root_path + "mymodel")
model = gensim.models.Word2Vec.load(root_path + "mymodel")

Finally, I’ll show you how we can extract the embedding weights from the gensim Word2Vec embedding layer and store it in a numpy array, ready for use in TensorFlow and Keras.

# convert the wv word vectors into a numpy matrix that is suitable for insertion
# into our TensorFlow and Keras models
embedding_matrix = np.zeros((len(model.wv.vocab), vector_dim))
for i in range(len(model.wv.vocab)):
    embedding_vector = model.wv[model.wv.index2word[i]]
    if embedding_vector is not None:
        embedding_matrix[i] = embedding_vector

In this case, we first create an appropriately sized numpy zeros array.  Then we loop through each word in the vocabulary, grabbing the word vector associated with that word by using the wv dictionary.  We then add the word vector into our numpy array.

So there we have it – gensim Word2Vec is a great little library that can execute the word embedding process very quickly, and also has a host of other useful functionality.

Now I will show how you can use pre-trained gensim embedding layers in our TensorFlow and Keras models.

Using gensim Word2Vec embeddings in TensorFlow

For this application, we’ll setup a dummy TensorFlow network with an embedding layer and measure the similarity between some words.  If you’re not up to speed with TensorFlow, I suggest you check out my TensorFlow tutorial or this online course Data Science: Practical Deep Learning in Theano + TensorFlow.  Also, it’s probably a good idea to check out my Word2Vec TensorFlow tutorial to understand how the embedding layer works.

The first step is to select some random words from the top 100 most common words in our text data set.

valid_size = 16  # Random set of words to evaluate similarity on.
valid_window = 100  # Only pick dev samples in the head of the distribution.
valid_examples = np.random.choice(valid_window, valid_size, replace=False)
valid_dataset = tf.constant(valid_examples, dtype=tf.int32)

The last line saves the array of 16 random words into a TensorFlow constant valid_dataset.

For the next step, we take the embedding matrix from our gensim Word2Vec simulation and “implant it” into a TensorFlow variable which we use as our embedding layer.

# embedding layer weights are frozen to avoid updating embeddings while training
saved_embeddings = tf.constant(embedding_matrix)
embedding = tf.Variable(initial_value=saved_embeddings, trainable=False)

Note that in the second line above for the TensorFlow variable declaration, I’ve set the trainable argument to False. If we were using this layer in, say, training a recurrent neural network, if we didn’t set this argument to False our embedding layer would be trained in TensorFlow with negative performance impacts. It’s probably not an overall bad strategy, i.e. starting with a gensim embedding matrix and then training further using something like a recurrent NN, but if you want your embedding layer fixed for performance reasons, you need to set trainable to False.

The next chunk of code calculates the similarity between each of the word vectors using the cosine similarity measure. It is explained more fully in my Word2Vec TensorFlow tutorial, but basically it calculates the norm of all the embedding vectors, then performs a dot product between the validation words and all other word vectors.

# create the cosine similarity operations
norm = tf.sqrt(tf.reduce_sum(tf.square(embedding), 1, keep_dims=True))
normalized_embeddings = embedding / norm
valid_embeddings = tf.nn.embedding_lookup(
      normalized_embeddings, valid_dataset)
similarity = tf.matmul(valid_embeddings, normalized_embeddings, transpose_b=True)

Now we can run our TensorFlow session and sort the eight words which are closest to our validation example words.  Again, this code is explained in more detail in the previously mentioned tutorial.

# Add variable initializer.
init = tf.global_variables_initializer()

with tf.Session() as sess:
    sess.run(init)
    # call our similarity operation
    sim = similarity.eval()
    # run through each valid example, finding closest words
    for i in range(valid_size):
        valid_word = wv.index2word[i]
        top_k = 8  # number of nearest neighbors
        nearest = (-sim[i, :]).argsort()[1:top_k + 1]
        log_str = 'Nearest to %s:' % valid_word
            for k in range(top_k):
            close_word = wv.index2word[nearest[k]]
            log_str = '%s %s,' % (log_str, close_word)
        print(log_str)

This code will produce lines like:

Nearest to two: three, five, zero, four, six, one, seven, eight

As you can see, our Word2Vec embeddings produced by gensim have the expected results – in this example, we have number words being grouped together in similarity which makes sense.

Next up, let’s see how we can use the gensim Word2Vec embeddings in Keras.

Using gensim Word2Vec embeddings in Keras

We can perform similar steps with a Keras model. In this case, following the example code previously shown in the Keras Word2Vec tutorial, our model takes two single word samples as input and finds the similarity between them.  The top 8 closest words loop is therefore slightly different than the previous example:

valid_size = 16  # Random set of words to evaluate similarity on.
valid_window = 100  # Only pick dev samples in the head of the distribution.
valid_examples = np.random.choice(valid_window, valid_size, replace=False)
# input words - in this case we do sample by sample evaluations of the similarity
valid_word = Input((1,), dtype='int32')
other_word = Input((1,), dtype='int32')
# setup the embedding layer
embeddings = Embedding(input_dim=embedding_matrix.shape[0], output_dim=embedding_matrix.shape[1],
                      weights=[embedding_matrix])
embedded_a = embeddings(valid_word)
embedded_b = embeddings(other_word)
similarity = merge([embedded_a, embedded_b], mode='cos', dot_axes=2)
# create the Keras model
k_model = Model(input=[valid_word, other_word], output=similarity)

def get_sim(valid_word_idx, vocab_size):
    sim = np.zeros((vocab_size,))
    in_arr1 = np.zeros((1,))
        in_arr2 = np.zeros((1,))
    in_arr1[0,] = valid_word_idx
    for i in range(vocab_size):
        in_arr2[0,] = i
        out = k_model.predict_on_batch([in_arr1, in_arr2])
        sim[i] = out
    return sim

# now run the model and get the closest words to the valid examples
for i in range(valid_size):
    valid_word = wv.index2word[valid_examples[i]]
    top_k = 8  # number of nearest neighbors
    sim = get_sim(valid_examples[i], len(wv.vocab))
    nearest = (-sim).argsort()[1:top_k + 1]
    log_str = 'Nearest to %s:' % valid_word
    for k in range(top_k):
        close_word = wv.index2word[nearest[k]]
        log_str = '%s %s,' % (log_str, close_word)
    print(log_str)

As you can see when I setup the embeddings layer (using Keras’ dedicated Embedding() layer), all we need to do is specify the input and output dimensions (vocabulary size and embedding vector length, respectively) and then assign the gensim embedding_matrix to the weights argument. All the remaining logic is a copy from the Keras Word2Vec tutorial, so check that post out for more details.

The code produces lines like:

Nearest to when: unless, if, where, whenever, then, before, once, finally

Here we can see that subordinating conjunction word types have been grouped together – which is a good, expected result.

So that wraps up the tutorial – in this post, I’ve shown you how to use gensim to create Word2Vec word embeddings in a quick and efficient fashion.  I then gave an overview of how to “upload” these learned embeddings into TensorFlow and Keras.  I hope it has been helpful.

 


Recommended online course: If you are more of a video course learner, check out this inexpensive Udemy course: Natural Language Processing with Deep Learning in Python


 

506 thoughts on “Python gensim Word2Vec tutorial with TensorFlow and Keras”

  1. Hey Andy! Great article! thanks for publishing. Btw why you are initializing:

    `embedding_matrix = np.zeros((len(model.wv.vocab) + 1, vector_dim))` and not
    `embedding_matrix = np.zeros((len(model.wv.vocab), vector_dim))`. It doesnt seem there is a reason to add one more row.

  2. Hey Andy, incredibly clear and concise tutorial. Was able to follow along without even running code to visual results.

    I had some free time though and gave it a go to play around a bit.
    I can’t seem to get any results though when executing the model built with TensorFlow.

    It’s an error that name ‘wv’ is not defined. It’s picking it up after that first for statement during tf.Session().

    Any idea what’s wrong?
    Thanks.

    1. Hi Mark, thanks very much for your kind comments. Unfortunately I am unable to replicate this error, so I can’t think of why this may be occurring

  3. Hi Andy!.
    I saw your good tutorial.
    I got one problem.

    embedding_matrix = np.zeros((len(model.wv.vocab), vector_dim))

    what does vector_dim mean?

    I don’t find about vector_dim Explanation.

    Can you help me?

    Thanks.

    1. Hey, I ran into this problem as well at first. If you look back to when the model was created an option size=300 was added in :
      model = word2vec.Word2Vec(sentences, iter=10, min_count=10, size=300, workers=4)
      This 300 is the effectively the size of your model so when embedding the words your vector_dim has to be equal to 300 as well.

  4. Hi there would you mind stating which blog platform you’re working with?
    I’m planning to start my own blog in the near future but I’m
    having a hard time selecting between BlogEngine/Wordpress/B2evolution and Drupal.
    The reason I ask is because your design seems different then most blogs and
    I’m looking for something unique. P.S Apologies for getting off-topic but
    I had to ask!

  5. Greetings from Los angeles! I’m bored to death at work so I decided to check
    out your website on my iphone during lunch break.
    I love the knowledge you present here and can’t wait to take a
    look when I get home. I’m shocked at how fast your blog loaded on my cell phone ..
    I’m not even using WIFI, just 3G .. Anyways, superb blog!

    Here is my homepage; weed doctor

  6. Hi there just wanted to give you a quick heads up.
    The text in your post seem to be running off the screen in Chrome.
    I’m not sure if this is a format issue or something to do with internet browser compatibility but I thought I’d post to
    let you know. The design look great though!
    Hope you get the issue resolved soon. Thanks

    Feel free to visit my web site :: r00tsandwings.com

  7. Greate post. Keep writing such kind of information on your
    blog. Im really impressed by your site.[X-N-E-W-L-I-N-S-P-I-N-X]Hello there, You’ve done an excellent job.

    I will definitely digg it and in my opinion recommend to my friends.

    I’m sure they’ll be benefited from this site.

    Here is my site :: drug addiction

  8. Wow, awesome blog layout! How long have you been running a blog for?
    you make blogging look easy. The full look of your site is magnificent, as neatly as
    the content![X-N-E-W-L-I-N-S-P-I-N-X]I just couldn’t
    go away your website before suggesting that I extremely enjoyed the
    usual info a person provide in your guests? Is going to
    be again incessantly in order to investigate cross-check new posts.

    my page … yeast infection

  9. Oh my goodness! Impressive article dude! Many thanks,
    However I am experiencing problems with your RSS. I don’t
    understand the reason why I cannot subscribe to it.
    Is there anybody else getting identical RSS issues? Anyone
    who knows the answer can you kindly respond?
    Thanx!!

    Feel free to visit my homepage kids travel

  10. I precisely wished to say thanks all over again. I’m
    not certain the things I could possibly have created without
    the entire tactics provided by you relating to my question.
    It seemed to be the frustrating difficulty in my position, nevertheless being
    able to view a specialized tactic you handled it forced me to weep over fulfillment.
    I’m happier for the work and expect you are aware of an amazing job you have been getting into instructing many others with the aid of your web site.
    Most likely you’ve never got to know all of
    us.

    Also visit my page stop smoking

  11. I hardly comment, however after reading some of the remarks here Python gensim Word2Vec tutorial
    with TensorFlow and Keras – Adventures in Machine Learning.
    I actually do have 2 questions for you if it’s allright.
    Is it just me or do a few of the remarks appear as if they are written by brain dead folks?
    😛 And, if you are writing at other online social sites,
    I would like to keep up with everything fresh you have to post.
    Could you post a list of all of your social community sites like your twitter feed, Facebook page
    or linkedin profile?

    Stop by my blog: try hemp seeds

  12. Hello There. I discovered your blog the usage of msn. This is an extremely neatly written article.
    I’ll make sure to bookmark it and return to learn more of your
    helpful info. Thank you for the post. I will definitely comeback.

    Here is my page men skin care

  13. I truly love your site.. Excellent colors & theme.
    Did you develop this amazing site yourself? Please reply back as I?m wanting to create my own personal blog and would like to find out where you got this from or exactly what
    the theme is named. Many thanks!

    Have a look at my web-site :: hemp seed sprouts

  14. Unquestionably believe that which you stated. Your favorite reason seemed to be on the net the simplest thing to be aware of.
    I say to you, I definitely get annoyed while people consider worries that they just do not
    know about. You managed to hit the nail upon the top and also
    defined out the whole thing without having side-effects , people
    could take a signal. Will likely be back to get more. Thanks

    Also visit my web blog; role-play videos

  15. Unquestionably believe that which you stated. Your favorite justification seemed to be on the net the simplest
    thing to be aware of. I say to you, I definitely get annoyed while people think about worries that they just don’t know about.
    You managed to hit the nail upon the top and also
    defined out the whole thing without having side effect , people could take a signal.
    Will likely be back to get more. Thanks

    Also visit my webpage: travel bag

  16. I really like your blog.. very nice colors & theme. Did
    you create this website yourself or did you hire someone to do it for you?
    Plz answer back as I’m looking to create my own blog and would like
    to find out where u got this from. appreciate it

    Also visit my site :: dry itchy skin

  17. Definitely believe that which you said. Your favourite reason appeared to
    be at the internet the simplest thing to be mindful
    of. I say to you, I certainly get irked while other folks think about worries that they plainly do not know about.
    You controlled to hit the nail upon the highest as well as defined out the whole
    thing without having side effect , folks could take a signal.

    Will likely be back to get more. Thank you

    Also visit my site – male skin care

  18. Thanks for your own efforts on this web site.
    My niece enjoys going through internet research and it’s obvious why.
    We know all relating to the dynamic form you
    give reliable things via your web blog and as
    well welcome participation from the others on that point while
    our favorite princess has always been learning a great deal.
    Enjoy the remaining portion of the year. Your carrying out
    a fabulous job.[X-N-E-W-L-I-N-S-P-I-N-X]I’m really inspired along with your writing abilities
    as neatly as with the structure for your blog.

    Is this a paid theme or did you modify it yourself?

    Either way stay up the excellent high quality writing, it
    is uncommon to peer a nice weblog like this one these days.

    My website … flaxseed oil

  19. This is very interesting, You are a very professional blogger.
    I’ve joined your feed and look ahead to in quest of more of your magnificent
    post. Additionally, I have shared your web site in my social networks!

    Also visit my web site … omega 3 source (mhes.tyc.edu.tw)

  20. I’m amazed, I have to admit. Seldom do I encounter a blog
    that’s both educative and entertaining, and let me tell you,
    you’ve hit the nail on the head. The problem is something which not enough
    men and women are speaking intelligently about.

    I am very happy I found this in my search for something concerning this.

    Also visit my blog post – term treatment

  21. I have been exploring for a little for any high-quality
    articles or blog posts in this kind of space . Exploring in Yahoo I eventually stumbled
    upon this site. Reading this information So i am happy to express that
    I’ve a very excellent uncanny feeling I came upon just what I needed.
    I most unquestionably will make certain to do not forget this web
    site and give it a glance on a constant basis.

    my page: quit smoking remedies

  22. Its such as you learn my thoughts! You seem to understand so
    much approximately this, such as you wrote the guide
    in it or something. I believe that you simply could do with some percent to pressure the message home a little bit,
    however instead of that, that is wonderful
    blog. A great read. I’ll definitely be back.

    Also visit my web blog :: seeds require

  23. Hello there, just became aware of your blog through Google, and
    found that it’s really informative. I am gonna watch out for brussels.
    I’ll be grateful if you continue this in future. A lot of people will be benefited from
    your writing. Cheers!

    Also visit my blog; lucid dreaming

  24. When I initially commented I seem to have clicked the
    -Notify me when new comments are added- checkbox and from now on every time a comment is added I recieve four emails with the exact same comment.

    Perhaps there is a means you are able to remove me from that service?
    Thanks!

    my page; whole foods

  25. We’re a bunch of volunteers and starting a brand new scheme in our community.
    Your web site offered us with helpful information to work on.
    You have performed a formidable task and our whole group will probably be
    thankful to you.

    Here is my homepage – stop acne

  26. Have you ever thought about creating an e-book or guest authoring on other sites?
    I have a blog based on the same subjects you discuss and
    would really like to have you share some stories/information. I know my readers would enjoy your work.
    If you’re even remotely interested, feel free to send me an e mail.

    Feel free to visit my web page; care routine

  27. I’ve been surfing online greater than 3 hours nowadays, yet
    I never found any interesting article like yours.
    It is lovely price enough for me. Personally, if all
    website owners and bloggers made excellent content as you probably did,
    the internet might be much more useful than ever before.

    My webpage: Ophelia

  28. Hi there would you mind stating which blog platform you’re using?
    I’m going to start my own blog soon but I’m having a hard time deciding between BlogEngine/Wordpress/B2evolution and
    Drupal. The reason I ask is because your layout seems different then most
    blogs and I’m looking for something completely unique.
    P.S Apologies for getting off-topic but I had to ask!

    Also visit my blog post :: oral sex

  29. I loved as much as you’ll receive performed proper here.
    The sketch is tasteful, your authored subject matter stylish.
    however, you command get bought an impatience over
    that you wish be handing over the following. unwell indisputably come
    further before once more as exactly the same nearly a lot regularly inside of case you defend
    this hike.

    Here is my blog :: substance abuse treatment

  30. Pretty nice post. I just stumbled upon your blog
    and wanted to say that I have really enjoyed browsing your blog posts.
    After all I will be subscribing to your rss feed and I hope you
    write again very soon!

    Take a look at my site :: top ten skin

  31. It is appropriate time to make some plans for the long run and it is time to be happy.
    I’ve learn this submit and if I may I want to suggest you few interesting issues or suggestions.

    Maybe you could write next articles referring to this article.
    I desire to learn more things approximately it!

    Feel free to surf to my page – improve sex life

  32. You actually make it seem so easy with your presentation but I find this matter to
    be really something that I think I would never understand.
    It seems too complicated and very broad sex tips for men me.
    I’m looking forward for your next post, I’ll try to get the hang of it!

  33. Greetings, I do think your website might be having browser compatibility issues.
    Whenever I look at your website in Safari,
    it looks fine but when opening in Internet Explorer, it’s got some overlapping issues.
    I just wanted to provide you with a quick heads up! Apart from that, great website!

    Here is my blog: http://www.costidell.com

  34. Hello! I realize this is somewhat off-topic but I needed to ask.
    Does running a well-established blog such as yours require a lot of work?
    I am brand new to writing a blog however I do write in my diary on a daily basis.
    I’d like to start a blog so I can share my personal experience and
    views online. Please let me know if you have any ideas or tips for new aspiring
    blog owners. Thankyou!

    Feel free to surf to my homepage quitting smoking

  35. Do you mind if I quote a couple of your posts as long
    as I provide credit and sources back to your website?
    My blog site is in the exact same niche as yours and my visitors
    would certainly benefit from some of the information you present here.
    Please let me know if this okay with you.

    Many thanks!

    My web blog psychedelic drug

  36. This is the right webpage for anybody who wishes to
    understand this topic. You realize a whole lot its almost tough to argue with you (not that I really would want to?HaHa).

    You definitely put a brand new spin on a subject that’s been written about for a
    long time. Great stuff, just great!

    Have a look at my web blog; illegal drugs

  37. I am extremely inspired with your writing abilities as well as with the structure in your
    weblog. Is this a paid topic or did you customize it yourself?
    Anyway keep up the excellent high quality writing, it’s
    rare to peer a great weblog like this one today.

    Also visit my site :: Marcy

  38. I just could not go away your web site prior to suggesting that I extremely enjoyed the standard
    information a person provide in your visitors? Is going
    to be back often in order to investigate cross-check new posts.

    Feel free to surf to my page … term treatment

  39. Hello I am so glad I found your weblog, I really
    found you by mistake, while I was looking on Google for something else, Anyways I am
    here now and would just like to say thanks a lot for a
    fantastic post and a all round exciting blog (I also love the theme/design), I don’t have time to
    go through it all at the moment but I have bookmarked
    it and also included your RSS feeds, so when I have time I will be
    back to read much more, Please do keep up the great work.

    Here is my web site – http://39.98.110.214/

  40. Thank you for the sensible critique. Me and my neighbor were just preparing to do
    some research on this. We got a grab a book from our area library but I think
    I learned more from this post. I’m very glad to
    see such great information being shared freely out there.

    Here is my web-site cannabis license

  41. It is appropriate time to make some plans for the future and it is time to be happy.
    I’ve read this post and if I could I desire to suggest you some interesting things or tips.

    Perhaps you could write next articles referring to this article.

    I desire to read more things about it!

    My page: natural skin

  42. Thanks so much for providing individuals with such a memorable chance to read in detail from
    this blog. It really is so pleasing plus packed with amusement
    for me personally and my office fellow workers to visit the blog at least thrice in 7 days
    to find out the newest stuff you have got. And indeed, I’m so certainly contented with your cool
    concepts you serve. Certain two ideas in this post are basically the
    best we have had.

    Stop by my web blog icon beauty products

  43. Hi there, I do think your web site could possibly be having browser compatibility problems.
    Whenever I take a look at your site in Safari, it looks fine however, if opening
    in IE, it has some overlapping issues. I just wanted to give you a
    quick heads up! Apart from that, wonderful blog!

    my web site … weight watchers

  44. The next time I read a blog, Hopefully it does not fail me as much as this one.
    After all, Yes, it was my choice to read through,
    but I truly believed you would probably have something useful to talk about.
    All I hear is a bunch of whining about something
    you could possibly fix if you weren’t too busy searching for
    attention.

    Also visit my web site: 23.95.102.216

  45. Hello just wanted to give you a quick heads up. The text in your post seem to be running off the screen in Firefox.
    I’m not sure if this is a format issue or something to do with internet browser compatibility
    but I thought I’d post to let you know. The style and design look great though!
    Hope you get the issue resolved soon. Many thanks

    my blog weight loss story

  46. I’ve been browsing on-line greater than three hours nowadays, but I by no means discovered any attention-grabbing article
    like yours. It’s lovely value sufficient for me. In my
    view, if all website owners and bloggers made good content material
    as you probably did, the internet will be much more useful than ever before.

    My page; http://www.comptine.biz

  47. Good day very cool blog!! Man .. Excellent .. Wonderful ..

    I will bookmark your web site and take the feeds additionally…I’m satisfied to seek out numerous
    useful info here within the submit, we’d like develop more strategies in this regard,
    thanks for sharing.

    Feel free to surf to my web site … increase muscle mass

  48. Very great post. I simply stumbled upon your weblog and wanted to mention that
    I have truly enjoyed surfing around your blog posts. After
    all I’ll be subscribing to your rss feed and I hope you write
    again soon!

    Feel free to visit my blog :: drug use

  49. Oh my goodness! Amazing article dude! Thank you, However I am going through difficulties with your RSS.
    I don?t know why I am unable to subscribe
    to it. Is there anyone else getting similar RSS problems?
    Anyone who knows the solution can you kindly respond? Thanx!!

    Here is my page: travel plans

  50. I was just looking for this info for a while. After 6 hours
    of continuous Googleing, finally I got it in your web site.
    I wonder what’s the lack of Google strategy that don’t rank this type of informative web sites in top of
    the list. Usually the top web sites are full of garbage.

    Also visit my web site :: quit smoking

  51. I’m impressed, I have to admit. Rarely do I come across a blog that’s both educative and
    interesting, and let me tell you, you have hit the nail on the head.
    The issue is something that not enough people are speaking intelligently about.

    I’m very happy I found this in my search for
    something relating to this.

    Feel free to visit my homepage; quick hemorrhoid pain

  52. Definitely believe that which you said. Your favorite justification appeared to be on the internet the simplest thing to be aware of.

    I say to you, I certainly get annoyed while people consider worries
    that they plainly do not know about. You managed to hit the
    nail upon the top and also defined out the whole thing
    without having side effect , people could take a signal. Will probably be back to get more.
    Thanks

    Here is my web-site; hemp farming

  53. I was just seeking this info for a while.
    After 6 hours of continuous Googleing, finally I got it in your
    site. I wonder what is the lack of Google strategy that do not rank this type of informative websites in top of
    the list. Normally the top sites are full of garbage.

    Also visit my web site; skin intact

  54. Hi there, simply became alert to your weblog thru
    Google, and found that it is truly informative. I am gonna be careful for brussels.
    I’ll appreciate should you continue this in future. Numerous folks will probably
    be benefited out of your writing. Cheers!

    Feel free to visit my web blog :: http://www.stwx.net

  55. I truly wanted to jot down a brief note to say thanks to you for all the wonderful suggestions
    you are giving at this site. My considerable internet investigation has finally been compensated with beneficial know-how to go over with my partners.

    I would admit that we site visitors actually are very endowed to live in a remarkable network with many brilliant people with helpful plans.
    I feel truly lucky to have encountered your webpage and look forward to some more cool moments reading
    here. Thanks again for everything.

    my website … top ten skin

  56. What i don’t understood is in truth how you’re now
    not actually a lot more smartly-favored than you might be now.
    You’re so intelligent. You recognize therefore considerably
    with regards to this matter, produced me in my view imagine it from
    a lot of varied angles. Its like women and men don’t seem to be interested except
    it is something to accomplish with Woman gaga!
    Your own stuffs nice. Always care for it up!

    Feel free to visit my web blog meteoritegarden.com

  57. Someone necessarily help to make significantly posts I’d state.

    That is the first time I frequented your web page and so far?

    I surprised with the analysis you made to create this actual post extraordinary.
    Excellent process!

    Also visit my webpage asmr video

  58. Thanks so much for giving everyone remarkably splendid chance
    to read from this blog. It is always so useful plus packed with a lot of
    fun for me personally and my office fellow workers to visit the blog at the least thrice a week to learn the fresh
    tips you will have. And indeed, we’re certainly astounded concerning the very good
    guidelines served by you. Certain 2 tips in this article are rather the most suitable we
    have ever had.

    My site – testosterone booster

  59. Its such as you read my mind! You appear to grasp a lot approximately this,
    like you wrote the e-book in it or something. I think that
    you can do with a few p.c. to force the message home a little bit, however other than that, this is wonderful blog.
    An excellent read. I’ll certainly be back.

    Also visit my homepage :: growing weed

  60. I’m not sure exactly why but this web site is loading incredibly slow for me.
    Is anyone else having this problem or is it a problem on my end?
    I’ll check back later on and see if the problem still exists.

    Also visit my web site … Antony

  61. My husband and i were now joyful when Jordan managed to finish off his studies through your ideas he gained out
    of your web page. It’s not at all simplistic to simply happen to be offering information and
    facts which the others might have been trying to sell. Therefore we do understand we’ve got the
    blog owner to give thanks to because of that. The illustrations you have made, the simple blog menu, the friendships your site
    help promote – it’s many overwhelming, and it’s making our son and the family feel that that topic is entertaining, which is certainly extremely essential.
    Thanks for the whole lot!

    Here is my homepage; 23.95.102.216

  62. Thank you for the sensible critique. Me & my neighbor were just preparing to do
    some research about this. We got a grab
    a book from our local library but I think I learned more clear from this post.
    I’m very glad to see such wonderful info being shared freely out there.

    my blog :: growing indoors

  63. I beloved up to you will obtain carried out right
    here. The comic strip is tasteful, your authored material stylish.
    nonetheless, you command get got an edginess over that you would like be handing over the following.
    unwell for sure come more beforehand once more since precisely the same
    just about very often within case you shield this increase.

    Also visit my homepage – suggest skincare

  64. I loved as much as you’ll receive carried out right here. The sketch is attractive,
    your authored material stylish. nonetheless,
    you command get bought an impatience over that you wish be delivering the following.
    unwell unquestionably come further formerly again since exactly
    the same nearly very often inside case you shield this hike.

    Feel free to visit my web site … low carb low calorie diet

  65. Hi there, just became aware of your blog through Google, and found
    that it’s really informative. I am gonna watch out for brussels.
    I will be grateful if you continue this in future.
    Many people will be benefited from your writing. Cheers!

    Also visit my homepage :: 23.95.102.216

  66. Aw, this was an extremely good post. Taking the time and actual
    effort to produce a top notch article… but what can I
    say… I hesitate a whole lot and don’t seem to get anything done.

  67. I wanted to write a brief message to be able to express gratitude
    to you for these superb guidelines you are giving
    out on this site. My time intensive internet search has now been compensated with excellent knowledge to exchange
    with my partners. I would point out that we site visitors actually are really endowed to live in a fabulous website with very many perfect individuals with good principles.
    I feel really happy to have come across your entire webpage and
    look forward to many more entertaining moments reading here.
    Thanks a lot again for a lot of things.

    my web-site: focused diets

  68. Undeniably believe that which you said. Your favorite reason seemed to be at the web the easiest thing to take into account
    of. I say to you, I certainly get annoyed at the same time as
    folks think about concerns that they just do not know about.
    You managed to hit the nail upon the highest as smartly as outlined out
    the whole thing without having side effect , other
    folks could take a signal. Will probably be back to get more.
    Thank you

    Also visit my web-site: firming skin

  69. I wanted to post a brief note so as to appreciate you for the superb
    strategies you are giving out here. My time-consuming internet lookup
    has at the end of the day been compensated with reasonable facts
    and strategies to go over with my family. I ‘d state that that many of us
    site visitors actually are truly lucky to dwell in a superb
    network with many brilliant professionals with insightful methods.

    I feel extremely privileged to have encountered
    your entire web site and look forward to some more brilliant minutes reading here.
    Thanks a lot again for all the details.

    Also visit my homepage … weight loss tool

  70. Hello there! Do you know if they make any plugins to assist with SEO?
    I’m trying to get my blog to rank for some
    targeted keywords but I’m not seeing very good results.

    If you know of any please share. Cheers!

    Have a look at my web-site – Jane

  71. I’m impressed, I must say. Rarely do I come across a blog that’s equally educative and engaging, and without a doubt, you’ve
    hit the nail on the head. The issue is something which too
    few men and women are speaking intelligently about.
    I’m very happy I came across this during my search for something
    regarding this.

    My web site pain relief dogs

  72. I like what you guys are up also. Such intelligent work and reporting!

    Keep up the excellent works guys I’ve incorporated you guys to
    my blogroll. I think it will improve the value of my web site :
    ).

    My blog post … aging skin

  73. I comment whenever I especially enjoy a article on a site or if
    I have something to valuable to contribute to
    the conversation. It’s caused by the passion displayed in the article I browsed.
    And on this article Python gensim Word2Vec tutorial with TensorFlow and Keras – Adventures in Machine Learning.
    I was moved enough to post a thought 😛 I actually do have 2 questions for you if you tend
    not to mind. Could it be just me or does it appear like
    some of these remarks appear like written by brain dead visitors?
    😛 And, if you are posting on other online sites, I’d like to
    follow anything new you have to post. Would you list every one of your communal sites like your twitter feed, Facebook page
    or linkedin profile?

    my homepage – facial skin

  74. Good day! I could have sworn I?ve been to this website before
    but after looking at some of the posts I realized it?s new to me.
    Anyways, I?m certainly delighted I discovered it and I?ll be book-marking it and checking back regularly!

    Feel free to visit my web site :: sex diet for men

  75. Thank you for the good writeup. It if truth be told was
    once a entertainment account it. Glance complicated to far introduced agreeable from you!
    However, how can we communicate?

    Feel free to visit my homepage :: Harry

  76. Thank you for your blog post. Thomas and I happen to be saving for a
    new guide on this topic and your blog post has
    made all of us to save our money. Your ideas really responded all our concerns.
    In fact, greater than what we had acknowledged prior to when we ran into your
    excellent blog. I actually no longer have doubts
    including a troubled mind because you have completely attended
    to our own needs here. Thanks

    Check out my blog post :: hemp benefits

  77. Wow, fantastic weblog format! How lengthy have you been running a blog for?
    you make running a blog look easy. The full glance of your
    website is excellent, let alone the content![X-N-E-W-L-I-N-S-P-I-N-X]I
    just could not leave your website prior to suggesting that I extremely enjoyed the standard information an individual provide
    to your guests? Is going to be again incessantly to inspect new posts.

    My page: cleansing skin care

  78. I’m amazed, I have to admit. Seldom do I come across a
    blog that’s equally educative and interesting, and let me tell you, you’ve hit the
    nail on the head. The problem is an issue that too few people are
    speaking intelligently about. I am very happy I stumbled
    across this during my search for something regarding this.

    Look into my blog post: http://www.mhes.tyc.edu.tw

  79. I enjoy you because of all of the effort on this website.

    Gloria really loves working on investigations and it is simple
    to grasp why. All of us hear all of the lively manner you deliver great things through this blog and as well as increase response
    from website visitors about this situation while our own girl is truly starting to learn a lot of things.
    Take pleasure in the remaining portion of the year.

    You’re doing a tremendous job.[X-N-E-W-L-I-N-S-P-I-N-X]I
    am really impressed together with your writing
    abilities as smartly as with the format on your weblog.
    Is that this a paid theme or did you customize it your self?

    Anyway stay up the excellent quality writing, it is rare to
    see a nice blog like this one nowadays.

    Review my page – anti aging skin care treatments

  80. I?m amazed, I must say. Seldom do I come across a blog that?s equally educative and
    entertaining, and without a doubt, you’ve hit the nail on the head.
    The issue is an issue that not enough folks are speaking intelligently about.

    I’m very happy I came across this in my hunt for something relating to
    this.

    Review my web site; weed indoorshave

  81. Right here is the perfect website for everyone who wants to understand this topic.
    You understand so much its almost hard to argue with you (not that I actually will need to…HaHa).
    You certainly put a fresh spin on a subject that has been written about for many years.
    Excellent stuff, just great!

    Here is my website … hemp crop

  82. What you posted made a ton of sense. But, think about this, suppose you typed a catchier title?
    I am not suggesting your information isn’t good., but what if you
    added something to possibly grab a person’s attention? I mean Python gensim Word2Vec tutorial with TensorFlow and Keras –
    Adventures in Machine Learning is a little plain. You ought to glance at Yahoo’s front page and see how they create news headlines to get people to click.
    You might try adding a video or a picture or two to grab people interested about everything’ve written. In my
    opinion, it would make your blog a little livelier.

  83. I just like the helpful info you supply in your articles.
    I will bookmark your weblog and test again here regularly.
    I’m quite certain I will be told many new stuff proper here!
    Good luck for the next!

    My website … Eugenio

  84. I was just seeking this information for some time.
    After six hours of continuous Googleing, finally I got it in your site.
    I wonder what is the lack of Google strategy that don’t rank this kind of informative websites in top of the
    list. Usually the top web sites are full of garbage.

    My page :: sexually submissive

  85. My brother recommended I might like this website. He was totally right.

    This post actually made my day. You cann’t imagine simply how much time I had
    spent for this info! Thanks!

    Look at my blog – try hemp

  86. Hmm it appears like your site ate my first comment (it
    was extremely long) so I guess I’ll just sum it up what I had written and say, I’m thoroughly enjoying your blog.
    I too am an aspiring blog blogger but I’m still new to everything.
    Do you have any points for rookie blog writers?
    I’d genuinely appreciate it.

    Feel free to visit my web-site :: personal cannabis seeds

  87. Howdy! This is kind of off topic but I need some help from an established blog.
    Is it tough to set up your own blog? I’m not very techincal but
    I can figure things out pretty fast. I’m thinking about making my own but
    I’m not sure where to begin. Do you have any tips or suggestions?

    Appreciate it

    Also visit my page – small seeds

  88. hi!,I really like your writing so so much! proportion we keep up a correspondence more approximately your
    article on AOL? I require a specialist in this area to unravel my problem.
    Maybe that’s you! Having a look ahead to peer you.

    Also visit my homepage: favourite asmr

  89. Wonderful items from you, man. I have take note your stuff prior to
    and you’re just too great. I actually like what you’ve acquired here, really like
    what you are saying and the best skin way during which you are saying it.
    You are making it enjoyable and you continue to take care of to stay it smart.
    I can’t wait to learn far more from you. That is really a terrific
    site.

  90. I really wanted to type a quick message so as to express gratitude to you for some of the awesome tips and tricks you are showing on this website.

    My considerable internet research has now been honored with extremely
    good points to write about with my pals. I ‘d admit that we site visitors are quite lucky to live in a superb
    site with many marvellous individuals with insightful principles.
    I feel extremely lucky to have encountered your web pages and look forward
    to so many more amazing times reading here. Thanks once more
    for a lot of things.

    Feel free to surf to my website seeds require long

  91. Can I just say what a relief to discover someone who really
    knows what they are talking about on the internet.
    You actually realize how to bring an issue to light and make it important.
    A lot more people ought to check this out and understand this side of
    the story. It’s surprising you’re not more popular because you definitely
    possess the gift.

    Here is my homepage: http://www.fles.hlc.edu.tw/

  92. Oh my goodness! Amazing article dude! Thank you, However I am
    experiencing troubles with your RSS. I don’t know
    the reason why I am unable to subscribe to it. Is there anyone else getting identical RSS issues?
    Anybody who knows the solution will you kindly respond? Thanks!!

    Feel free to surf to my blog: 23.95.102.216

  93. Nice post. I was checking continuously this blog and I am impressed!
    Extremely helpful info specifically the last part 🙂 I care for such information much.
    I was seeking this particular information for a very
    long time. Thank you and good luck.

    Also visit my blog post; purchase hemp

  94. hello there and thank you for your information ? I have certainly
    picked up something new from right here. I did however expertise a few technical points using this site,
    since I experienced to reload the web site a lot of times previous to I could get it
    to load correctly. I had been wondering if your web hosting is OK?
    Not that I’m complaining, but slow loading instances times will often affect your placement in google and could damage your high-quality score if advertising and marketing with Adwords.
    Well I am adding this RSS to my e-mail and could look out
    for much more of your respective interesting content. Ensure that you update this
    again soon.

    Feel free to surf to my web blog; airline travel

  95. Good – I should certainly pronounce, impressed with your site.
    I had no trouble navigating through all tabs as well as related info ended up being truly simple
    to do to access. I recently found what I hoped for before you know it at all.
    Reasonably unusual. Is likely to appreciate it for those who add forums or anything, site theme .
    a tones way for your client to communicate. Nice task.

    Feel free to visit my web page :: cannabis seeds

  96. Hi would you mind stating which blog platform you’re
    working with? I’m looking to start my own blog soon but I’m
    having a difficult time choosing between BlogEngine/Wordpress/B2evolution and Drupal.
    The reason I ask is because your design and style seems different then most blogs and I’m looking for something completely unique.
    P.S Apologies for getting off-topic but I had to
    ask!

    My web blog: https://247fruitmachines.com/

  97. I loved as much as you’ll receive carried out right here.
    The sketch is tasteful, your authored material stylish.
    nonetheless, you command get bought an edginess over that you wish be delivering
    the following. unwell unquestionably come more formerly again as exactly the same nearly very often inside case you shield this hike.

    Also visit my web blog … Linette

  98. Write more, thats all I have to say. Literally, it seems
    as though you relied on the video to make your point. You obviously know what youre talking about, why
    throw away your intelligence on just posting videos to
    your blog when you could be giving us something enlightening to read?

    My webpage: smoking pill

  99. This design is spectacular! You definitely know
    how to keep a reader entertained. Between your wit and your videos, I was
    almost moved to start my own blog (well, almost…HaHa!) Great job.
    I really loved what you had to say, and more than that,
    how you presented it. Too cool!

    Review my page: Isis

  100. Oh my goodness! Incredible article dude! Many thanks, However I am
    having issues with your RSS. I don?t understand the reason why I am unable to subscribe to it.
    Is there anyone else having similar RSS issues?
    Anyone that knows the solution can you kindly respond?
    Thanx!!

    Here is my web-site – teens smoking

  101. hey there and thank you for your information – I’ve certainly picked up something new from right here.
    I did however expertise several technical issues using this web site,
    since I experienced to reload the website a lot of times previous to I could get it
    to load correctly. I had been wondering if your web hosting is OK?
    Not that I am complaining, but slow loading instances times will
    very frequently affect your placement in google and
    can damage your high quality score if advertising and marketing
    with Adwords. Well I am adding this RSS to my e-mail and can look
    out for much more of your respective intriguing content.

    Make sure you update this again very soon..

    Here is my blog post :: fad diets bullshit

  102. I believe this is one of the most vital info for
    me. And i am satisfied studying your article. But want to commentary on some general issues, The site style is ideal, the articles is truly nice
    : D. Good activity, cheers

    Here is my web blog … teens smoking

  103. I do not know if it’s just me or if perhaps everyone else encountering issues with your site.
    It seems like some of the written text in your content are running off the screen.
    Can somebody else please provide feedback and let me know if this is happening to them too?

    This might be a problem with my internet browser because I’ve had
    this happen previously. Appreciate it

    Here is my web blog :: male skin care

  104. I don’t even know the way I finished up here, however I thought this post was
    once good. I don’t realize who you are however certainly you’re going to a famous blogger when you are not already.
    Cheers!

    My homepage Javier

  105. Hello there I am so delighted I found your weblog, I
    really found you by mistake, while I was searching on Aol for something else, Nonetheless I am here now and would just like to say kudos for a tremendous post and a all round thrilling blog
    (I also love the theme/design), I don’t have time to browse it all
    at the moment but I have book-marked it and also added good sex in marriage
    your RSS feeds, so when I have time I will be back to read a lot more, Please do
    keep up the excellent job.

  106. I hardly comment, however i did some searching
    and wound up here Python gensim Word2Vec tutorial with
    TensorFlow and Keras – Adventures in Machine Learning.
    And I actually do have 2 questions for you if it’s allright.
    Could it be simply me or does it seem like some of the comments come across
    like they are coming from brain dead visitors? 😛 And,
    if you are writing on other social sites, I would like to follow everything fresh
    you have to post. Could you list of the complete urls of all your public
    sites like your linkedin profile, Facebook page or twitter
    feed?

    Stop by my web blog :: forum.m2clasic.ro

  107. Unquestionably believe that which you said. Your favourite justification appeared
    to be at the internet the easiest thing to take into accout of.

    I say to you, I definitely get irked while other folks think about concerns that they
    just don’t understand about. You managed to hit the nail upon the top and defined out the
    whole thing with no need side-effects , people can take a
    signal. Will probably be again to get more.
    Thank you

    Look into my website … https://www.mhes.tyc.edu.tw/userinfo.php?uid=4165619

  108. hello there and thank you for your info ? I?ve definitely picked up anything new from right here.
    I did however expertise several technical points using this web site, since I experienced to reload
    the website lots of times previous to I could get it to load properly.
    I had been wondering if your hosting is OK? Not that I
    am complaining, but sluggish loading instances times will sometimes affect your placement in google and could
    damage your high quality score if advertising and marketing with
    Adwords. Anyway I?m adding this RSS to my email and can look out for a lot more of your respective intriguing content.
    Ensure that you update this again soon..

    Look at my homepage; carb nite

  109. Awesome website you have here but I was wondering if you knew
    of any community forums that cover the same topics talked about in this article?
    I’d really love to be a part of community where I can get
    advice from other experienced individuals that share the same interest.
    If you have any recommendations, please let me know.

    Thank you!

    My web-site kids car games

  110. I’m impressed, I have to admit. Seldom do I come across a blog that’s
    both equally educative and entertaining, and without a doubt, you’ve hit
    the nail on the head. The issue is an issue that not enough
    men and women are speaking intelligently about.
    I am very happy that I found this during my hunt for
    something regarding this.

    my web site … prettypeople.club

  111. Good website! I truly love how it is easy on my eyes and the data
    are well written. I’m wondering how I could be notified whenever
    a new post has been made. I have subscribed to your RSS which must do the trick!
    Have a great day!

    Also visit my web-site :: hemp seed

  112. We absolutely love your blog and find nearly all of your post’s to be exactly
    I’m looking for. Does one offer guest writers to write content to suit your needs?

    I wouldn’t mind publishing a post or elaborating on a few of
    the subjects you write regarding here. Again, awesome site!

    Feel free to surf to my site :: Susanna

  113. I really love your website.. Great colors & theme.
    Did you develop this site yourself? Please reply back as I?m hoping to create my very own website and would
    love to find out where you got this from or exactly what the theme
    is named. Many thanks!

    My page … try hemp

  114. It’s appropriate time to make some plans for the
    longer term and it is time to be happy. I have read this submit and
    if I could I desire to recommend you few attention-grabbing
    things or suggestions. Maybe you could write subsequent articles relating to
    this article. I want to learn more issues about it!

    Feel free to surf to my web-site :: stop smoking weed today

  115. To follow up on the update of this subject matter on your website and wish to let you know your skin type to optimize your skin care routine simply how much I valued the time you
    took to generate this valuable post. Inside the post, you spoke on how to seriously
    handle this concern with all ease. It would be my pleasure to gather some more suggestions from your blog and come
    as much as offer some others what I have learned from you.

    Many thanks for your usual great effort.

  116. I was just seeking this information for a while.
    After six hours of continuous Googleing, finally I got
    it in your website. I wonder what is the lack of Google
    strategy that don’t rank this type of informative web sites
    in top of the list. Normally the top websites are full of garbage.

    my blog post – better sex tonight

  117. I am just writing to make you know what a brilliant discovery my
    wife’s girl developed going through your blog. She mastered lots of details,
    not to mention what it’s like to possess an ideal coaching character to make the rest
    with no trouble grasp specific grueling topics.
    You truly did more than her desires. Thanks for distributing the
    useful, trustworthy, edifying as well as easy guidance
    on your topic to Sandra.

    My blog post :: basic skin care routine

  118. I blog frequently and I genuinely appreciate your information.
    Your article has truly peaked my interest. I am going to take a note of your website and keep
    checking for new information about once per week. I subscribed to
    your RSS feed as well.

    Take a look at my web-site: great sex

  119. Can I just say what a comfort to find an individual who really knows what they are discussing on the web.

    You certainly realize how to bring an issue to light and make it
    important. A lot more people must look at this and understand
    this side of your story. It’s surprising you’re not more popular since you most certainly
    have the gift.

    Feel free to visit my page – Maya

  120. Can I simply say what a relief to uncover a person that truly knows what they’re discussing on the internet.
    You definitely realize how to bring a problem to light and make it important.
    A lot more people ought to check this out and understand
    this side of your story. It’s surprising you aren’t more popular because you most certainly have the gift.

    my web page … called lucid dreaming

  121. I do not even know how I ended up here, but I assumed this submit was great.
    I don’t know who you might be but certainly you’re going to a famous blogger for those who
    aren’t already. Cheers!

    Feel free to visit my webpage; Luella

  122. Hmm it looks like your website ate my first comment (it was super long) so I guess I’ll just sum it up what I wrote and
    say, I’m thoroughly enjoying your blog. I too am an aspiring blog writer
    but I’m still new to everything. Do you have any helpful hints for beginner blog writers?
    I’d genuinely appreciate it.

  123. This is the right blog for anybody who would like
    to understand this topic. You realize a whole lot its almost hard to
    argue with you (not that I actually would want to?HaHa).
    You definitely put a fresh spin on a subject that
    has been discussed for ages. Wonderful stuff, just excellent!

    Here is my web blog: drug crime

  124. Thank you a bunch for sharing this with all folks you actually
    recognise what you’re speaking approximately! Bookmarked.
    Kindly additionally visit my website =). We can have a hyperlink
    trade agreement between us!

    Also visit my website … Dorie

  125. Howdy! Quick question that’s entirely off topic. Do you know how to make your site mobile friendly?
    My site looks weird when viewing from my
    iphone 4. I’m trying to find a theme or plugin that might be
    able to resolve this problem. If you have any suggestions, please
    share. Thanks!

    my web blog :: skin cleansing

  126. Hello there! This is kind of off topic but I need some guidance from
    an established blog. Is it very hard to set up your
    own blog? I’m not very techincal but I can figure things out pretty quick.
    I’m thinking about creating my own but I’m not sure where to start.
    Do you have any ideas or suggestions? Thanks

    Feel free to visit my web site: thaipurchase.com

  127. Can I simply just say what a relief to uncover someone who actually understands what
    they’re discussing on the net. You certainly understand how to bring a
    problem to light and make it important. A lot more people should read this
    and understand this side of the story. I was surprised that you aren’t more popular since you definitely possess the
    gift.

    Here is my webpage; medical cannabis

  128. Magnificent goods from you, man. I’ve take note
    your stuff previous to and you are just extremely magnificent.
    I actually like what you’ve got here, really like what you’re saying and the best way in which you assert it.

    You are making it entertaining and you still take care of
    to stay it wise. I can’t wait to read far more from you.
    That is actually a wonderful website.

    My blog post … pubic hair removal

  129. Good day! I could have sworn I’ve been to your blog before but after browsing through many of the posts I realized it’s
    new to me. Anyhow, I’m definitely pleased I came across it and I’ll be
    book-marking it and checking back frequently!

    Feel free to visit my site; cholesterol diets

  130. This design is steller! You definitely know how to keep a reader entertained.
    Between your wit and your videos, I was almost moved
    to start my own blog (well, almost…HaHa!) Wonderful job.
    I really enjoyed what you had to say, and more than that,
    how you presented it. Too cool!

    Also visit my site … Andre