I am going to develop an open-domain natural language question-answering (NLQA) system, and will use the support vector machine (SVM) as the machine learning (ML) model for question classification.

The data that I have is from a cube, containing multiple dimensions, of which some contain hierarchies.

I do not understand how to work/combine the taxonomy and SVM for question classification. If I understand correctly, the taxonomy still needs to be developed by hand, unless an existing one is being used. And the SVM sorts the queried NL question based on this taxonomy?

Is this correct, or am I mixing the whole concept?

  • $\begingroup$ Is the cube the entire construct, or are there extra dimensions? If so, what are they? *(Also, can you clarify: "Literature study resulted in machine-learning algorithms." This is of particular interest to me, but could have multiple meanings in this context;) * $\endgroup$ – DukeZhou Mar 1 '17 at 2:07
  • $\begingroup$ In terms of taxonomy in general, the computer, by definition, has it's own numeric taxonomy for all data, and the human labels are merely abstractions. There is no limitation for computers developing original taxonomies, which are merely additional sets. However, it may be difficult to procedurally derive the meaning of the sets, thus guided learning would likely save time. $\endgroup$ – DukeZhou Mar 1 '17 at 2:08
  • $\begingroup$ The cube contains dimension, of which some contain hierarchies... As for the machine-learning algorithm, I noticed that I have been researching wrong. I am building a domain specific question answering. Therefore, it is not needed (per se) to use machine-learning algorithms... $\endgroup$ – lilienfa Mar 1 '17 at 8:27
  • $\begingroup$ About the taxonomy, I am kind of lost... Once the question is queried in NL, I tokenize it, splitting it in tokens. Then applying POS tagging, to tag. Followed by shift-reduce dependency parsing algorithm. Once that is done, to find the entities, I apply NER. This part is the preprocessing... Now I have to find a way to extract the entities of the query, and map them to a taxonomy? While in reality, I need to find specific words. E.g. measure, then quantity... I am totally lost in this part. What is the best way of a taxonomy, and how can I classify questions? Thank you in advance :) $\endgroup$ – lilienfa Mar 1 '17 at 8:30

This is not an answer (I don't have enough reputation to comment). I did something close to this in my master's thesis and think it is close to what you are interested in.

In it, I had developed a framework for extracting metadata from web-based educational content. This metadata was used for classifying the the educaitonal content for many different attributes, which could then be used for faster and more efficient search and discovery of educational content.

The educational resources (containing the content) could be anything like text or PDFs of assignments, homework, assignments, online books, exam questions, courses etc (which many colleges host online). To identify what kind of educational resource it is, I would parse the text and look for keywords and formatting styles (preprocessing included constructing 2-grams and 3-grams, POS tagging, using small specific parsers for NER, dates and other text entities one encounters in educational content).

For some part I used Wordnet (also available under python-nltk) to obtain relationships between different entities and also to find closeness between them. DBpedia was also used. However, for the most part I had to identify the most commonly occuring terms and build a taxonomy by hand. (It took a lot of time!). I obtained a lot of candidates for keywords by looking at openly available taxonomies.

For extracting domain specific taxonomy/ontology, one needs manually to build it. Ontology generation from text is an active area of research and building domain-specific ontology has been tried for many years. One example of such taxonomy (here thesaurus) is agrovoc where domain experts have contributed to the knowledge by identifying agricultural entities manually.

There are a lot of places where domain specific vocabulary is available; maybe you can use that. In some aspects it is close to supervised machine learning, where one has some nice data and correspondingly nice output. However, on my part, there wasn't much learning in it - more like template matching.

Hope this helps.

| improve this answer | |
  • $\begingroup$ That is very interesting, thnx! Maybe I am thinking too complex. But I am stuck at the classification part. Am using spaCy as the Python NLP toolkit. I need to map words, I just don't know how. The noun+verb extracted from parse tree have to be used, together with wh-words i think? to generate a string, equivalent to a MDX query. I need to extract keywords which are the same as the attributes in the data cube. Any tips for that as well? $\endgroup$ – lilienfa Mar 3 '17 at 12:39
  • $\begingroup$ I have no idea of MDX but from what I gather, you are trying to break the query into components which are (sort-of) basis vectors in information space (the cube). One way is to search the tokens from the query string through the entire hierarchies (use idea of closeness/similarity to find the appropriate attribute). Another could be by converting the query string into a vector (in spaCy) and then taking the inner product with vectors from within the cube; use similarity to find closeness with concepts/axis. Once you get basic concepts, you can create the right query. Is this useful? $\endgroup$ – solyarist Mar 5 '17 at 18:03

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.