{"id":520,"date":"2017-05-07T01:56:57","date_gmt":"2017-05-07T01:56:57","guid":{"rendered":"http:\/\/www.rangakrish.com\/?p=520"},"modified":"2017-05-22T06:07:50","modified_gmt":"2017-05-22T06:07:50","slug":"accessing-dictionary-rest-api-using-lisp","status":"publish","type":"post","link":"https:\/\/www.rangakrish.com\/index.php\/2017\/05\/07\/accessing-dictionary-rest-api-using-lisp\/","title":{"rendered":"Accessing Dictionary API Using Lisp"},"content":{"rendered":"<p>A few days ago when I was searching for good online dictionaries, I stumbled upon <em><strong><a href=\"https:\/\/developer.oxforddictionaries.com\/\" target=\"_blank\">Oxford Dictionary API for developers<\/a>.<\/strong><\/em> I decided to check it out and registered for a free account. This allows me to make 3000 API calls in a month. Since I am not planning to use this service commercially, that limit is more than sufficient for me.<\/p>\n<p>I decided to write a convenient Lisp client-side wrapper to access the various features exposed by the API layer. With Edi Weitz&#8217;s <em><strong><a href=\"http:\/\/weitz.de\/drakma\/\" target=\"_blank\">Drakma<\/a><\/strong><\/em> and a couple of other utilities, this is a fairly straightforward job. I used <em><strong><a href=\"http:\/\/www.lispworks.com\/\" target=\"_blank\">LispWorks 7.0<\/a><\/strong><\/em> for this implementation.<\/p>\n<p>Although I have not implemented the full API set, I thought I would share what I have done so far. Hence this post.<\/p>\n<p>I started with the <a href=\"https:\/\/developer.oxforddictionaries.com\/documentation\" target=\"_blank\"><em><strong>wordlist<\/strong> <\/em><\/a>API because that would allow me to fetch words using filters (specific lexical categories, domains, etc.). I also decided to support the common options in the filters group.<\/p>\n<p>Let us try to fetch 10 conjunctions:<\/p>\n<p><span style=\"color: #800000;\"><strong>CL-USER 1 &gt; (get-wordlist (make-wordlist-filter :lex-category &#8216;(conjunction)) :limit 10)<\/strong><\/span><br \/>\n<strong><span style=\"color: #0000ff;\"> ((&#8220;%27cept&#8221; . &#8220;&#8216;cept&#8221;) (&#8220;acause&#8221; . &#8220;acause&#8221;) (&#8220;after&#8221; . &#8220;after&#8221;) (&#8220;albeit&#8221; . &#8220;albeit&#8221;) (&#8220;although&#8221; . &#8220;although&#8221;) (&#8220;and&#8221; . &#8220;and&#8221;) (&#8220;as&#8221; . &#8220;as&#8221;) (&#8220;assuming&#8221; . &#8220;assuming&#8221;) (&#8220;because&#8221; . &#8220;because&#8221;) (&#8220;before&#8221; . &#8220;before&#8221;))<\/span><\/strong><br \/>\n<strong><span style=\"color: #0000ff;\"> ((:LIMIT . 10) (:PROVIDER . &#8220;Oxford University Press&#8221;) (:OFFSET . 0) (:SOURCE-LANGUAGE . &#8220;en&#8221;) (:TOTAL . 68))<\/span><\/strong><\/p>\n<p>This function returns two values: First is the list of <em><strong>(&lt;word-id&gt; &lt;word&gt;)<\/strong><\/em> pairs. The second is metadata about the result. In this case, the metadata shows that the dictionary contains 68 conjunctions, but our request was limited to just 10.<\/p>\n<p>It is possible to specify multiple categories, implying <em><strong>anding<\/strong><\/em> of the categories.<\/p>\n<p><span style=\"color: #800000;\"><strong>CL-USER 1 &gt; (get-wordlist (make-wordlist-filter :lex-category &#8216;(noun verb)) :limit 10)<\/strong><\/span><br \/>\n<strong><span style=\"color: #0000ff;\"> ((&#8220;abandon&#8221; . &#8220;abandon&#8221;) (&#8220;abode&#8221; . &#8220;abode&#8221;) (&#8220;abort&#8221; . &#8220;abort&#8221;) (&#8220;about-turn&#8221; . &#8220;about-turn&#8221;) (&#8220;abseil&#8221; . &#8220;abseil&#8221;) (&#8220;abstract&#8221; . &#8220;abstract&#8221;) (&#8220;abuse&#8221; . &#8220;abuse&#8221;) (&#8220;accent&#8221; . &#8220;accent&#8221;) (&#8220;access&#8221; . &#8220;access&#8221;) (&#8220;accession&#8221; . &#8220;accession&#8221;))<\/span><\/strong><br \/>\n<strong><span style=\"color: #0000ff;\"> ((:OFFSET . 0) (:LIMIT . 10) (:SOURCE-LANGUAGE . &#8220;en&#8221;) (:PROVIDER . &#8220;Oxford University Press&#8221;) (:TOTAL . 5709))<\/span><\/strong><\/p>\n<p>The result shows 10 nouns that are also verbs (out of a total of 5709 such words).<\/p>\n<p>Filtering based on domains is also possible.<\/p>\n<p><span style=\"color: #800000;\"><strong>CL-USER 6 &gt; (get-wordlist (make-wordlist-filter :domains &#8216;(Buddhism)) :limit 10)<\/strong><\/span><br \/>\n<strong><span style=\"color: #0000ff;\"> ((&#8220;acharya&#8221; . &#8220;acharya&#8221;) (&#8220;ahimsa&#8221; . &#8220;ahimsa&#8221;) (&#8220;ananda&#8221; . &#8220;ananda&#8221;) (&#8220;arhat&#8221; . &#8220;arhat&#8221;) (&#8220;asoka&#8221; . &#8220;asoka&#8221;) (&#8220;asoka pillar&#8221; . &#8220;asoka_pillar&#8221;) (&#8220;bardo&#8221; . &#8220;bardo&#8221;) (&#8220;bhikkhu&#8221; . &#8220;bhikkhu&#8221;) (&#8220;bodhgaya&#8221; . &#8220;bodhgaya&#8221;) (&#8220;bodhisattva&#8221; . &#8220;bodhisattva&#8221;))<\/span><\/strong><br \/>\n<strong><span style=\"color: #0000ff;\"> ((:OFFSET . 0) (:LIMIT . 10) (:SOURCE-LANGUAGE . &#8220;en&#8221;) (:PROVIDER . &#8220;Oxford University Press&#8221;) (:TOTAL . 87))<\/span><\/strong><\/p>\n<p>We can combine domain and lexical category when filtering words.<\/p>\n<p><span style=\"color: #800000;\"><strong>CL-USER 7 &gt; (get-wordlist (make-wordlist-filter :lex-category &#8216;(verb) :domains &#8216;(Palaeontology)) :limit 10)<\/strong><\/span><br \/>\n<strong><span style=\"color: #0000ff;\"> ((&#8220;fossilize&#8221; . &#8220;fossilize&#8221;) (&#8220;permineralize&#8221; . &#8220;permineralize&#8221;) (&#8220;procline&#8221; . &#8220;procline&#8221;))<\/span><\/strong><br \/>\n<strong><span style=\"color: #0000ff;\"> ((:OFFSET . 0) (:LIMIT . 10) (:SOURCE-LANGUAGE . &#8220;en&#8221;) (:PROVIDER . &#8220;Oxford University Press&#8221;) (:TOTAL . 3))<\/span><\/strong><\/p>\n<p>The dictionary has information about just three words that are verbs in the domain of\u00a0 <em><strong>palaentology<\/strong><\/em>.<\/p>\n<p>One more filter type is called <em><strong>Registers<\/strong><\/em>. This allows us to select words in the categories of <em><strong>Archaic<\/strong><\/em>, <em><strong>Euphemism<\/strong><\/em>, <em><strong>Formal<\/strong><\/em>, etc.<\/p>\n<p><span style=\"color: #800000;\"><strong>CL-USER 27 &gt; (get-wordlist (make-wordlist-filter :registers &#8216;(formal)) :limit 10)<\/strong><\/span><br \/>\n<strong><span style=\"color: #0000ff;\"> ((&#8220;ab_initio&#8221; . &#8220;ab initio&#8221;) (&#8220;abjuration&#8221; . &#8220;abjuration&#8221;) (&#8220;abjure&#8221; . &#8220;abjure&#8221;) (&#8220;ablution&#8221; . &#8220;ablution&#8221;) (&#8220;ablutionary&#8221; . &#8220;ablutionary&#8221;) (&#8220;abnegate&#8221; . &#8220;abnegate&#8221;) (&#8220;abnegator&#8221; . &#8220;abnegator&#8221;) (&#8220;abode&#8221; . &#8220;abode&#8221;) (&#8220;abominate&#8221; . &#8220;abominate&#8221;) (&#8220;abominator&#8221; . &#8220;abominator&#8221;))<\/span><\/strong><br \/>\n<strong><span style=\"color: #0000ff;\"> ((:LIMIT . 10) (:PROVIDER . &#8220;Oxford University Press&#8221;) (:OFFSET . 0) (:SOURCE-LANGUAGE . &#8220;en&#8221;) (:TOTAL . 678))<\/span><\/strong><\/p>\n<p>OK, how do we know the allowed values for lexical categories, domains and registers? There are APIs for that as well.<\/p>\n<p><span style=\"color: #800000;\"><strong>CL-USER 28 &gt; (get-lexical-categories)<\/strong><\/span><br \/>\n<strong><span style=\"color: #0000ff;\"> (&#8220;Adjective&#8221; &#8220;Adverb&#8221; &#8220;Combining Form&#8221; &#8220;Conjunction&#8221; &#8220;Contraction&#8221; &#8220;Determiner&#8221; &#8220;Idiomatic&#8221; &#8220;Interjection&#8221; &#8220;Noun&#8221; &#8220;Numeral&#8221; &#8230;. &#8220;Prefix&#8221; &#8220;Preposition&#8221; &#8220;Pronoun&#8221; &#8220;Residual&#8221; &#8220;Suffix&#8221; &#8220;Verb&#8221;)<\/span><\/strong><\/p>\n<p><span style=\"color: #800000;\"><strong>CL-USER 8 &gt; (get-registers)<\/strong><\/span><br \/>\n<strong><span style=\"color: #0000ff;\"> (&#8220;Allusive&#8221; &#8220;Allusively&#8221; &#8220;Archaic&#8221; &#8220;Army Slang&#8221; &#8220;Black English&#8221; &#8220;Cant&#8221; &#8220;Children%27S Slang&#8221; &#8220;Coarse Slang&#8221; &#8220;College Slang&#8221; &#8220;Concrete&#8221; &#8220;Contemptuous&#8221; &#8220;Criminals%27 Slang&#8221; &#8220;Dated&#8221; &#8220;Depreciative&#8221; &#8220;Depreciatively&#8221; &#8220;Derogatory&#8221; &#8220;Dialect&#8221; &#8220;Dismissive&#8221; &#8220;Disused&#8221; &#8220;Emphatically&#8221; &#8220;Especially&#8221; &#8220;Euphemism&#8221; &#8220;Euphemistic&#8221; &#8220;Figurative&#8221; &#8220;Formal&#8221; &#8220;Generally&#8221; &#8220;Historical&#8221; &#8220;Humorous&#8221; &#8230;&#8230;.)<\/span><\/strong><\/p>\n<p><span style=\"color: #800000;\"><strong>CL-USER 5 &gt; (get-domains)<\/strong><\/span><br \/>\n<strong><span style=\"color: #0000ff;\"> (&#8220;Air Force&#8221; &#8220;Alcoholic&#8221; &#8220;American Civil War&#8221; &#8220;American Football&#8221; &#8220;Amerindian&#8221; &#8220;Anatomy&#8221; &#8220;Ancient History&#8221; &#8220;Angling&#8221; &#8220;Anthropology&#8221; &#8220;Archaeology&#8221; &#8220;Archery&#8221; &#8220;Architecture&#8221; &#8220;Art&#8221; &#8220;Artefacts&#8221; &#8220;Arts And Humanities&#8221; &#8220;Astrology&#8221; &#8220;Astronomy&#8221; &#8220;Athletics&#8221; &#8220;Audio&#8221; &#8220;Australian Rules&#8221; &#8220;Aviation&#8221; &#8220;Ballet&#8221; &#8220;Baseball&#8221; &#8220;Basketball&#8221; &#8220;Bellringing&#8221; &#8220;Biblical&#8221; &#8220;Billiards&#8221; &#8220;Biochemistry&#8221; &#8220;Biology&#8221; &#8220;Bird&#8221; &#8230;.)<\/span><\/strong><\/p>\n<p>I have omitted several entries in the result set to conserve space.<\/p>\n<p>Sometimes we might be interested in fetching words that start with a known prefix, say &#8220;sug&#8221;, and may be, in a specific lexical category. We can do this easily:<\/p>\n<p><span style=\"color: #800000;\"><strong>CL-USER 30 &gt; (get-wordlist-prefix &#8220;sug&#8221; (make-wordlist-filter :lex-category &#8216;(noun)) :limit 20)<\/strong><\/span><br \/>\n<strong><span style=\"color: #0000ff;\"> ((&#8220;sugan&#8221; . &#8220;sugan&#8221;) (&#8220;sugar&#8221; . &#8220;sugar&#8221;) (&#8220;sugar_apple&#8221; . &#8220;sugar apple&#8221;) (&#8220;sugar_bag&#8221; . &#8220;sugar bag&#8221;) (&#8220;sugar_bean&#8221; . &#8220;sugar bean&#8221;) (&#8220;sugar_beet&#8221; . &#8220;sugar beet&#8221;) (&#8220;sugarbird&#8221; . &#8220;sugarbird&#8221;) (&#8220;sugar_bush&#8221; . &#8220;sugar bush&#8221;) (&#8220;sugar_cane&#8221; . &#8220;sugar cane&#8221;) (&#8220;sugar_cookie&#8221; . &#8220;sugar cookie&#8221;) (&#8220;sugarcraft&#8221; . &#8220;sugarcraft&#8221;) (&#8220;sugar_cube&#8221; . &#8220;sugar cube&#8221;) (&#8220;sugar_daddy&#8221; . &#8220;sugar daddy&#8221;) (&#8220;sugar_glider&#8221; . &#8220;sugar glider&#8221;) (&#8220;sugar_gum&#8221; . &#8220;sugar gum&#8221;) (&#8220;sugariness&#8221; . &#8220;sugariness&#8221;) (&#8220;sugaring&#8221; . &#8220;sugaring&#8221;) (&#8220;sugar_kelp&#8221; . &#8220;sugar kelp&#8221;) (&#8220;sugarloaf&#8221; . &#8220;sugarloaf&#8221;) (&#8220;sugar_loaf_mountain&#8221; . &#8220;sugar loaf mountain&#8221;))<\/span><\/strong><br \/>\n<strong><span style=\"color: #0000ff;\"> ((:OFFSET . 0) (:LIMIT . 20) (:SOURCE-LANGUAGE . &#8220;en&#8221;) (:PROVIDER . &#8220;Oxford University Press&#8221;) (:TOTAL . 42))<\/span><\/strong><\/p>\n<p>You can even restrict it to a specific domain:<\/p>\n<p><span style=\"color: #800000;\"><strong>CL-USER 35 &gt; (get-wordlist-prefix &#8220;lith&#8221; (make-wordlist-filter :lex-category &#8216;(noun) :domains &#8216;(medicine)) :limit 20)<\/strong><\/span><br \/>\n<strong><span style=\"color: #0000ff;\"> ((&#8220;lithotomy_position&#8221; . &#8220;lithotomy position&#8221;))<\/span><\/strong><br \/>\n<strong><span style=\"color: #0000ff;\"> ((:OFFSET . 0) (:LIMIT . 20) (:SOURCE-LANGUAGE . &#8220;en&#8221;) (:PROVIDER . &#8220;Oxford University Press&#8221;) (:TOTAL . 1))<\/span><\/strong><\/p>\n<p>As a final example, let us try to get the <em><strong>lemma<\/strong><\/em> of a word:<\/p>\n<p><span style=\"color: #800000;\"><strong>CL-USER 38 &gt; (get-lemma &#8220;fumbling&#8221;)<\/strong><\/span><br \/>\n<strong><span style=\"color: #0000ff;\"> (&#8220;fumble&#8221; . &#8220;fumble&#8221;)<\/span><\/strong><\/p>\n<p>The first element of the result pair is the word ID and the second is the word itself.<\/p>\n<p>It was great fun working on this implementation. You can <a href=\"http:\/\/www.rangakrish.com\/downloads\/Oxford Dictionary API.lisp\" target=\"_blank\">download<\/a>\u00a0the source file and play with it. Remember to substitute your <em><strong>&lt;APP-ID&gt;<\/strong><\/em> and <em><strong>&lt;APP-KEY&gt;<\/strong><\/em> before trying the code.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>A few days ago when I was searching for good online dictionaries, I stumbled upon Oxford Dictionary API for developers. I decided to check it out and registered for a free account. This allows me to make 3000 API calls in a month. Since I am not planning to use this service commercially, that limit [&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":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[18,17],"tags":[97,98],"class_list":["post-520","post","type-post","status-publish","format-standard","hentry","category-lisp","category-programming","tag-oxford-dictionary-api","tag-rest-api"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p9OLnF-8o","jetpack-related-posts":[{"id":806,"url":"https:\/\/www.rangakrish.com\/index.php\/2018\/01\/27\/rhyming-words-and-other-interesting-stuff\/","url_meta":{"origin":520,"position":0},"title":"Rhyming Words and Other Interesting Stuff","author":"admin","date":"January 27, 2018","format":false,"excerpt":"If you are into writing poems, stories or essays, or you just have a fascination for words, I encourage you to take a look at Datamuse. Recently I was studying about the structure of various poetic forms, and in the process of browing different sites, I stumbled upon Datamuse. I\u2026","rel":"","context":"In &quot;LISP&quot;","block_context":{"text":"LISP","link":"https:\/\/www.rangakrish.com\/index.php\/category\/lisp\/"},"img":{"alt_text":"Topic Words","src":"https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2018\/01\/Image1.png?resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2018\/01\/Image1.png?resize=350%2C200 1x, https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2018\/01\/Image1.png?resize=525%2C300 1.5x"},"classes":[]},{"id":3050,"url":"https:\/\/www.rangakrish.com\/index.php\/2023\/03\/16\/building-a-xojo-app-to-interact-with-openai-api\/","url_meta":{"origin":520,"position":1},"title":"Building a Xojo App to Interact with OpenAI API","author":"admin","date":"March 16, 2023","format":false,"excerpt":"A few weeks ago I registered with OpenAI to access its services through API and created a secret Key for my use. I then decided to build a simple application to try out the \u201cChat\u201d and \u201cCompletion\u201d models. Since I have several tools at my disposal (RAD Studio, LispWorks, Allegro\u2026","rel":"","context":"In &quot;OpenAI&quot;","block_context":{"text":"OpenAI","link":"https:\/\/www.rangakrish.com\/index.php\/category\/openai\/"},"img":{"alt_text":"Initial Screen","src":"https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2023\/03\/Initial-Screen-300x232.png?resize=350%2C200&ssl=1","width":350,"height":200},"classes":[]},{"id":179,"url":"https:\/\/www.rangakrish.com\/index.php\/2016\/03\/12\/converting-text-to-music\/","url_meta":{"origin":520,"position":2},"title":"Converting Text to Music","author":"admin","date":"March 12, 2016","format":false,"excerpt":"Converting text to music can be fun. Opusmodus\u00a0has a few built-in functions to work with text. Look up the description of text-to-pitch, for example. As described in its documentation, (text-to-pitch '(\"To be, or not to be, that is the question\")) => (((g5 d5) (cs4 e4) (d5 f5) (cs5 d5 g5)\u2026","rel":"","context":"In &quot;LISP&quot;","block_context":{"text":"LISP","link":"https:\/\/www.rangakrish.com\/index.php\/category\/lisp\/"},"img":{"alt_text":"Text to Music","src":"https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2016\/03\/Text-to-Music-204x300.png?resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2016\/03\/Text-to-Music-204x300.png?resize=350%2C200 1x, https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2016\/03\/Text-to-Music-204x300.png?resize=525%2C300 1.5x, https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2016\/03\/Text-to-Music-204x300.png?resize=700%2C400 2x"},"classes":[]},{"id":1475,"url":"https:\/\/www.rangakrish.com\/index.php\/2019\/02\/24\/emotion-detection-using-paralleldots-api\/","url_meta":{"origin":520,"position":3},"title":"Emotion Detection using ParallelDots API","author":"admin","date":"February 24, 2019","format":false,"excerpt":"Last week, I showed how we can use IBM Natural Language Understanding API to identify emotions from given text. Today, I would like to run through the same examples, but using ParallelDots API service. There are wrappers\u00a0in Java, Python, Ruby, C#, and PHP for accessing the REST service. However, I\u2026","rel":"","context":"In &quot;LISP&quot;","block_context":{"text":"LISP","link":"https:\/\/www.rangakrish.com\/index.php\/category\/lisp\/"},"img":{"alt_text":"The Code","src":"https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2019\/02\/Code-1.jpg?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2019\/02\/Code-1.jpg?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2019\/02\/Code-1.jpg?resize=525%2C300&ssl=1 1.5x"},"classes":[]},{"id":1285,"url":"https:\/\/www.rangakrish.com\/index.php\/2018\/12\/09\/parsing-text-with-meaningclouds-text-analytics-api\/","url_meta":{"origin":520,"position":4},"title":"Parsing Text with MeaningCloud&#8217;s Text Analytics API","author":"admin","date":"December 9, 2018","format":false,"excerpt":"There is wide-spread interest in Natural Language Processing (NLP) today, and there are several API services available to cater to this demand. See this article for a fairly detailed list of services. All of them support multiple languages, including English. Today, I am going to share my experience in working\u2026","rel":"","context":"In &quot;LISP&quot;","block_context":{"text":"LISP","link":"https:\/\/www.rangakrish.com\/index.php\/category\/lisp\/"},"img":{"alt_text":"Get Words Function","src":"https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2018\/12\/Get-words.png?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2018\/12\/Get-words.png?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2018\/12\/Get-words.png?resize=525%2C300&ssl=1 1.5x"},"classes":[]},{"id":1349,"url":"https:\/\/www.rangakrish.com\/index.php\/2018\/12\/30\/natural-language-interaction-with-ilexicon-using-luis\/","url_meta":{"origin":520,"position":5},"title":"Natural Language Interaction with iLexicon Using LUIS","author":"admin","date":"December 30, 2018","format":false,"excerpt":"Some time ago, I had written a series of articles on my iLexicon project. It is a Lisp package that supports many interesting queries on English words. When I was discussing this project with a client recently, she asked me if it was possible to query the system in natural\u2026","rel":"","context":"In &quot;LISP&quot;","block_context":{"text":"LISP","link":"https:\/\/www.rangakrish.com\/index.php\/category\/lisp\/"},"img":{"alt_text":"Talking to iLexicon","src":"https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2018\/12\/Code2.png?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2018\/12\/Code2.png?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2018\/12\/Code2.png?resize=525%2C300&ssl=1 1.5x"},"classes":[]}],"_links":{"self":[{"href":"https:\/\/www.rangakrish.com\/index.php\/wp-json\/wp\/v2\/posts\/520","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=520"}],"version-history":[{"count":0,"href":"https:\/\/www.rangakrish.com\/index.php\/wp-json\/wp\/v2\/posts\/520\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.rangakrish.com\/index.php\/wp-json\/wp\/v2\/media?parent=520"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.rangakrish.com\/index.php\/wp-json\/wp\/v2\/categories?post=520"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.rangakrish.com\/index.php\/wp-json\/wp\/v2\/tags?post=520"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}