NLP unsupervised authorship tasks in short texts , thoughts advice and ideas

Viewed 22

I am working on a project that is carrying out unsupervised learning on a series of short texts (meanL 60 words)

The aim is to cluster authors with similar styles opposed to classifying them which is the usual use case. I plan to be able to take an unknown input text and determine how it correlates to the clusters for the purposes of grouping authors with similar styles.

I have conducted some analysis using count vectorizer on the texts using character n-grams of varying length. I have read a number of research papers that attest to character n-grams being useful for this task. I have adjusted the hyper parameters (min_df, max_df, max_featres) and removed some of the most common words that are not stop words in an attempt to reduce their impact on the score.

I did some analysis with TFIDF however it was giving me results that were semantically similar opposed to the syntactic and stylistic similarities that I am looking for. I don't feel there is alot of value down this path?

I used a silhouette score to determine the optimum number of clusters and used PCA to reduce the dimensionality and plot the results on a scatter chart but it gave little in the way of separated clusters.

Is there any other avenue that could be explored?

some other feature vector opposed to the n-gram matrix?

As the data is unlabeled what is the best method to measure the effectiveness of the model?

Any thoughts or thought provoking comments?

1 Answers

Seems to me like you are wants to do topic modelling & classify input texts in multiple groups depending on writing pattern; So giving you following suggestions;

1.) Try with LDA(Latent Dirichlet Allocation) under sklearn/nltk/gensim libraries (https://towardsdatascience.com/topic-modelling-in-python-with-nltk-and-gensim-4ef03213cd21)

2.) Alternative of LDA is Non-Negative Matrix Factorization (NMF), it's worth trying this one too... (https://stackabuse.com/python-for-nlp-topic-modeling/)

3.) Or if wants to use some pre-trained model then maybe explore HF (https://huggingface.co/models), if there is any model which fulfill your problem statement...

Hope this Helps...

Related