Message Boards Message Boards

[WSC18] Music Sentiment Analysis through Machine Learning

Posted 6 years ago
9 Replies

Hi, William. Terrific work! Unfortunately, it does not seem to work in Version 13 (the error codes don't help much). Attached is my attempt to use the notebook. Have you done any further work on this project?

Best,

Harlan

Attachments:
POSTED BY: Harlan Brothers

Hi Michael,

Yes of course. Because the file is too big, I have put it up on Google Drive and here is the link:

https://drive.google.com/file/d/1NWb5DQPW9ZiSJiqlfaDYBKxvYi4Dv5pq/view?usp=sharing

Best regards,

William

Thanks William for the detailed explanation. I appreciate it. If it is still ok, I would like a copy of your code so that I can play around with it

many Thanks Michael

POSTED BY: Michael Kelly

Hi Michael,

Thank you for your interest in my project! I apologize for the belated reply.

For your first question, yes it was defined internally. The function definition is as follows:

takeLast[list_List] := Map[Last, list, {2}]

For your second question, this project did not use neural network, but could be roughly described as a feed-forward network of linear regressers, random forest, and other classifier functions (I let Mathematica decides which one to use). The precise structure is described in that network figure: I trained the second layer to map from each features to the correct valence/arousal values, and then I trained the third layer to map the vector of valence/arousal predictions to the correct label.

The code for this project is very long and is simply repetition of what I described in this post:

  1. define feature extractor

  2. extract feature for every time step, outputting a feature time series

  3. train two predictor functions to map feature time series to "ground truth" valence and arousal value

  4. repeat the above three steps for each type of feature (power, entropy, etc.), creating a "feature vector"

  5. finally, train classifier function to map arousal and valence feature vectors to "ground truth" labels.

I don't know if the actual code will be helpful to you, but if you still want the code, I am more than willing to post it here.

This approach works, but it is definitely not optimal. For one thing, back propagation only happens locally instead of globally. I have been planning to redo this project with neural network (which is more efficient and much better at distributed representation) for a long time, and I hope I can find some time in the near future to finish it. I am currently working on a time series classification project using recurrent neural networks in a neuroscience laboratory, and I could potentially adapt the network architecture I have in that project to fit the purpose of this project.

Anyway, thank you again for your interest in my project. I hope my reply helps.

Best regards,

William

Thanks William for a very interesting post. Just two questions: In the second layer for the definition of dataRMSA you have the function takeLast[.]. Is this defined internally with the sentimentAnalyzer? Also while you have outlined the components of the sentimentAnalyzer, you have not explicitly defined how these are put together, say in either a NetChain or NetGraph that would show how they actually create the required neural net. is it possible to get that code?

Thanks again Michael

POSTED BY: Michael Kelly
Posted 6 years ago

This seems like a really cool way to analyze music.

POSTED BY: Luke Xie
Posted 6 years ago

Great job! Very interesting!

POSTED BY: Mei Jin

This is interesting I am taking a course on the Great Courses Plus on Music and the Brain taught by Aniruddh Patel PHD that talks about these things. It's really interesting

POSTED BY: Leighton Cooper
POSTED BY: Moderation Team
Reply to this discussion
Community posts can be styled and formatted using the Markdown syntax.
Reply Preview
Attachments
Remove
or Discard

Group Abstract Group Abstract