{"id":2960,"date":"2022-12-08T15:24:21","date_gmt":"2022-12-08T09:54:21","guid":{"rendered":"https:\/\/www.rangakrish.com\/?p=2960"},"modified":"2022-12-14T15:55:36","modified_gmt":"2022-12-14T10:25:36","slug":"are-rule-based-systems-still-relevant-today","status":"publish","type":"post","link":"https:\/\/www.rangakrish.com\/index.php\/2022\/12\/08\/are-rule-based-systems-still-relevant-today\/","title":{"rendered":"Are Rule-Based Systems Still Relevant Today?"},"content":{"rendered":"<p>Before <em><strong>Machine Learning<\/strong><\/em> came into the mainstream, <em><strong>Rule-based<\/strong><\/em> systems were being used actively to solve complex decision making problems. In fact, <em><strong>Rule engines<\/strong><\/em> were considered to be an exotic component of <em><strong>Artificial Intelligence<\/strong><\/em> and the systems built using these rule engines were called <em><strong>Expert Systems<\/strong><\/em>.<\/p>\n<p>I still remember learning to use <a href=\"https:\/\/en.wikipedia.org\/wiki\/OPS5\" target=\"_blank\" rel=\"noopener\"><em><strong>OPS5<\/strong><\/em><\/a> a few decades ago as part of my course work. It was an enriching experience to represent domain-specific knowledge in a specialized <em><strong>\u201cif-then-else\u201d<\/strong><\/em> format!<\/p>\n<p>Rule-based systems are a good choice when the domain knowledge can be explicitly captured and can be modeled based on a <em><strong>manageable<\/strong><\/em> number of parameters. For example, when a customer applies to a bank for getting a loan, the bank will probably consider the following parameters:<\/p>\n<p style=\"padding-left: 40px;\">(1) Salary<br \/>\n(2) Other incomes &#8211; from movable and immovable assets<br \/>\n(3) Age<br \/>\n(4) How long he has been with the bank<br \/>\n(5) Existing loans, if any<br \/>\n(6) Loan amount<\/p>\n<p>There will probably be a few more parameters, but the list is definitely manageable. Given these parameters, it is possible to come up with a finite number of <em><strong>\u201crules\u201d<\/strong><\/em> to unambiguously determine whether a customer can be sanctioned the loan he is applying for. <em><strong>Health care<\/strong><\/em> is another domain where rule-based systems are used.<\/p>\n<p>Two main advantages of rule-based systems are <em><strong>Transparency<\/strong><\/em> and <em><strong>Explainability<\/strong><\/em>. The system is <em><strong>Transparent<\/strong><\/em> because the rules are all hand-crafted by the knowledge engineer(s) in consultation with domain experts and in the process the mapping of rules to the corresponding domain knowledge is precisely documented. This also helps in <em><strong>Explainability<\/strong><\/em> since the system, when asked by the user to explain its reasoning, can describe the steps it is following. This is very important in building user confidence.<\/p>\n<p>To give an example, I had included a <em><strong>Therapeutics<\/strong><\/em> module in my <a href=\"https:\/\/www.rangakrish.com\/index.php\/2015\/10\/28\/desirable-features-of-homeopathic-software\/\" target=\"_blank\" rel=\"noopener\"><em><strong>iCure<\/strong><\/em><\/a> software to recommend a suitable homeopathic remedy for patients suffering from common cold. This module interacts with the user by asking certain questions regarding the prevailing symptoms. Based on the answers provided, it would then consult its <em><strong>Knowledge base<\/strong><\/em> and recommend a remedy. Here are some sample screenshots:<\/p>\n<figure id=\"attachment_2962\" aria-describedby=\"caption-attachment-2962\" style=\"width: 500px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2022\/12\/Screen1.jpg?ssl=1\"><img data-recalc-dims=\"1\" fetchpriority=\"high\" decoding=\"async\" data-attachment-id=\"2962\" data-permalink=\"https:\/\/www.rangakrish.com\/index.php\/2022\/12\/08\/are-rule-based-systems-still-relevant-today\/screen1-2\/\" data-orig-file=\"https:\/\/www.rangakrish.com\/wp-content\/uploads\/2022\/12\/Screen1.jpg\" data-orig-size=\"482,301\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&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=\"Gathering Symptom Information\" data-image-description=\"&lt;p&gt;Gathering Symptom Information&lt;\/p&gt;\n\" data-image-caption=\"&lt;p&gt;Gathering Symptom Information&lt;\/p&gt;\n\" data-large-file=\"https:\/\/www.rangakrish.com\/wp-content\/uploads\/2022\/12\/Screen1.jpg\" class=\"wp-image-2962\" src=\"https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2022\/12\/Screen1.jpg?resize=500%2C312&#038;ssl=1\" alt=\"Gathering Symptom Information\" width=\"500\" height=\"312\" srcset=\"https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2022\/12\/Screen1.jpg?resize=300%2C187&amp;ssl=1 300w, https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2022\/12\/Screen1.jpg?w=482&amp;ssl=1 482w\" sizes=\"(max-width: 500px) 100vw, 500px\" \/><\/a><figcaption id=\"caption-attachment-2962\" class=\"wp-caption-text\"><strong>Gathering Symptom Information<\/strong><\/figcaption><\/figure>\n<p>At this point, the user can ask the system as to why this question is being asked, by clicking the <em><strong>Why<\/strong><\/em> button. The system will respond appropriately.<\/p>\n<figure id=\"attachment_2963\" aria-describedby=\"caption-attachment-2963\" style=\"width: 500px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2022\/12\/Screen2.jpg?ssl=1\"><img data-recalc-dims=\"1\" decoding=\"async\" data-attachment-id=\"2963\" data-permalink=\"https:\/\/www.rangakrish.com\/index.php\/2022\/12\/08\/are-rule-based-systems-still-relevant-today\/screen2-2\/\" data-orig-file=\"https:\/\/www.rangakrish.com\/wp-content\/uploads\/2022\/12\/Screen2.jpg\" data-orig-size=\"555,305\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&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=\"Explanation by the System\" data-image-description=\"&lt;p&gt;Explanation by the System&lt;\/p&gt;\n\" data-image-caption=\"&lt;p&gt;Explanation by the System&lt;\/p&gt;\n\" data-large-file=\"https:\/\/www.rangakrish.com\/wp-content\/uploads\/2022\/12\/Screen2.jpg\" class=\"wp-image-2963\" src=\"https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2022\/12\/Screen2.jpg?resize=500%2C275&#038;ssl=1\" alt=\"Explanation by the System\" width=\"500\" height=\"275\" srcset=\"https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2022\/12\/Screen2.jpg?resize=300%2C165&amp;ssl=1 300w, https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2022\/12\/Screen2.jpg?w=555&amp;ssl=1 555w\" sizes=\"(max-width: 500px) 100vw, 500px\" \/><\/a><figcaption id=\"caption-attachment-2963\" class=\"wp-caption-text\"><strong>Explanation by the System<\/strong><\/figcaption><\/figure>\n<p>The user selects his answer from the given list and continues. The system then asks another question based on his earlier reply.<\/p>\n<figure id=\"attachment_2964\" aria-describedby=\"caption-attachment-2964\" style=\"width: 500px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2022\/12\/Screen3.jpg?ssl=1\"><img data-recalc-dims=\"1\" decoding=\"async\" data-attachment-id=\"2964\" data-permalink=\"https:\/\/www.rangakrish.com\/index.php\/2022\/12\/08\/are-rule-based-systems-still-relevant-today\/screen3-2\/\" data-orig-file=\"https:\/\/www.rangakrish.com\/wp-content\/uploads\/2022\/12\/Screen3.jpg\" data-orig-size=\"482,301\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&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=\"Another Question from the System\" data-image-description=\"&lt;p&gt;Another Question from the System&lt;\/p&gt;\n\" data-image-caption=\"&lt;p&gt;Another Question from the System&lt;\/p&gt;\n\" data-large-file=\"https:\/\/www.rangakrish.com\/wp-content\/uploads\/2022\/12\/Screen3.jpg\" class=\"wp-image-2964\" src=\"https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2022\/12\/Screen3.jpg?resize=500%2C312&#038;ssl=1\" alt=\"Another Question from the System\" width=\"500\" height=\"312\" srcset=\"https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2022\/12\/Screen3.jpg?resize=300%2C187&amp;ssl=1 300w, https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2022\/12\/Screen3.jpg?w=482&amp;ssl=1 482w\" sizes=\"(max-width: 500px) 100vw, 500px\" \/><\/a><figcaption id=\"caption-attachment-2964\" class=\"wp-caption-text\"><strong>Another Question from the System<\/strong><\/figcaption><\/figure>\n<p>As earlier, if the user wants, he can ask for the reason and the system will respond.<\/p>\n<figure id=\"attachment_2966\" aria-describedby=\"caption-attachment-2966\" style=\"width: 500px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2022\/12\/Screen4.jpg?ssl=1\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" data-attachment-id=\"2966\" data-permalink=\"https:\/\/www.rangakrish.com\/index.php\/2022\/12\/08\/are-rule-based-systems-still-relevant-today\/screen4\/\" data-orig-file=\"https:\/\/www.rangakrish.com\/wp-content\/uploads\/2022\/12\/Screen4.jpg\" data-orig-size=\"525,302\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&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=\"Explanation\" data-image-description=\"&lt;p&gt;Explanation&lt;\/p&gt;\n\" data-image-caption=\"&lt;p&gt;Explanation&lt;\/p&gt;\n\" data-large-file=\"https:\/\/www.rangakrish.com\/wp-content\/uploads\/2022\/12\/Screen4.jpg\" class=\"wp-image-2966\" src=\"https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2022\/12\/Screen4.jpg?resize=500%2C288&#038;ssl=1\" alt=\"Explanation\" width=\"500\" height=\"288\" srcset=\"https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2022\/12\/Screen4.jpg?resize=300%2C173&amp;ssl=1 300w, https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2022\/12\/Screen4.jpg?w=525&amp;ssl=1 525w\" sizes=\"(max-width: 500px) 100vw, 500px\" \/><\/a><figcaption id=\"caption-attachment-2966\" class=\"wp-caption-text\"><strong>Explanation<\/strong><\/figcaption><\/figure>\n<p>This interaction will continue till the system has gathered adequate information pertaining to the illness, in this case common cold. Finally, it will present its remedy choice.<\/p>\n<figure id=\"attachment_2967\" aria-describedby=\"caption-attachment-2967\" style=\"width: 500px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2022\/12\/Screen5.jpg?ssl=1\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" data-attachment-id=\"2967\" data-permalink=\"https:\/\/www.rangakrish.com\/index.php\/2022\/12\/08\/are-rule-based-systems-still-relevant-today\/screen5\/\" data-orig-file=\"https:\/\/www.rangakrish.com\/wp-content\/uploads\/2022\/12\/Screen5.jpg\" data-orig-size=\"568,569\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&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=\"Suggested Remedy\" data-image-description=\"&lt;p&gt;Suggested Remedy&lt;\/p&gt;\n\" data-image-caption=\"&lt;p&gt;Suggested Remedy&lt;\/p&gt;\n\" data-large-file=\"https:\/\/www.rangakrish.com\/wp-content\/uploads\/2022\/12\/Screen5.jpg\" class=\"wp-image-2967\" src=\"https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2022\/12\/Screen5.jpg?resize=500%2C501&#038;ssl=1\" alt=\"Suggested Remedy\" width=\"500\" height=\"501\" srcset=\"https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2022\/12\/Screen5.jpg?resize=300%2C300&amp;ssl=1 300w, https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2022\/12\/Screen5.jpg?resize=150%2C150&amp;ssl=1 150w, https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2022\/12\/Screen5.jpg?w=568&amp;ssl=1 568w\" sizes=\"(max-width: 500px) 100vw, 500px\" \/><\/a><figcaption id=\"caption-attachment-2967\" class=\"wp-caption-text\"><strong>Suggested Remedy<\/strong><\/figcaption><\/figure>\n<p>The system also creates a log of the questions and answers for later review.<\/p>\n<figure id=\"attachment_2968\" aria-describedby=\"caption-attachment-2968\" style=\"width: 500px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2022\/12\/Screen6.jpg?ssl=1\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" data-attachment-id=\"2968\" data-permalink=\"https:\/\/www.rangakrish.com\/index.php\/2022\/12\/08\/are-rule-based-systems-still-relevant-today\/screen6\/\" data-orig-file=\"https:\/\/www.rangakrish.com\/wp-content\/uploads\/2022\/12\/Screen6.jpg\" data-orig-size=\"568,569\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&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=\"Log of the Interaction\" data-image-description=\"&lt;p&gt;Log of the Interaction&lt;\/p&gt;\n\" data-image-caption=\"&lt;p&gt;Log of the Interaction&lt;\/p&gt;\n\" data-large-file=\"https:\/\/www.rangakrish.com\/wp-content\/uploads\/2022\/12\/Screen6.jpg\" class=\"wp-image-2968\" src=\"https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2022\/12\/Screen6.jpg?resize=500%2C501&#038;ssl=1\" alt=\"Log of the Interaction\" width=\"500\" height=\"501\" srcset=\"https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2022\/12\/Screen6.jpg?resize=300%2C300&amp;ssl=1 300w, https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2022\/12\/Screen6.jpg?resize=150%2C150&amp;ssl=1 150w, https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2022\/12\/Screen6.jpg?w=568&amp;ssl=1 568w\" sizes=\"(max-width: 500px) 100vw, 500px\" \/><\/a><figcaption id=\"caption-attachment-2968\" class=\"wp-caption-text\"><strong>Log of the Interaction<\/strong><\/figcaption><\/figure>\n<p>As the above shows, many of the rule-based systems work in an interactive <em><strong>Question-Answer<\/strong><\/em> mode when solving a problem. It is almost like the users are interacting with a human expert.<\/p>\n<p>A major challenge In building a large rule-based system is to maintain and enhance the system\u2019s <em><strong>knowledge-base<\/strong><\/em> periodically. When a new piece of <em><strong>knowledge<\/strong><\/em> needs to be included, sufficient care has to be taken to ensure that the new rules are <em><strong>consistent<\/strong><\/em> with existing rules. It is also likely that rules may have to be refactored to facilitate efficient inferencing. The process is not very different from the standard software development cycle. In my experience, I have noticed that any such system with more than a couple of hundred rules is quite difficult to maintain. Of course, proper tooling can mitigate the problems to some extent.<\/p>\n<p>What are some popular rule engines in use today? <a href=\"https:\/\/www.drools.org\" target=\"_blank\" rel=\"noopener\"><em><strong>Drools<\/strong><\/em><\/a> is a <em><strong>Java-based<\/strong><\/em> engine. <a href=\"https:\/\/www.clipsrules.net\" target=\"_blank\" rel=\"noopener\"><em><strong>Clips<\/strong><\/em><\/a> is a <em><strong>C-based<\/strong><\/em> public domain software. My favourite is <a href=\"http:\/\/www.lispworks.com\/products\/knowledgeworks.html\" target=\"_blank\" rel=\"noopener\"><em><strong>KnowledgeWorks<\/strong><\/em><\/a> from <a href=\"http:\/\/www.lispworks.com\" target=\"_blank\" rel=\"noopener\"><em><strong>LispWorks<\/strong><\/em><\/a>. It is <em><strong>Lisp-based<\/strong><\/em> and quite expressive and powerful! I have used it in a couple of projects and I am very pleased with its capabilities. Of course, there are several more engines out there.<\/p>\n<p>For those who have a data set that contains input-output relationship and would like to model this as a set of <em><strong>\u201crules\u201d<\/strong><\/em>, there are <a href=\"https:\/\/en.wikipedia.org\/wiki\/Rule_induction\" target=\"_blank\" rel=\"noopener\"><em><strong>Rule Induction<\/strong><\/em><\/a> tools available. This does not mean that it is better to convert all data sets into rules. In fact, some problems are better solved by <em><strong>Machine Learning\/Deep Learning<\/strong><\/em>. <em><strong>Image recognition<\/strong><\/em> is one such example.<\/p>\n<p>In a nutshell, <em><strong>Rule-based<\/strong> <\/em>systems are relevant and even preferred if the domain knowledge can be represented conveniently in the form of <em><strong>if-then-else<\/strong><\/em> rules and when the number of variables\/parameters is not too large. The main advantage is <em><strong>explainability<\/strong><\/em>. A lot of research is being done in introducing <em><strong>explainability<\/strong><\/em> in <em><strong>ML\/Deep Learning<\/strong><\/em> systems, but as of now rule-based systems perform better in this area.<\/p>\n<p>Have a nice weekend!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Before Machine Learning came into the mainstream, Rule-based systems were being used actively to solve complex decision making problems. In fact, Rule engines were considered to be an exotic component of Artificial Intelligence and the systems built using these rule engines were called Expert Systems. I still remember learning to use OPS5 a few decades [&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_post_was_ever_published":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}},"categories":[162,17],"tags":[339,343,25,340,341,342],"class_list":["post-2960","post","type-post","status-publish","format-standard","hentry","category-knowledge-representation","category-programming","tag-expert-system","tag-explainability","tag-homeopathy","tag-rule-engine","tag-rule-based-system","tag-transparency"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p9OLnF-LK","jetpack-related-posts":[{"id":2986,"url":"https:\/\/www.rangakrish.com\/index.php\/2023\/01\/11\/book-review-adventures-in-rule-based-programming-a-clips-tutorial\/","url_meta":{"origin":2960,"position":0},"title":"Book Review: Adventures in Rule-Based Programming &#8211; A CLIPS Tutorial","author":"admin","date":"January 11, 2023","format":false,"excerpt":"Title: Adventures in Rule-Based Programming - A CLIPS Tutorial Author: Gary Riley Publisher: Secret Society Software, LLC Year: 2022 In an earlier article, I had talked about the relevance of Rule-based systems today. In that article I had also listed a few Rule engines that are popular and widely used.\u2026","rel":"","context":"In &quot;Knowledge Representation&quot;","block_context":{"text":"Knowledge Representation","link":"https:\/\/www.rangakrish.com\/index.php\/category\/knowledge-representation\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2023\/01\/Cover-188x300.png?resize=350%2C200&ssl=1","width":350,"height":200},"classes":[]},{"id":4265,"url":"https:\/\/www.rangakrish.com\/index.php\/2026\/03\/22\/counting-sentences-an-implementation-in-c20\/","url_meta":{"origin":2960,"position":1},"title":"Counting Sentences: An Implementation in C++20","author":"admin","date":"March 22, 2026","format":false,"excerpt":"Counting the number of sentences in a given paragraph appears rather simple on the surface - look for the common punctuation marks: \u201c.?!\u201d. Only when you dig deeper, you will know that it is really not that simple. For example, consider this text: \u201cPeter met Dr.James at 3 p.m.\u201d How\u2026","rel":"","context":"In &quot;C++&quot;","block_context":{"text":"C++","link":"https:\/\/www.rangakrish.com\/index.php\/category\/c\/"},"img":{"alt_text":"Regular Expressions","src":"https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2026\/03\/regex-300x91.png?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2026\/03\/regex-300x91.png?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2026\/03\/regex-300x91.png?resize=525%2C300&ssl=1 1.5x"},"classes":[]},{"id":534,"url":"https:\/\/www.rangakrish.com\/index.php\/2017\/05\/22\/definite-clause-grammars-dcg-in-lisp\/","url_meta":{"origin":2960,"position":2},"title":"Definite Clause Grammars (DCG) in Lisp","author":"admin","date":"May 22, 2017","format":false,"excerpt":"Definite Clause Grammars (DCG) are an elegant formalism for specifying context free grammars, and part of their popularity is due to their support in the Prolog language. Most books on Natural Language processing usually include a brief coverage of DCGs, even though Natural languages are not context-free. Because of the\u2026","rel":"","context":"In &quot;LISP&quot;","block_context":{"text":"LISP","link":"https:\/\/www.rangakrish.com\/index.php\/category\/lisp\/"},"img":{"alt_text":"DCG Grammar","src":"https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2017\/05\/DCG-Grammar.png?resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2017\/05\/DCG-Grammar.png?resize=350%2C200 1x, https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2017\/05\/DCG-Grammar.png?resize=525%2C300 1.5x"},"classes":[]},{"id":1863,"url":"https:\/\/www.rangakrish.com\/index.php\/2020\/01\/02\/book-review-automatic-text-simplification\/","url_meta":{"origin":2960,"position":3},"title":"Book Review &#8211; Automatic Text Simplification","author":"admin","date":"January 2, 2020","format":false,"excerpt":"Title: Automatic Text Simplification Author: Horacio Saggino Publisher: Morgan & Claypool Publishers Year: 2017 Automatic Text Simplification is an active area of research in NLP and has been going on for over 20 years. The idea is to transform a given text T1 into text T2 such that T2 is\u2026","rel":"","context":"In &quot;Book Review&quot;","block_context":{"text":"Book Review","link":"https:\/\/www.rangakrish.com\/index.php\/category\/book-review\/"},"img":{"alt_text":"Automatic Text Simplification","src":"https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2020\/01\/IMG_1496-edited-225x300.jpeg?resize=350%2C200&ssl=1","width":350,"height":200},"classes":[]},{"id":2927,"url":"https:\/\/www.rangakrish.com\/index.php\/2022\/10\/20\/why-learn-lisp\/","url_meta":{"origin":2960,"position":4},"title":"Why Learn Lisp?","author":"admin","date":"October 20, 2022","format":false,"excerpt":"In the last article, I had shared my views on why programmers should learn Prolog, preferably as the first language. What language should one learn next? I strongly pitch for Lisp, to be precise, \u201cCommon Lisp\u201d. Lisp happens to be the second oldest (1958) programming language, only after Fortran (1957)!\u2026","rel":"","context":"In &quot;LISP&quot;","block_context":{"text":"LISP","link":"https:\/\/www.rangakrish.com\/index.php\/category\/lisp\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":1109,"url":"https:\/\/www.rangakrish.com\/index.php\/2018\/10\/28\/flora-2-an-expressive-knowledge-representation-system\/","url_meta":{"origin":2960,"position":5},"title":"Flora-2: An Expressive Knowledge Representation System","author":"admin","date":"October 28, 2018","format":false,"excerpt":"I am always on the lookout for a good Knowledge Representation (KR) system that facilitates modeling and reasoning about real-world knowledge. I have experience with\u00a0KnowledgeWorks\u00a0available in LispWorks\u00a0since I have used it in a few projects. I have also taken a cursory look at PowerLoom\u00a0and Racer. Last week, I came across\u2026","rel":"","context":"In &quot;Flora-2&quot;","block_context":{"text":"Flora-2","link":"https:\/\/www.rangakrish.com\/index.php\/category\/flora-2\/"},"img":{"alt_text":"Quitting Flora-2 Session","src":"https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2018\/10\/quitting.png?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2018\/10\/quitting.png?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2018\/10\/quitting.png?resize=525%2C300&ssl=1 1.5x"},"classes":[]}],"_links":{"self":[{"href":"https:\/\/www.rangakrish.com\/index.php\/wp-json\/wp\/v2\/posts\/2960","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=2960"}],"version-history":[{"count":0,"href":"https:\/\/www.rangakrish.com\/index.php\/wp-json\/wp\/v2\/posts\/2960\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.rangakrish.com\/index.php\/wp-json\/wp\/v2\/media?parent=2960"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.rangakrish.com\/index.php\/wp-json\/wp\/v2\/categories?post=2960"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.rangakrish.com\/index.php\/wp-json\/wp\/v2\/tags?post=2960"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}