{"id":1285,"date":"2018-12-09T17:04:58","date_gmt":"2018-12-09T11:34:58","guid":{"rendered":"https:\/\/www.rangakrish.com\/?p=1285"},"modified":"2018-12-09T20:47:18","modified_gmt":"2018-12-09T15:17:18","slug":"parsing-text-with-meaningclouds-text-analytics-api","status":"publish","type":"post","link":"https:\/\/www.rangakrish.com\/index.php\/2018\/12\/09\/parsing-text-with-meaningclouds-text-analytics-api\/","title":{"rendered":"Parsing Text with MeaningCloud&#8217;s Text Analytics API"},"content":{"rendered":"<p>There is wide-spread interest in <em><strong>Natural Language Processing<\/strong><\/em> (NLP) today, and there are several <em><strong>API<\/strong> <\/em>services available to cater to this demand. See <a href=\"https:\/\/blog.rapidapi.com\/best-nlp-api\/\" target=\"_blank\" rel=\"noopener\"><em><strong>this<\/strong><\/em><\/a> article for a fairly detailed list of services. All of them support multiple languages, including English.<\/p>\n<p>Today, I am going to share my experience in working with<a href=\"https:\/\/www.meaningcloud.com\/\" target=\"_blank\" rel=\"noopener\"><em><strong> MeaningCloud&#8217;s<\/strong><\/em><\/a> <em><strong>Text Analytics<\/strong><\/em> API, specifically the <em><strong>Parsing <\/strong><\/em>API. <em><strong>MeaningCloud<\/strong> <\/em>is among the pioneers in the field of <em><strong>NLP,<\/strong> <\/em>with offices in Madrid and New York. They offer a wide variety of products and services in the area of text processing, with a very reasonably-priced subscription model. The free tier includes up to 20,000 requests per month.<\/p>\n<p>The <em><strong>Text Analytics<\/strong><\/em> API consists of the following categories:<\/p>\n<blockquote>\n<ul>\n<li><span style=\"color: #0000ff;\">Topics Extraction<\/span><\/li>\n<li><span style=\"color: #0000ff;\">Text Classification<\/span><\/li>\n<li><span style=\"color: #0000ff;\">Deep Categorization<\/span><\/li>\n<li><span style=\"color: #0000ff;\">Sentiment Analysis<\/span><\/li>\n<li><span style=\"color: #0000ff;\">Language Identification<\/span><\/li>\n<li><span style=\"color: #0000ff;\">Text Clustering<\/span><\/li>\n<li><span style=\"color: #0000ff;\">Summarization<\/span><\/li>\n<li><span style=\"color: #0000ff;\">Document Structure Analysis<\/span><\/li>\n<li><span style=\"color: #0000ff;\">Corporate Reputation<\/span><\/li>\n<li><span style=\"color: #0000ff;\">Lemmatization, POS and Parsing<\/span><\/li>\n<\/ul>\n<\/blockquote>\n<p>A good overview of the <em><strong>Text Analytics<\/strong><\/em> service is available <a href=\"https:\/\/www.meaningcloud.com\/blog\/text-analytics-meaningcloud-101\" target=\"_blank\" rel=\"noopener\"><em><strong>here<\/strong><\/em><\/a>. There is also a nice introductory <em><strong>youtube<\/strong> <a href=\"https:\/\/www.youtube.com\/watch?v=KkP8oQDmnnY\" target=\"_blank\" rel=\"noopener\"><strong>video<\/strong>.<\/a><\/em><\/p>\n<p>For my experiment, I decided to focus only on the last category &#8211; <em><strong>Lemmatization, POS and Parsing<\/strong><\/em>. What I found interesting about this API is that it returns a <em><strong>morphosyntactic tree<\/strong><\/em> (similar to the constituency tree) as <em><strong>MeaningCloud<\/strong> <\/em>calls it. Given that <em><strong>Dependency parsing<\/strong><\/em> is widely used these days (for example, <a href=\"https:\/\/cloud.google.com\/natural-language\/docs\/morphology\" target=\"_blank\" rel=\"noopener\"><em><strong>Google<\/strong><\/em><\/a>\u00a0 and <a href=\"https:\/\/www.textrazor.com\/relation_extraction\" target=\"_blank\" rel=\"noopener\"><em><strong>TextRazor<\/strong><\/em><\/a>), I was a bit surprised by the <em><strong>traditional<\/strong> <\/em>approach followed by the company, although it is still useful.<\/p>\n<p>Once you register for the free tier at their site, you can use the supplied key to make <em><strong>REST<\/strong> <\/em>calls to their API, or if you merely want to understand the API capabilities, their test console comes in handy. They also have <a href=\"https:\/\/www.meaningcloud.com\/developer\/lemmatization-pos-parsing\/dev-tools\/2.0\" target=\"_blank\" rel=\"noopener\"><em><strong>client SDKs<\/strong><\/em><\/a> for <em><strong>PHP<\/strong><\/em>, <em><strong>Java<\/strong><\/em>, <em><strong>Python<\/strong><\/em>, and <em><strong>Visual Basic<\/strong><\/em>.<\/p>\n<p>I decided to use their <em><strong>REST<\/strong> <\/em>service from my <em><strong>Lisp<\/strong> <a href=\"http:\/\/www.rangakrish.com\/downloads\/MeaningCloud-Parsing.lisp\" target=\"_blank\" rel=\"noopener\"><strong>program<\/strong><\/a><\/em>, and it was pretty straightforward.<\/p>\n<p>Although this API endpoint is essentially meant for <em><strong>POS<\/strong> <\/em>and <em><strong>Lemmatization<\/strong><\/em>, you can optionally include <em><strong>Sentiment<\/strong> <\/em>and <em><strong>Topic extraction<\/strong><\/em> options. There is no additional charge for this request. Nice, isn&#8217;t it?<\/p>\n<p>The different <em><strong>Request<\/strong> <\/em>parameters are explained <a href=\"https:\/\/www.meaningcloud.com\/developer\/lemmatization-pos-parsing\/doc\/2.0\/request\" target=\"_blank\" rel=\"noopener\"><em><strong>here<\/strong><\/em><\/a>.<\/p>\n<p>In my API call, I have included <em><strong>Sentiment<\/strong> <\/em>and all categories of <em><strong>Topics<\/strong> <\/em>in addition to <em><strong>POS<\/strong> <\/em>and <em><strong>Lemmatization<\/strong><\/em>.<\/p>\n<p>Here is the parse function:<\/p>\n<figure id=\"attachment_1289\" aria-describedby=\"caption-attachment-1289\" style=\"width: 650px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2018\/12\/Parse-Function.png?ssl=1\"><img data-recalc-dims=\"1\" fetchpriority=\"high\" decoding=\"async\" data-attachment-id=\"1289\" data-permalink=\"https:\/\/www.rangakrish.com\/index.php\/2018\/12\/09\/parsing-text-with-meaningclouds-text-analytics-api\/parse-function\/\" data-orig-file=\"https:\/\/www.rangakrish.com\/wp-content\/uploads\/2018\/12\/Parse-Function.png\" data-orig-size=\"711,187\" 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=\"Function to Parse\" data-image-description=\"&lt;p&gt;Function to Parse&lt;\/p&gt;\n\" data-image-caption=\"&lt;p&gt;Function to Parse&lt;\/p&gt;\n\" data-large-file=\"https:\/\/www.rangakrish.com\/wp-content\/uploads\/2018\/12\/Parse-Function.png\" class=\"wp-image-1289\" src=\"https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2018\/12\/Parse-Function.png?resize=650%2C171&#038;ssl=1\" alt=\"Function to Parse\" width=\"650\" height=\"171\" srcset=\"https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2018\/12\/Parse-Function.png?w=711&amp;ssl=1 711w, https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2018\/12\/Parse-Function.png?resize=300%2C79&amp;ssl=1 300w\" sizes=\"(max-width: 650px) 100vw, 650px\" \/><\/a><figcaption id=\"caption-attachment-1289\" class=\"wp-caption-text\"><strong>Function to Parse<\/strong><\/figcaption><\/figure>\n<p>Let us invoke the parser with the sentence: <span style=\"color: #800080;\"><strong>Lilly and her friends admired their professor.<\/strong><\/span><\/p>\n<blockquote><p><span style=\"color: #0000ff;\">CL-USER 14 &gt; (parse-text &#8220;Lilly and her friends admired their professor.&#8221;)<\/span><\/p>\n<p><span style=\"color: #0000ff;\">T<\/span><\/p><\/blockquote>\n<p>If the API call succeeds, this function returns <em><strong>T<\/strong><\/em>. For convenience, the returned result is saved in a global variable for subsequent use. Here is the partial output:<\/p>\n<blockquote><p><span style=\"color: #0000ff;\">CL-USER 15 &gt; (pprint *parser-result*)<\/span><\/p>\n<p><span style=\"color: #0000ff;\">((:STATUS (:CODE . &#8220;0&#8221;) (:MSG . &#8220;OK&#8221;) (:CREDITS . &#8220;1&#8221;) (:REMAINING&#8211;CREDITS . &#8220;19750&#8221;))<\/span><br \/>\n<span style=\"color: #0000ff;\">\u00a0(:TOKEN&#8211;LIST<\/span><br \/>\n<span style=\"color: #0000ff;\">\u00a0((:TYPE . &#8220;sentence&#8221;)<\/span><br \/>\n<span style=\"color: #0000ff;\">\u00a0 (:ID . &#8220;10&#8221;)<\/span><br \/>\n<span style=\"color: #0000ff;\">\u00a0 (:INIP . &#8220;0&#8221;)<\/span><br \/>\n<span style=\"color: #0000ff;\">\u00a0 (:ENDP . &#8220;45&#8221;)<\/span><br \/>\n<span style=\"color: #0000ff;\">\u00a0 (:STYLE (:IS-BOLD . &#8220;no&#8221;) (:IS-ITALICS . &#8220;no&#8221;) (:IS-UNDERLINED . &#8220;no&#8221;) (:IS-TITLE . &#8220;no&#8221;))<\/span><br \/>\n<span style=\"color: #0000ff;\">\u00a0 (:SEPARATION . &#8220;A&#8221;)<\/span><br \/>\n<span style=\"color: #0000ff;\">\u00a0 (:QUOTE&#8211;LEVEL . &#8220;0&#8221;)<\/span><br \/>\n<span style=\"color: #0000ff;\">\u00a0 (:AFFECTED&#8211;BY&#8211;NEGATION . &#8220;no&#8221;)<\/span><br \/>\n<span style=\"color: #0000ff;\">\u00a0 (:SENTIMENT (:SELF&#8211;SENTIMENT (:TEXT . &#8220;*&#8221;) (:INIP . &#8220;0&#8221;) (:ENDP . &#8220;45&#8221;) (:CONFIDENCE . &#8220;100&#8221;) (:SCORE&#8211;TAG . &#8220;P+&#8221;)))<\/span><\/p><\/blockquote>\n<p>A quick look at the result shows that the call has consumed 1 credit (20000 free credits per month). Notice the last part of the result fragment, where it says the sentiment polarity of the whole sentence is <em><strong>P+<\/strong><\/em>, meaning <em><strong>Strong Positive<\/strong><\/em>. There is a also separate <em><strong>Global Sentiment<\/strong><\/em> section:<\/p>\n<blockquote><p><span style=\"color: #0000ff;\">(:GLOBAL&#8211;SENTIMENT<\/span><br \/>\n<span style=\"color: #0000ff;\">\u00a0(:MODEL . &#8220;general_en&#8221;)<\/span><br \/>\n<span style=\"color: #0000ff;\">\u00a0(:SCORE&#8211;TAG . &#8220;P+&#8221;)<\/span><br \/>\n<span style=\"color: #0000ff;\">\u00a0(:AGREEMENT . &#8220;AGREEMENT&#8221;)<\/span><br \/>\n<span style=\"color: #0000ff;\">\u00a0(:SUBJECTIVITY . &#8220;SUBJECTIVE&#8221;)<\/span><br \/>\n<span style=\"color: #0000ff;\">\u00a0(:CONFIDENCE . &#8220;100&#8221;)<\/span><br \/>\n<span style=\"color: #0000ff;\">\u00a0(:IRONY . &#8220;NONIRONIC&#8221;))<\/span><\/p><\/blockquote>\n<p>A detailed description of the various fields in the returned response object is available <a href=\"https:\/\/www.meaningcloud.com\/developer\/lemmatization-pos-parsing\/doc\/2.0\/response\" target=\"_blank\" rel=\"noopener\"><em><strong>here<\/strong><\/em><\/a>.<\/p>\n<p>Instead of using the result object directly, I prefer to use a subset that contains just the key fields of interest to me.<\/p>\n<p>Here is the corresponding function:<\/p>\n<figure id=\"attachment_1291\" aria-describedby=\"caption-attachment-1291\" style=\"width: 650px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2018\/12\/Get-words.png?ssl=1\"><img data-recalc-dims=\"1\" decoding=\"async\" data-attachment-id=\"1291\" data-permalink=\"https:\/\/www.rangakrish.com\/index.php\/2018\/12\/09\/parsing-text-with-meaningclouds-text-analytics-api\/get-words\/\" data-orig-file=\"https:\/\/www.rangakrish.com\/wp-content\/uploads\/2018\/12\/Get-words.png\" data-orig-size=\"677,304\" 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=\"Get Words Function\" data-image-description=\"&lt;p&gt;Get Words Function&lt;\/p&gt;\n\" data-image-caption=\"&lt;p&gt;Get Words Function&lt;\/p&gt;\n\" data-large-file=\"https:\/\/www.rangakrish.com\/wp-content\/uploads\/2018\/12\/Get-words.png\" class=\"wp-image-1291\" src=\"https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2018\/12\/Get-words.png?resize=650%2C292&#038;ssl=1\" alt=\"Get Words Function\" width=\"650\" height=\"292\" srcset=\"https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2018\/12\/Get-words.png?w=677&amp;ssl=1 677w, https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2018\/12\/Get-words.png?resize=300%2C135&amp;ssl=1 300w\" sizes=\"(max-width: 650px) 100vw, 650px\" \/><\/a><figcaption id=\"caption-attachment-1291\" class=\"wp-caption-text\"><strong>Get Words Functio<\/strong>n<\/figcaption><\/figure>\n<p>Here is the partial output from that function call.<\/p>\n<blockquote><p><span style=\"color: #0000ff;\">CL-USER 16 &gt; (pprint (get-words-info *parser-result*))<\/span><\/p>\n<p><span style=\"color: #0000ff;\">(((:FORM . &#8220;Lilly&#8221;)<\/span><br \/>\n<span style=\"color: #0000ff;\">\u00a0(:ID . &#8220;1&#8221;)<\/span><br \/>\n<span style=\"color: #0000ff;\">\u00a0(:ANALYSIS&#8211;LIST<\/span><br \/>\n<span style=\"color: #0000ff;\">\u00a0((:TAG . &#8220;NPFS-N-&#8220;) (:LEMMA . &#8220;Lilly&#8221;) (:ORIGINAL&#8211;FORM . &#8220;Lilly&#8221;) (:SENSE&#8211;ID&#8211;LIST ((:SENSE&#8211;ID . &#8220;5e3f6f66ec&#8221;)))))<\/span><br \/>\n<span style=\"color: #0000ff;\">\u00a0 (:SENSE&#8211;LIST<\/span><br \/>\n<span style=\"color: #0000ff;\">\u00a0 ((:ID . &#8220;5e3f6f66ec&#8221;)<\/span><br \/>\n<span style=\"color: #0000ff;\">\u00a0\u00a0 (:FORM . &#8220;Lilly&#8221;)<\/span><br \/>\n<span style=\"color: #0000ff;\">\u00a0\u00a0 (:INFO<\/span><br \/>\n<span style=\"color: #0000ff;\">. &#8220;sementity\/class=instance@fiction=nonfiction@id=ODENTITY_FIRST_NAME@type=<\/span><\/p>\n<p><span style=\"color: #0000ff;\">\u00a0\u00a0\u00a0 Top&gt;Person&gt;FirstNamesemld_list=sumo:FirstName&#8221;))))<\/span><br \/>\n<span style=\"color: #0000ff;\">\u00a0\u00a0 ((:FORM . &#8220;and&#8221;) (:ID . &#8220;2&#8221;) (:ANALYSIS&#8211;LIST ((:TAG . &#8220;CCYN9&#8221;) (:LEMMA . &#8220;and&#8221;) (:ORIGINAL&#8211;FORM . &#8220;and&#8221;))))<\/span><br \/>\n<span style=\"color: #0000ff;\">\u00a0\u00a0 ((:FORM . &#8220;her&#8221;)<\/span><br \/>\n<span style=\"color: #0000ff;\">\u00a0\u00a0\u00a0 (:ID . &#8220;3&#8221;)<\/span><br \/>\n<span style=\"color: #0000ff;\">\u00a0\u00a0\u00a0 (:ANALYSIS&#8211;LIST<\/span><br \/>\n<span style=\"color: #0000ff;\">\u00a0\u00a0\u00a0 ((:TAG . &#8220;SD-PFS3N7&#8221;) (:LEMMA . &#8220;her&#8221;) (:ORIGINAL&#8211;FORM . &#8220;her&#8221;) (:SENSE&#8211;ID&#8211;LIST ((:SENSE&#8211;ID . &#8220;PRONHUMAN&#8221;)))))<\/span><br \/>\n<span style=\"color: #0000ff;\">\u00a0\u00a0\u00a0 (:SENSE&#8211;LIST ((:ID . &#8220;PRONHUMAN&#8221;) (:FORM . &#8220;her&#8221;) (:INFO . &#8220;semhum=human&#8221;))))<\/span><br \/>\n<span style=\"color: #0000ff;\">\u00a0 ((:FORM . &#8220;friends&#8221;)<\/span><br \/>\n<span style=\"color: #0000ff;\">\u00a0\u00a0 (:ID . &#8220;4&#8221;)<\/span><br \/>\n<span style=\"color: #0000ff;\">\u00a0\u00a0 (:ANALYSIS&#8211;LIST<\/span><br \/>\n<span style=\"color: #0000ff;\">\u00a0\u00a0 ((:TAG . &#8220;NC-P-N6&#8221;) (:LEMMA . &#8220;friend&#8221;) (:ORIGINAL&#8211;FORM . &#8220;friends&#8221;) (:SENSE&#8211;ID&#8211;LIST ((:SENSE&#8211;ID . &#8220;2f1f98e4bb&#8221;)))))<\/span><br \/>\n<span style=\"color: #0000ff;\">\u00a0\u00a0 (:SENSE&#8211;LIST<\/span><br \/>\n<span style=\"color: #0000ff;\">\u00a0\u00a0\u00a0 ((:ID . &#8220;2f1f98e4bb&#8221;)<\/span><br \/>\n<span style=\"color: #0000ff;\">\u00a0\u00a0\u00a0\u00a0 (:FORM . &#8220;friend&#8221;)<\/span><br \/>\n<span style=\"color: #0000ff;\">\u00a0\u00a0\u00a0\u00a0 (:INFO<\/span><br \/>\n<span style=\"color: #0000ff;\">.\u00a0\u00a0\u00a0\u00a0 &#8220;sementity\/class=class@fiction=nonfiction@id=ODENTITY_PERSON@type=Top&gt;Person <\/span><\/p>\n<p><span style=\"color: #0000ff;\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 semld_list=http:\/\/en.wikipedia.org\/wiki\/Friend|sumo:Human&#8221;))))<\/span><\/p><\/blockquote>\n<p>As you can observe, for each word, there is a <em><strong>POS<\/strong> <\/em>tag and <em><strong>Lemma<\/strong><\/em>. Where relevant, there is an entry for <em><strong>Sense I<\/strong><strong>D<\/strong><\/em> as well. The <em><strong>POS<\/strong> <\/em>tag is quite fine-grained. It does not stop with the top-level category such as <em><strong>Verb, Noun, Adverb<\/strong><\/em>, etc., but includes as much information as can be given for that category.\u00a0 Where possible, it even contains the relative frequency of occurrence of the word!<\/p>\n<table>\n<tbody>\n<tr>\n<td width=\"73\"><span style=\"color: #0000ff;\">Lilly<\/span><\/td>\n<td width=\"105\"><span style=\"color: #0000ff;\">NPFS-N-<\/span><\/td>\n<td width=\"460\"><span style=\"color: #0000ff;\">Noun, Proper Noun, Feminine, Singular, Normal Word<\/span><\/td>\n<\/tr>\n<tr>\n<td width=\"73\"><span style=\"color: #0000ff;\">and<\/span><\/td>\n<td width=\"105\"><span style=\"color: #0000ff;\">CCYN9<\/span><\/td>\n<td width=\"460\"><span style=\"color: #0000ff;\">Conjunction, Coordinated, Copulative, Normal Word, Maximum Frequency<\/span><\/td>\n<\/tr>\n<tr>\n<td width=\"73\"><span style=\"color: #0000ff;\">her<\/span><\/td>\n<td width=\"105\"><span style=\"color: #0000ff;\">SD-PFS3N7<\/span><\/td>\n<td width=\"460\"><span style=\"color: #0000ff;\">Possessive, Determiner, Plural, Feminine, Singular, 3<sup>rd<\/sup> Person, Normal Word, High Frequency<\/span><\/td>\n<\/tr>\n<tr>\n<td width=\"73\"><span style=\"color: #0000ff;\">friends<\/span><\/td>\n<td width=\"105\"><span style=\"color: #0000ff;\">NC-P-N6<\/span><\/td>\n<td width=\"460\"><span style=\"color: #0000ff;\">Noun, Common Noun, Plural, Normal Word, Medium-high Frequency<\/span><\/td>\n<\/tr>\n<tr>\n<td width=\"73\"><span style=\"color: #0000ff;\">admired<\/span><\/td>\n<td width=\"105\"><span style=\"color: #0000ff;\">VI-P3ASA-N-N4<\/span><\/td>\n<td width=\"460\"><span style=\"color: #0000ff;\">Verb, Indicative, Plural, 3<sup>rd<\/sup> Person, Past, Simple, Active, Non-auxiliary, Normal Word, Medium-low frequency<\/span><\/td>\n<\/tr>\n<tr>\n<td width=\"73\"><span style=\"color: #0000ff;\">their<\/span><\/td>\n<td width=\"105\"><span style=\"color: #0000ff;\">SD-SMP3N7<\/span><\/td>\n<td width=\"460\"><span style=\"color: #0000ff;\">Possessive, Determiner, Singular, Masculine, Plural, 3<sup>rd<\/sup> Person, Normal Word, High Frequency<\/span><\/td>\n<\/tr>\n<tr>\n<td width=\"73\"><span style=\"color: #0000ff;\">professor<\/span><\/td>\n<td width=\"105\"><span style=\"color: #0000ff;\">NC-S-N4<\/span><\/td>\n<td width=\"460\"><span style=\"color: #0000ff;\">Noun, Common Noun, Singular, Normal Word, Medium-low Frequency<\/span><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p><em><strong>POS<\/strong> <\/em>tag details can be found <a href=\"https:\/\/www.meaningcloud.com\/developer\/documentation\/morphosyntactic-tagsets\" target=\"_blank\" rel=\"noopener\"><em><strong>here<\/strong><\/em><\/a>.<\/p>\n<p>Instead of getting the result in the JSON format as described above, it is also possible to get it in the form of a <em><strong>Tree<\/strong> <\/em>rendered as a <em><strong>GIF<\/strong> <\/em>image. This is useful to visualize the structure of the input sentence. Below is the corresponding tree for the sample sentence: <span style=\"color: #800080;\"><strong>Lilly and her friends admired their professor.<\/strong><\/span><\/p>\n<figure id=\"attachment_1294\" aria-describedby=\"caption-attachment-1294\" style=\"width: 650px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2018\/12\/Result.png?ssl=1\"><img data-recalc-dims=\"1\" decoding=\"async\" data-attachment-id=\"1294\" data-permalink=\"https:\/\/www.rangakrish.com\/index.php\/2018\/12\/09\/parsing-text-with-meaningclouds-text-analytics-api\/result-2\/\" data-orig-file=\"https:\/\/www.rangakrish.com\/wp-content\/uploads\/2018\/12\/Result.png\" data-orig-size=\"1150,738\" 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=\"Morphosyntactic Tree\" data-image-description=\"&lt;p&gt;Morphosyntactic Tree&lt;\/p&gt;\n\" data-image-caption=\"&lt;p&gt;Morphosyntactic Tree&lt;\/p&gt;\n\" data-large-file=\"https:\/\/www.rangakrish.com\/wp-content\/uploads\/2018\/12\/Result-1024x657.png\" class=\"wp-image-1294\" src=\"https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2018\/12\/Result.png?resize=650%2C417&#038;ssl=1\" alt=\"Morphosyntactic Tree\" width=\"650\" height=\"417\" srcset=\"https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2018\/12\/Result.png?resize=1024%2C657&amp;ssl=1 1024w, https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2018\/12\/Result.png?resize=300%2C193&amp;ssl=1 300w, https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2018\/12\/Result.png?resize=768%2C493&amp;ssl=1 768w, https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2018\/12\/Result.png?resize=140%2C90&amp;ssl=1 140w, https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2018\/12\/Result.png?w=1150&amp;ssl=1 1150w\" sizes=\"(max-width: 650px) 100vw, 650px\" \/><\/a><figcaption id=\"caption-attachment-1294\" class=\"wp-caption-text\"><strong>Morphosyntactic Tree<\/strong><\/figcaption><\/figure>\n<p>I got this GIF image through their <em><strong>Test Console<\/strong><\/em>.<\/p>\n<p>Let us try parsing one more sentence: <strong><span style=\"color: #800080;\">That book was published in 1998 and costs $150 now.<\/span><\/strong><\/p>\n<p>The parse tree for this sentence is given below:<\/p>\n<figure id=\"attachment_1295\" aria-describedby=\"caption-attachment-1295\" style=\"width: 650px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2018\/12\/Result2.png?ssl=1\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" data-attachment-id=\"1295\" data-permalink=\"https:\/\/www.rangakrish.com\/index.php\/2018\/12\/09\/parsing-text-with-meaningclouds-text-analytics-api\/result2\/\" data-orig-file=\"https:\/\/www.rangakrish.com\/wp-content\/uploads\/2018\/12\/Result2.png\" data-orig-size=\"1528,900\" 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=\"Morphosyntactic Tree\" data-image-description=\"&lt;p&gt;Morphosyntactic Tree&lt;\/p&gt;\n\" data-image-caption=\"&lt;p&gt;Morphosyntactic Tree&lt;\/p&gt;\n\" data-large-file=\"https:\/\/www.rangakrish.com\/wp-content\/uploads\/2018\/12\/Result2-1024x603.png\" class=\"wp-image-1295\" src=\"https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2018\/12\/Result2.png?resize=650%2C383&#038;ssl=1\" alt=\"Morphosyntactic Tree\" width=\"650\" height=\"383\" srcset=\"https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2018\/12\/Result2.png?resize=1024%2C603&amp;ssl=1 1024w, https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2018\/12\/Result2.png?resize=300%2C177&amp;ssl=1 300w, https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2018\/12\/Result2.png?resize=768%2C452&amp;ssl=1 768w, https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2018\/12\/Result2.png?w=1528&amp;ssl=1 1528w\" sizes=\"(max-width: 650px) 100vw, 650px\" \/><\/a><figcaption id=\"caption-attachment-1295\" class=\"wp-caption-text\"><strong>Morphosyntactic Tree &#8211; Second Example<br \/><\/strong><\/figcaption><\/figure>\n<p>Let us parse it using our function:<\/p>\n<blockquote><p><span style=\"color: #0000ff;\">CL-USER 18 &gt; (parse-text &#8220;That book was published in 1998 and costs $150 now.&#8221;)<\/span><br \/>\n<span style=\"color: #0000ff;\">T<\/span><\/p><\/blockquote>\n<p>Take a look at the description of the token <strong><em>1998<\/em><\/strong>:<\/p>\n<blockquote><p><span style=\"color: #0000ff;\">((:FORM . &#8220;1998&#8221;)<\/span><br \/>\n<span style=\"color: #0000ff;\">\u00a0(:NORMALIZED&#8211;FORM . &#8220;date@20||||1998||||||&#8221;)<\/span><br \/>\n<span style=\"color: #0000ff;\">\u00a0(:ID . &#8220;6&#8221;)<\/span><br \/>\n<span style=\"color: #0000ff;\">\u00a0(:INIP . &#8220;27&#8221;)<\/span><br \/>\n<span style=\"color: #0000ff;\">\u00a0(:ENDP . &#8220;30&#8221;)<\/span><br \/>\n<span style=\"color: #0000ff;\">\u00a0(:STYLE (:IS-BOLD . &#8220;no&#8221;) (:IS-ITALICS . &#8220;no&#8221;) (:IS-UNDERLINED . &#8220;no&#8221;) (:IS-TITLE . &#8220;no&#8221;))<\/span><br \/>\n<span style=\"color: #0000ff;\">\u00a0(:SEPARATION . &#8220;1&#8221;)<\/span><br \/>\n<span style=\"color: #0000ff;\">\u00a0(:QUOTE&#8211;LEVEL . &#8220;0&#8221;)<\/span><br \/>\n<span style=\"color: #0000ff;\">\u00a0(:AFFECTED&#8211;BY&#8211;NEGATION . &#8220;no&#8221;)<\/span><br \/>\n<span style=\"color: #0000ff;\">\u00a0(:ANALYSIS&#8211;LIST ((:TAG . &#8220;NDUU-n-&#8220;) (:LEMMA . &#8220;1998&#8221;) (:ORIGINAL&#8211;FORM . &#8220;1998&#8221;)))<\/span><br \/>\n<span style=\"color: #0000ff;\">\u00a0(:TOPIC&#8211;LIST<\/span><br \/>\n<span style=\"color: #0000ff;\">\u00a0(:TIME&#8211;EXPRESSION&#8211;LIST<\/span><br \/>\n<span style=\"color: #0000ff;\">\u00a0((:FORM . &#8220;1998&#8221;)<\/span><br \/>\n<span style=\"color: #0000ff;\">\u00a0 (:NORMALIZED&#8211;FORM . &#8220;20||||1998||||||&#8221;)<\/span><br \/>\n<span style=\"color: #0000ff;\">\u00a0 (:ACTUAL&#8211;TIME . &#8220;1998-12-09&#8221;)<\/span><br \/>\n<span style=\"color: #0000ff;\">\u00a0 (:PRECISION . &#8220;year&#8221;)<\/span><br \/>\n<span style=\"color: #0000ff;\">\u00a0 (:INIP . &#8220;27&#8221;)<\/span><br \/>\n<span style=\"color: #0000ff;\">\u00a0 (:ENDP . &#8220;30&#8221;)))))<\/span><\/p><\/blockquote>\n<p>What is interesting is that the token <em><strong>1998<\/strong> <\/em>has been tagged as a <em><strong>Date<\/strong> <\/em>as opposed to just a number. I guess the <em><strong>Actual Time<\/strong><\/em> element given as <em><strong>1998-12-09<\/strong><\/em> is the date on which I ran the API service for this article. So, the parser engine does much more than assigning a superficial label to each token. This can come in quite handy if we are keen to perform a deep semantic analysis of input text.<\/p>\n<p>Likewise, look at the (partial) description of the token <em><strong>$<\/strong><\/em>:<\/p>\n<blockquote><p><span style=\"color: #0000ff;\">((:FORM . &#8220;$&#8221;)<\/span><br \/>\n<span style=\"color: #0000ff;\">\u00a0(:ID . &#8220;9&#8221;)<\/span><br \/>\n<span style=\"color: #0000ff;\">\u00a0(:INIP . &#8220;42&#8221;)<\/span><br \/>\n<span style=\"color: #0000ff;\">\u00a0(:ENDP . &#8220;42&#8221;)<\/span><br \/>\n<span style=\"color: #0000ff;\">\u00a0(:STYLE (:IS-BOLD . &#8220;no&#8221;) (:IS-ITALICS . &#8220;no&#8221;) (:IS-UNDERLINED . &#8220;no&#8221;) (:IS-TITLE . &#8220;no&#8221;))<\/span><br \/>\n<span style=\"color: #0000ff;\">\u00a0(:SEPARATION . &#8220;1&#8221;)<\/span><br \/>\n<span style=\"color: #0000ff;\">\u00a0(:QUOTE&#8211;LEVEL . &#8220;0&#8221;)<\/span><br \/>\n<span style=\"color: #0000ff;\">\u00a0(:AFFECTED&#8211;BY&#8211;NEGATION . &#8220;no&#8221;)<\/span><br \/>\n<span style=\"color: #0000ff;\">\u00a0(:ANALYSIS&#8211;LIST<\/span><br \/>\n<span style=\"color: #0000ff;\">\u00a0((:TAG . &#8220;NCUP-s-&#8220;) (:LEMMA . &#8220;$&#8221;) (:ORIGINAL&#8211;FORM . &#8220;$&#8221;) (:SENSE&#8211;ID&#8211;LIST ((:SENSE&#8211;ID . &#8220;7b6858c50a&#8221;)))))<\/span><br \/>\n<span style=\"color: #0000ff;\">\u00a0 (:SENSE&#8211;LIST<\/span><br \/>\n<span style=\"color: #0000ff;\">\u00a0 ((:ID . &#8220;7b6858c50a&#8221;)<\/span><br \/>\n<span style=\"color: #0000ff;\">\u00a0 (:FORM . &#8220;dollar&#8221;)<\/span><br \/>\n<span style=\"color: #0000ff;\">\u00a0 (:OFFICIAL&#8211;FORM . &#8220;United States dollar&#8221;)<\/span><\/p><\/blockquote>\n<p>The input token <em><strong>$<\/strong> <\/em>has been mapped to <em><strong>&#8220;United States dollar&#8221;<\/strong><\/em>!<\/p>\n<p>I must admit that I am quite impressed with the API. I would encourage you to consider using it in your next text analysis project if it requires examining syntactic phenomena. I hope to check out their other API offerings in the near future, and will share my experience with you at that time.<\/p>\n<p>The <em><strong>Lisp<\/strong><\/em> source code is available <a href=\"http:\/\/www.rangakrish.com\/downloads\/MeaningCloud-Parsing.lisp\" target=\"_blank\" rel=\"noopener\"><em><strong>here<\/strong><\/em><\/a>. It has been tested in <a href=\"http:\/\/www.lispworks.com\/\" target=\"_blank\" rel=\"noopener\"><em><strong>LispWorks.<\/strong><\/em><\/a><\/p>\n<p>Have a nice weekend!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>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 with MeaningCloud&#8217;s Text Analytics API, [&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":[18,107,17],"tags":[],"class_list":["post-1285","post","type-post","status-publish","format-standard","hentry","category-lisp","category-natural-language-processing","category-programming"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p9OLnF-kJ","jetpack-related-posts":[{"id":1368,"url":"https:\/\/www.rangakrish.com\/index.php\/2019\/01\/08\/parsing-text-with-apache-opennlp\/","url_meta":{"origin":1285,"position":0},"title":"Parsing Text with Apache OpenNLP","author":"admin","date":"January 8, 2019","format":false,"excerpt":"In my earlier posts I have written about parsing text using spaCy\u00a0and MeaningCloud's parsing API. For today's article, I decided to take a look at OpenNLP, an open-source ML-based Java toolkit for parsing natural language text. OpenNLP is a fairly mature library and has been around since 2004 (source: Wikipedia).\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":"Parse Tree","src":"https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2019\/01\/Tree3.png?resize=350%2C200&ssl=1","width":350,"height":200},"classes":[]},{"id":1613,"url":"https:\/\/www.rangakrish.com\/index.php\/2019\/06\/24\/text-analysis-using-meaningclouds-deep-categorization-api\/","url_meta":{"origin":1285,"position":1},"title":"Text Analysis Using MeaningCloud\u2019s Deep Categorization API","author":"admin","date":"June 24, 2019","format":false,"excerpt":"MeaningCloud\u00a0announced their premium offering \u201cDeep Categorization\u201d service quite recently. You can read about it in this nice blog\u00a0by Blanca Galego. Compared to the canonical classification models that rely on machine learning using large data sets, MeaningCloud\u2019s deep categorization models use hand-crafted rules that take advantage of \u201cmorphosyntactic, semantic and contextual\u2026","rel":"","context":"In &quot;Homeopathy&quot;","block_context":{"text":"Homeopathy","link":"https:\/\/www.rangakrish.com\/index.php\/category\/homeopathy\/"},"img":{"alt_text":"Diarrhoea Example","src":"https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2019\/06\/diarrhoea-case-1.png?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2019\/06\/diarrhoea-case-1.png?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2019\/06\/diarrhoea-case-1.png?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2019\/06\/diarrhoea-case-1.png?resize=700%2C400&ssl=1 2x"},"classes":[]},{"id":1349,"url":"https:\/\/www.rangakrish.com\/index.php\/2018\/12\/30\/natural-language-interaction-with-ilexicon-using-luis\/","url_meta":{"origin":1285,"position":2},"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":[]},{"id":1490,"url":"https:\/\/www.rangakrish.com\/index.php\/2019\/03\/03\/text-summarization-apis\/","url_meta":{"origin":1285,"position":3},"title":"Text Summarization APIs","author":"admin","date":"March 3, 2019","format":false,"excerpt":"I talked about detecting\u00a0Emotion\u00a0from text in the last two articles. Another popular text analysis service is Text Summarization.\u00a0 There are two approaches for summarization: Extractive summarization Abstractive summarization In the first approach, \"Extractive Summarization\", the system extracts key sentences from the given text and puts them together to form a\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":"","src":"","width":0,"height":0},"classes":[]},{"id":1460,"url":"https:\/\/www.rangakrish.com\/index.php\/2019\/02\/17\/identifying-emotions-from-text\/","url_meta":{"origin":1285,"position":4},"title":"Identifying Emotions from Text","author":"admin","date":"February 17, 2019","format":false,"excerpt":"Identifying the predominant sentiment in unstructured text is used widely these days. There are several REST API services that allow you to submit a piece of text and get back the corresponding sentiment analysis. Meaningcloud, Aylien, Google's Cloud Natural Language API, and\u00a0 IBM Natural Language Understanding\u00a0Service are just a few.\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":"Program to Dump Emotions","src":"https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2019\/02\/Code.jpg?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2019\/02\/Code.jpg?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2019\/02\/Code.jpg?resize=525%2C300&ssl=1 1.5x"},"classes":[]},{"id":575,"url":"https:\/\/www.rangakrish.com\/index.php\/2017\/08\/06\/text-generation-using-ilanggen-framework\/","url_meta":{"origin":1285,"position":5},"title":"Text Generation Using iLangGen Framework","author":"admin","date":"August 6, 2017","format":false,"excerpt":"The two primary areas in Natural Language processing are Natural Language Understanding and Natural Language Generation. The former is concerned with processing and making sense of natural language text, whereas the latter is concerned with synthesizing text, possibly from some deep representation. Both are fascinating and at the same time,\u2026","rel":"","context":"In &quot;LISP&quot;","block_context":{"text":"LISP","link":"https:\/\/www.rangakrish.com\/index.php\/category\/lisp\/"},"img":{"alt_text":"iLangGen Grammar","src":"https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2017\/08\/Blog1.png?resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2017\/08\/Blog1.png?resize=350%2C200 1x, https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2017\/08\/Blog1.png?resize=525%2C300 1.5x"},"classes":[]}],"_links":{"self":[{"href":"https:\/\/www.rangakrish.com\/index.php\/wp-json\/wp\/v2\/posts\/1285","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=1285"}],"version-history":[{"count":0,"href":"https:\/\/www.rangakrish.com\/index.php\/wp-json\/wp\/v2\/posts\/1285\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.rangakrish.com\/index.php\/wp-json\/wp\/v2\/media?parent=1285"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.rangakrish.com\/index.php\/wp-json\/wp\/v2\/categories?post=1285"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.rangakrish.com\/index.php\/wp-json\/wp\/v2\/tags?post=1285"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}