SFL-NLPtoolkits

From UBC Wiki

SFL-NLPtoolkits

Authors:

Wucheng Zhang, Yanbai Chen, Yunan Xu

What is the problem?

Systemic functional linguistic (SFL, https://en.wikipedia.org/wiki/Systemic_functional_linguistics) is an relatively new applicable linguistic in past few decades. The application of systemic functional linguistic in natural language processing is gradually developing at present. This project is an attempt to apply part of the theory in SFL. With the SFL-based syntax tree parser, we could parse the syntax tree of much more complicated sentences (clause complexes, in SFL) and this parser could be easily updated by enriching vocabulary. Based on this syntax tree parser, users could easily understand the structures, not only the grammar but also the layer of meanings. Furthermore, the key information in the clause complexes could be extracted and operated on, i.e. what objects are involved (entity) and what processes are involved (event). Also there is a automatic grammatical metaphor built in the toolkit. Basically, the tool could pack information from the inputs and into normalized versions, which caters to academic needs. The third part tool is a nominal density calculator which could measure the level of the grammatical metaphorization.

A class diagram is attached here: https://drive.google.com/file/d/17YuhYf1eWrTIkBIskGd3i-JNAIDQx2Vs/view?usp=sharing

What is the something extra?

  1. In stead of using the link relationship, we create a new data type called syntax tree then the sentences are operated by manipulating the tree.
  2. We separate the syntax tree parser and dictionary, and the the dictionary is stored in the form of triple.
  3. We apply the large amount of knowledge in SFL, which could give us a more flexible understanding of language and then we could define the syntax tree and clause complexes in a more general way.

What did we learn from doing this?

  1. Prolog is a very powerful tool in natural language processing because it is very good at defining the sentences in a flexible way.
  2. As the conclusion of this feasibility test, systemic functional language fits in the Prolog very well because SFL has a flexible and multilayered strategy to define clause complexes.
  3. The order of clauses (in Prolog) matters. We should follow the correct order of processing the problem otherwise we would fall into a infinite loop.
  4. Designing the program should be based on considering about the problem, not the program itself.

Links to code etc:

Inspiration:

https://en.wikipedia.org/wiki/Systemic_functional_linguistics

https://www.tandfonline.com/doi/full/10.1080/10749039.2019.1686027

https://link.springer.com/article/10.1186/s40554-015-0016-7

Code:

https://swish.swi-prolog.org/p/SFL-NLPToolkit.swinb

https://github.com/WUCHENG98/SFL-NLPToolkit

Buffalo buffalo buffalo buffalo buffalo buffalo buffalo buffalo.png
This is a syntax tree for CPSC312 project wucheng, yanbai, yunan.png