{"id":2366,"date":"2021-03-28T15:32:07","date_gmt":"2021-03-28T10:02:07","guid":{"rendered":"https:\/\/www.rangakrish.com\/?p=2366"},"modified":"2021-03-28T15:32:07","modified_gmt":"2021-03-28T10:02:07","slug":"implementing-ilexicon-using-litedb","status":"publish","type":"post","link":"https:\/\/www.rangakrish.com\/index.php\/2021\/03\/28\/implementing-ilexicon-using-litedb\/","title":{"rendered":"Implementing iLexicon using LiteDB"},"content":{"rendered":"<p><em><strong>iLexicon<\/strong><\/em> is an <em><strong>&#8220;intelligent&#8221;<\/strong><\/em> dictionary that can be used to build <em><strong>Natural Language<\/strong><\/em> applications. I have two implementations, one in <em><strong>Lisp<\/strong><\/em> and another in <em><strong>Prolog<\/strong><\/em>. Both implementations are memory-based, in order to speed up performance. I have written several articles referencing it, for example see <a href=\"https:\/\/www.rangakrish.com\/index.php\/2019\/09\/15\/exploring-word-patterns\/\" target=\"_blank\" rel=\"noopener\"><em><strong>this<\/strong><\/em><\/a>. <span class=\"Apple-converted-space\">\u00a0<\/span><\/p>\n<p><em><strong>LiteDB<\/strong><\/em> is a <em><strong>NoSQL<\/strong><\/em> database for <em><strong>.NET<\/strong><\/em>. I <a href=\"https:\/\/www.rangakrish.com\/index.php\/2021\/02\/14\/litedb-a-nosql-database-for-net\/\" target=\"_blank\" rel=\"noopener\"><em><strong>wrote<\/strong><\/em><\/a>\u00a0about it a few weeks ago. Since that time, I have been working on implementing <em><strong>ILexicon<\/strong><\/em> using <em><strong>LiteDB<\/strong><\/em> as the back-end. That is almost complete. The primary reason for moving <em><strong>iLexicon<\/strong><\/em> to <em><strong>LiteDB<\/strong><\/em> is that I can now access the lexicon from both <em><strong>Lisp<\/strong><\/em> and <em><strong>Prolog<\/strong><\/em> through the respective <em><strong>COM\/Automation<\/strong><\/em> modules.<\/p>\n<p>In today&#8217;s article, I will show the primary <em><strong>COM Server<\/strong><\/em> interface and how it is used from <a href=\"https:\/\/sicstus.sics.se\/\" target=\"_blank\" rel=\"noopener\"><em><strong>Sicstus<\/strong><\/em>\u00a0<em><strong>Prolog<\/strong><\/em><\/a>. <em><strong>i<\/strong><strong>Lexicon<\/strong><\/em> is quite feature-rich and it is difficult to demonstrate its capabilities in a single article. You may want to see my other posts related to this.<\/p>\n<p>Here is the <em><strong>COM Server<\/strong><\/em> layer, written in <em><strong>C#<\/strong><\/em>.<\/p>\n<figure id=\"attachment_2367\" aria-describedby=\"caption-attachment-2367\" style=\"width: 600px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2021\/03\/code.jpg?ssl=1\"><img data-recalc-dims=\"1\" fetchpriority=\"high\" decoding=\"async\" data-attachment-id=\"2367\" data-permalink=\"https:\/\/www.rangakrish.com\/index.php\/2021\/03\/28\/implementing-ilexicon-using-litedb\/code-14\/\" data-orig-file=\"https:\/\/www.rangakrish.com\/wp-content\/uploads\/2021\/03\/code.jpg\" data-orig-size=\"1154,1170\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;Admin&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;1616922844&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"COM Server\" data-image-description=\"&lt;p&gt;COM Server&lt;\/p&gt;\n\" data-image-caption=\"&lt;p&gt;COM Server&lt;\/p&gt;\n\" data-large-file=\"https:\/\/www.rangakrish.com\/wp-content\/uploads\/2021\/03\/code-1010x1024.jpg\" class=\"wp-image-2367\" src=\"https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2021\/03\/code.jpg?resize=600%2C608&#038;ssl=1\" alt=\"COM Server\" width=\"600\" height=\"608\" srcset=\"https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2021\/03\/code.jpg?resize=296%2C300&amp;ssl=1 296w, https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2021\/03\/code.jpg?resize=1010%2C1024&amp;ssl=1 1010w, https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2021\/03\/code.jpg?resize=768%2C779&amp;ssl=1 768w, https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2021\/03\/code.jpg?w=1154&amp;ssl=1 1154w\" sizes=\"(max-width: 600px) 100vw, 600px\" \/><\/a><figcaption id=\"caption-attachment-2367\" class=\"wp-caption-text\"><strong>COM Server<\/strong><\/figcaption><\/figure>\n<p>The above exposes two functions:<\/p>\n<ul>\n<li><em><strong>hasPOS(Word, POS) checks if the given word has the indicated POS (remember, a word can have many parts of speech)<\/strong><\/em><\/li>\n<li><em><strong>hasLemma(Word, Lemma) checks if the given word has the indicated Lemma<\/strong><\/em><\/li>\n<\/ul>\n<p>The second functionality is often used when implementing an <em><strong>ATN<\/strong><\/em>-based (semantic) parser for English.<\/p>\n<p>Here is the <em><strong>Prolog<\/strong><\/em> code that interfaces with the lexicon:<\/p>\n<figure id=\"attachment_2368\" aria-describedby=\"caption-attachment-2368\" style=\"width: 550px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2021\/03\/iLexicon-interface.jpg?ssl=1\"><img data-recalc-dims=\"1\" decoding=\"async\" data-attachment-id=\"2368\" data-permalink=\"https:\/\/www.rangakrish.com\/index.php\/2021\/03\/28\/implementing-ilexicon-using-litedb\/ilexicon-interface\/\" data-orig-file=\"https:\/\/www.rangakrish.com\/wp-content\/uploads\/2021\/03\/iLexicon-interface.jpg\" data-orig-size=\"1067,683\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;Admin&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;1616920942&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"The Prolog Interface\" data-image-description=\"&lt;p&gt;The Prolog Interface&lt;\/p&gt;\n\" data-image-caption=\"&lt;p&gt;The Prolog Interface&lt;\/p&gt;\n\" data-large-file=\"https:\/\/www.rangakrish.com\/wp-content\/uploads\/2021\/03\/iLexicon-interface-1024x655.jpg\" class=\"wp-image-2368\" src=\"https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2021\/03\/iLexicon-interface.jpg?resize=550%2C352&#038;ssl=1\" alt=\"The Prolog Interface\" width=\"550\" height=\"352\" srcset=\"https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2021\/03\/iLexicon-interface.jpg?resize=300%2C192&amp;ssl=1 300w, https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2021\/03\/iLexicon-interface.jpg?resize=1024%2C655&amp;ssl=1 1024w, https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2021\/03\/iLexicon-interface.jpg?resize=768%2C492&amp;ssl=1 768w, https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2021\/03\/iLexicon-interface.jpg?resize=140%2C90&amp;ssl=1 140w, https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2021\/03\/iLexicon-interface.jpg?w=1067&amp;ssl=1 1067w\" sizes=\"(max-width: 550px) 100vw, 550px\" \/><\/a><figcaption id=\"caption-attachment-2368\" class=\"wp-caption-text\"><strong>The Prolog Interface<\/strong><\/figcaption><\/figure>\n<p>I think the mapping is self-explanatory.<\/p>\n<p>The following commands show how this can be used:<\/p>\n<figure id=\"attachment_2369\" aria-describedby=\"caption-attachment-2369\" style=\"width: 412px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2021\/03\/Session1.jpg?ssl=1\"><img data-recalc-dims=\"1\" decoding=\"async\" data-attachment-id=\"2369\" data-permalink=\"https:\/\/www.rangakrish.com\/index.php\/2021\/03\/28\/implementing-ilexicon-using-litedb\/session1-2\/\" data-orig-file=\"https:\/\/www.rangakrish.com\/wp-content\/uploads\/2021\/03\/Session1.jpg\" data-orig-size=\"412,374\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;Admin&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;1616920896&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"Sample Commands\" data-image-description=\"&lt;p&gt;Sample Commands&lt;\/p&gt;\n\" data-image-caption=\"&lt;p&gt;Sample Commands&lt;\/p&gt;\n\" data-large-file=\"https:\/\/www.rangakrish.com\/wp-content\/uploads\/2021\/03\/Session1.jpg\" class=\"wp-image-2369 size-full\" src=\"https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2021\/03\/Session1.jpg?resize=412%2C374&#038;ssl=1\" alt=\"Sample Commands\" width=\"412\" height=\"374\" srcset=\"https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2021\/03\/Session1.jpg?w=412&amp;ssl=1 412w, https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2021\/03\/Session1.jpg?resize=300%2C272&amp;ssl=1 300w\" sizes=\"(max-width: 412px) 100vw, 412px\" \/><\/a><figcaption id=\"caption-attachment-2369\" class=\"wp-caption-text\"><strong>Sample Commands<\/strong><\/figcaption><\/figure>\n<p>To take this further, here is a toy grammar for English written in <em><strong>Definite Clause Grammar (DCG)<\/strong><\/em> notation:<\/p>\n<figure id=\"attachment_2370\" aria-describedby=\"caption-attachment-2370\" style=\"width: 550px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2021\/03\/Grammar.jpg?ssl=1\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" data-attachment-id=\"2370\" data-permalink=\"https:\/\/www.rangakrish.com\/index.php\/2021\/03\/28\/implementing-ilexicon-using-litedb\/grammar-2\/\" data-orig-file=\"https:\/\/www.rangakrish.com\/wp-content\/uploads\/2021\/03\/Grammar.jpg\" data-orig-size=\"777,402\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;Admin&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;1616920982&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"A Toy English Grammar\" data-image-description=\"&lt;p&gt;A Toy English Grammar&lt;\/p&gt;\n\" data-image-caption=\"&lt;p&gt;A Toy English Grammar&lt;\/p&gt;\n\" data-large-file=\"https:\/\/www.rangakrish.com\/wp-content\/uploads\/2021\/03\/Grammar.jpg\" class=\"wp-image-2370\" src=\"https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2021\/03\/Grammar.jpg?resize=550%2C285&#038;ssl=1\" alt=\"A Toy English Grammar\" width=\"550\" height=\"285\" srcset=\"https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2021\/03\/Grammar.jpg?resize=300%2C155&amp;ssl=1 300w, https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2021\/03\/Grammar.jpg?resize=768%2C397&amp;ssl=1 768w, https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2021\/03\/Grammar.jpg?w=777&amp;ssl=1 777w\" sizes=\"(max-width: 550px) 100vw, 550px\" \/><\/a><figcaption id=\"caption-attachment-2370\" class=\"wp-caption-text\"><strong>A Toy English Grammar<\/strong><\/figcaption><\/figure>\n<p>The <em><strong>has_pos<\/strong><\/em> predicate is used to check the part-of-speech of the in-coming word. Here are some example sentences parsed using the grammar (I am skipping tokenization, structure building, etc.):<\/p>\n<figure id=\"attachment_2371\" aria-describedby=\"caption-attachment-2371\" style=\"width: 600px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2021\/03\/Session2.jpg?ssl=1\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" data-attachment-id=\"2371\" data-permalink=\"https:\/\/www.rangakrish.com\/index.php\/2021\/03\/28\/implementing-ilexicon-using-litedb\/session2-2\/\" data-orig-file=\"https:\/\/www.rangakrish.com\/wp-content\/uploads\/2021\/03\/Session2.jpg\" data-orig-size=\"714,177\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;Admin&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;1616922732&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"Parsing Using the Grammar\" data-image-description=\"&lt;p&gt;Parsing Using the Grammar&lt;\/p&gt;\n\" data-image-caption=\"&lt;p&gt;Parsing Using the Grammar&lt;\/p&gt;\n\" data-large-file=\"https:\/\/www.rangakrish.com\/wp-content\/uploads\/2021\/03\/Session2.jpg\" class=\"wp-image-2371\" src=\"https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2021\/03\/Session2.jpg?resize=600%2C149&#038;ssl=1\" alt=\"Parsing Using the Grammar\" width=\"600\" height=\"149\" srcset=\"https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2021\/03\/Session2.jpg?resize=300%2C74&amp;ssl=1 300w, https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2021\/03\/Session2.jpg?w=714&amp;ssl=1 714w\" sizes=\"(max-width: 600px) 100vw, 600px\" \/><\/a><figcaption id=\"caption-attachment-2371\" class=\"wp-caption-text\"><strong>Parsing Using the Grammar<\/strong><\/figcaption><\/figure>\n<p>I used <em><strong>Visual Studio 2019 Release 16.9.2<\/strong><\/em> for building the 64-bit COM server. In an earlier <a href=\"https:\/\/www.rangakrish.com\/index.php\/2019\/11\/10\/calling-c-methods-from-sicstus-prolog-through-com-interface\/\" target=\"_blank\" rel=\"noopener\"><em><strong>article<\/strong><\/em><\/a>, I have explained how to build the <em><strong>COM<\/strong><\/em> server in C#.<\/p>\n<p>Have a nice weekend!<span class=\"Apple-converted-space\">\u00a0<\/span><\/p>\n","protected":false},"excerpt":{"rendered":"<p>iLexicon is an &#8220;intelligent&#8221; dictionary that can be used to build Natural Language applications. I have two implementations, one in Lisp and another in Prolog. Both implementations are memory-based, in order to speed up performance. I have written several articles referencing it, for example see this. \u00a0 LiteDB is a NoSQL database for .NET. I [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"advanced_seo_description":"","jetpack_seo_html_title":"","jetpack_seo_noindex":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2},"jetpack_post_was_ever_published":false},"categories":[107,17,147],"tags":[219,67,273,130,265,151],"class_list":["post-2366","post","type-post","status-publish","format-standard","hentry","category-natural-language-processing","category-programming","category-prolog","tag-net","tag-c","tag-com-server","tag-ilexicon","tag-litedb","tag-sicstus-prolog"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p9OLnF-Ca","jetpack-related-posts":[{"id":1659,"url":"https:\/\/www.rangakrish.com\/index.php\/2019\/08\/04\/generating-poetry-in-prolog\/","url_meta":{"origin":2366,"position":0},"title":"Generating Poetry in Prolog","author":"admin","date":"August 4, 2019","format":false,"excerpt":"In an earlier article, I showed how we can generate poetry (with limitations, of course!) using my iLangGen framework. That implementation (in Lisp) made use of iLexicon, a large dictionary of English words, which I have been building over the years. I subsequently ported iLexicon to Prolog and it now\u2026","rel":"","context":"In &quot;Natural Language Processing&quot;","block_context":{"text":"Natural Language Processing","link":"https:\/\/www.rangakrish.com\/index.php\/category\/natural-language-processing\/"},"img":{"alt_text":"Generation Logic","src":"https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2019\/08\/Code3.jpg?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2019\/08\/Code3.jpg?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2019\/08\/Code3.jpg?resize=525%2C300&ssl=1 1.5x"},"classes":[]},{"id":1711,"url":"https:\/\/www.rangakrish.com\/index.php\/2019\/09\/01\/poetry-in-prolog-part-2\/","url_meta":{"origin":2366,"position":1},"title":"Poetry in Prolog: Part-2","author":"admin","date":"September 1, 2019","format":false,"excerpt":"In an earlier post, I showed how Prolog can be used to generate poetry, making use of my \"iLexicon\". I want to continue the discussion today by giving another example, this time based on the theme of sounds emitted by various animals and birds. As hinted in my previous articles,\u2026","rel":"","context":"In &quot;Natural Language Processing&quot;","block_context":{"text":"Natural Language Processing","link":"https:\/\/www.rangakrish.com\/index.php\/category\/natural-language-processing\/"},"img":{"alt_text":"The DCG Grammar","src":"https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2019\/09\/code.jpg?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2019\/09\/code.jpg?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2019\/09\/code.jpg?resize=525%2C300&ssl=1 1.5x"},"classes":[]},{"id":1757,"url":"https:\/\/www.rangakrish.com\/index.php\/2019\/10\/13\/conjugating-phrasal-verbs\/","url_meta":{"origin":2366,"position":2},"title":"Conjugating Phrasal Verbs","author":"admin","date":"October 13, 2019","format":false,"excerpt":"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\u2026","rel":"","context":"In &quot;Natural Language Processing&quot;","block_context":{"text":"Natural Language Processing","link":"https:\/\/www.rangakrish.com\/index.php\/category\/natural-language-processing\/"},"img":{"alt_text":"Conjugation of \"Turn on\"","src":"https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2019\/10\/Example3.jpg?resize=350%2C200&ssl=1","width":350,"height":200},"classes":[]},{"id":1727,"url":"https:\/\/www.rangakrish.com\/index.php\/2019\/09\/15\/exploring-word-patterns\/","url_meta":{"origin":2366,"position":3},"title":"Exploring Word Patterns","author":"admin","date":"September 15, 2019","format":false,"excerpt":"Working with word patterns can be an exciting (and challenging) creative activity. Such patterns come into picture while playing word games, solving word puzzles or even writing poetry. It is precisely to facilitate such tasks that I am building my \"iLexicon\" system.\u00a0 One popular word game goes like this: The\u2026","rel":"","context":"In &quot;Natural Language Processing&quot;","block_context":{"text":"Natural Language Processing","link":"https:\/\/www.rangakrish.com\/index.php\/category\/natural-language-processing\/"},"img":{"alt_text":"Prolog Predicates for Word Pair Generation","src":"https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2019\/09\/Code.jpg?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2019\/09\/Code.jpg?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2019\/09\/Code.jpg?resize=525%2C300&ssl=1 1.5x"},"classes":[]},{"id":1741,"url":"https:\/\/www.rangakrish.com\/index.php\/2019\/09\/29\/generating-verb-conjugations\/","url_meta":{"origin":2366,"position":4},"title":"Generating Verb Conjugations","author":"admin","date":"September 29, 2019","format":false,"excerpt":"We have been taught in school that English language has different \u201ctense\u201d 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\u2026","rel":"","context":"In &quot;Natural Language Processing&quot;","block_context":{"text":"Natural Language Processing","link":"https:\/\/www.rangakrish.com\/index.php\/category\/natural-language-processing\/"},"img":{"alt_text":"Full Conjugation - Example3","src":"https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2019\/09\/example3.jpg?resize=350%2C200&ssl=1","width":350,"height":200},"classes":[]},{"id":2315,"url":"https:\/\/www.rangakrish.com\/index.php\/2021\/02\/14\/litedb-a-nosql-database-for-net\/","url_meta":{"origin":2366,"position":5},"title":"LiteDB: A NoSQL Database for .NET","author":"admin","date":"February 14, 2021","format":false,"excerpt":"I have been looking around for a compact embedded NoSQL database library for .NET, to use as the back-end of my \"iLexicon\" system. \"iLexicon\" is written in Lisp and Prolog (I have written a few articles\u00a0on it before). At present, the entire dictionary component (containing over 300,000 word entries) is\u2026","rel":"","context":"In &quot;Programming&quot;","block_context":{"text":"Programming","link":"https:\/\/www.rangakrish.com\/index.php\/category\/programming\/"},"img":{"alt_text":"Using Package Manager to Install LiteDB","src":"https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2021\/02\/Package-Manager-300x98.jpg?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2021\/02\/Package-Manager-300x98.jpg?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2021\/02\/Package-Manager-300x98.jpg?resize=525%2C300&ssl=1 1.5x"},"classes":[]}],"_links":{"self":[{"href":"https:\/\/www.rangakrish.com\/index.php\/wp-json\/wp\/v2\/posts\/2366","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.rangakrish.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.rangakrish.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.rangakrish.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.rangakrish.com\/index.php\/wp-json\/wp\/v2\/comments?post=2366"}],"version-history":[{"count":0,"href":"https:\/\/www.rangakrish.com\/index.php\/wp-json\/wp\/v2\/posts\/2366\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.rangakrish.com\/index.php\/wp-json\/wp\/v2\/media?parent=2366"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.rangakrish.com\/index.php\/wp-json\/wp\/v2\/categories?post=2366"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.rangakrish.com\/index.php\/wp-json\/wp\/v2\/tags?post=2366"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}