Programming

std::common_type<> Type Trait

Written by on April 12, 2020 in C++, Programming with 0 Comments
std::common_type<> Type Trait

In today’s post, I would like to go over the type trait std::common_type<>. This trait was introduced in C++11. As per the specification, std::common_type<T1, T2, …Tn>::type refers to a type Tx in the given list, which the rest of the types in the list can be implicitly converted to. This works with built-in as well […]

Continue Reading

std::is_empty

Written by on March 28, 2020 in C++, Programming with 0 Comments
std::is_empty<T>

In the previous post, we looked at the std::is_destructible<T> type trait. Today, let us try to understand another type trait std::is_empty<T>. As per the specification, is_empty<T>::value will return true in the following cases: – The class/struct has no non-static data member – The class/struct does not define a virtual function – The class/struct does not […]

Continue Reading

std::is_destructible

Written by on March 15, 2020 in C++, Programming with 0 Comments
std::is_destructible

In the last article, I explained the deleted destructor in some detail. Today, I would like to talk about a related construct, a type trait called std::is_destructible. Type traits, defined in the header <type_traits>, are a big help when it comes to implementing template metaprogramming.  See this article for a nice introduction to type traits in […]

Continue Reading

Automatically Converting Active Voice to Passive Voice and Vice Versa

Written by on February 16, 2020 in Natural Language Processing, Programming, Prolog with 0 Comments
Automatically Converting Active Voice to Passive Voice and Vice Versa

The iLexicon system can handle active/passive voice conversion of fairly complex English sentences. I gave examples of the underlying verb conjugation mechanism in this article and this one. Today, I am going to give examples of the conversion of complete sentences. Here is an example of active to passive voice conversion: The above is a snapshot […]

Continue Reading

Distributed Computing with Linda

Written by on December 22, 2019 in Programming, Prolog with 0 Comments
Distributed Computing with Linda

Linda, originally proposed by Nicholas Carriero and David Gelernter, is a model of process communication using a small set of well-defined primitives, operating on a tuple space.  Interestingly, Sicstus Prolog comes with a library that implements Linda (both Server and Client).  I played with it a little bit and really enjoyed it. In this article, I would […]

Continue Reading

Using Definite Clause Grammars (DCG) for Information Extraction

Written by on December 8, 2019 in Natural Language Processing, Programming, Prolog with 0 Comments
Using Definite Clause Grammars (DCG) for Information Extraction

In the previous article, I showed how we can use ATNs for extracting key information from natural language text. I also pointed out in that article that Definite Clause Grammars (DCG) are a more compact formalism for doing this. That will be the focus of today’s article. For a nice introduction to DCG, read this. […]

Continue Reading

Using Augmented Transition Networks (ATN) for Information Extraction

Written by on November 23, 2019 in LISP, Natural Language Processing, Programming with 0 Comments
Using Augmented Transition Networks (ATN) for Information Extraction

After Wood’s paper [1], Augmented Transition Networks (ATN) became popular in the 1970s, for parsing text. An ATN is a generalized transition network with two major enhancements: Support for recursive transitions, including jumping to other ATNs Performing arbitrary actions when edges are traversed Remembering state through the use of registers See the “Further Reading” section at […]

Continue Reading

Calling C# Methods from Sicstus Prolog through COM Interface

Written by on November 10, 2019 in Programming, Prolog with 0 Comments
Calling C# Methods from Sicstus Prolog through COM Interface

Recently I needed to make use of a C# library (which I had implemented a few years ago) from Sicstus Prolog. Calling C/C++ functions from Sicstus Prolog is fairly well documented. When it comes to C#/.NET, the official documentation recommends the PrologBeans library. After going through the documentation, I felt that it would not work for […]

Continue Reading

Conjugating Phrasal Verbs

Written by on October 13, 2019 in Natural Language Processing, Programming, Prolog with 0 Comments
Conjugating Phrasal Verbs

In the last article, I showed how to generate verb conjugations in the “iLexicon” system. Today, let us see how this idea can be extended to English “phrasal verbs”. According to Wikipedia: “a phrasal verb is a phrase such as turn down or ran into which combines two or three words from different grammatical categories: […]

Continue Reading

Generating Verb Conjugations

Written by on September 29, 2019 in Natural Language Processing, Programming, Prolog with 0 Comments
Generating Verb Conjugations

We have been taught in school that English language has different “tense” forms. To help you quickly recollect, I am listing them in the table below (the verb ‘sleep’ is used as example): No. Tense Form Example Sentence (3rd Person Singular Pronoun) 1 Simple Present She sleeps 2 Simple Past She slept 3 Simple Future […]

Continue Reading

Top