Classifying short political statements Suppose I have about 1.6 million public filings to the FCC supporting or opposing net neutrality. It would be interesting to assign labels like 'pro' or 'against' and also maybe 'hand-written', 'form-letter', 'bot'. I'm willing to hand label a bunch.
Example:

I support Net Neutrality. I do not support the "Restoring Internet Freedom" proceeding. This proceeding, if it moves forward, endangers access to information and education for millions of people. Anybody that does not support Net Neutrality has lost my vote permanently.

Some entries are highly repetitive, many being form letters. Many contain predictable strings such as "preserve net neutrality" or "I support net neutrality". But, there might be some similar sets of words with opposite meanings, such as 'I support net neutrality; repealing it is a terrible idea.' vs. 'I support repealing net neutrality because it is a terrible idea'.
A 2-step workflow might take care of the easy cases first using simple string matching or regexes. Then, for the hand-written responses try to classify them into 'pro' or 'against'. Any hints on how to do this? Specific libraries or techniques? I'm working in Python, but can do R as well.
If anyone else wants to try their hand, the code here might save you a bit of time.
UPDATE: Getting off topic, but some nice analyses of this data set have been done by Jeffrey Fossett, Chris Sinchok, and Nathaniel Fruchter.
 A: So at its core this is a binary classification problem but there are many ways you can approach it. Two of which: 
(i'm ignoring data cleaning and other data preps)


*

*Come up with various features like word count, n-grams, tfidf scores or any other hand-made features. You then feed these into a classifier like xgboost, decision tree classifier (sklearn comes with a number of such classifers)

*Use a neural-net based approach. A super simple solution would be taking word2vec represenation of words, encoding them with long short term memories (lstm) and attaching a few dense layers on top. This should give you decent results with much less time invested in feature engineering. 
the network architecture in keras would be as simple as: 
embedding_layer = Embedding(nb_words+1,
        300,
        weights=[embedding_matrix],
        input_length=MAX_SEQUENCE_LENGTH,
        trainable=False)



sequence_input = Input(shape=(MAX_SEQUENCE_LENGTH,), dtype='int32')
embedded_sequences = embedding_layer(sequence_input)

lstm_layer = LSTM(200, dropout=0.2, recurrent_dropout=0.2)
encoded_input = lstm_layer(embedded_sequences)

dense_layers= Dense(200, activation='relu')(encoded_input )
dense_layers= Dropout(0.2)(dense_layers)
dense_layers= BatchNormalization()(dense_layers)


preds = Dense(1, activation='sigmoid')(dense_layers)

model = Model(inputs=sequence_input, outputs=preds)

