{"id":4120,"date":"2023-11-04T23:14:04","date_gmt":"2023-11-04T23:14:04","guid":{"rendered":"http:\/\/localhost:10003\/how-to-use-llms-for-text-summarization-and-expansion\/"},"modified":"2023-11-05T05:47:59","modified_gmt":"2023-11-05T05:47:59","slug":"how-to-use-llms-for-text-summarization-and-expansion","status":"publish","type":"post","link":"http:\/\/localhost:10003\/how-to-use-llms-for-text-summarization-and-expansion\/","title":{"rendered":"How to use LLMs for text summarization and expansion"},"content":{"rendered":"

Introduction<\/h2>\n

Language models have revolutionized the field of natural language processing by providing powerful tools for tasks like text generation, translation, and summarization. One popular type of language model is the Long-Short Term Memory (LSTM) model, which is a type of Recurrent Neural Network (RNN). In this tutorial, we will explore how to use LSTM-based language models (LLMs) for text summarization and expansion.<\/p>\n

Prerequisites<\/h3>\n

Before we begin, make sure you have the following prerequisites:
\n– Basic understanding of natural language processing and neural networks
\n– Proficiency in Python programming language
\n– Familiarity with deep learning frameworks such as TensorFlow or PyTorch<\/p>\n

Dataset<\/h3>\n

To demonstrate the usage of LLMs for text summarization and expansion, we will use a sample dataset of news articles. The dataset consists of pairs of original articles and their corresponding summaries. You can use any dataset of your choice, but make sure it has a similar structure.<\/p>\n

Now, let’s dive into the steps to use LLMs for text summarization and expansion.<\/p>\n

Step 1: Preparing the Dataset<\/h2>\n

The first step is to prepare the dataset for training the LLM. In this step, we will preprocess the data, split it into training and validation sets, and convert it into a suitable format.<\/p>\n

1.1. Preprocessing the Data<\/h3>\n

Load the dataset and perform necessary preprocessing steps such as removing unnecessary characters, lowercasing the text, and tokenization. You can use popular Python libraries such as NLTK or SpaCy for tokenization.<\/p>\n

Here’s an example of how to preprocess the data using SpaCy:<\/p>\n

import spacy\n\nnlp = spacy.load(\"en_core_web_sm\")\n\ndef preprocess_text(text):\n    text = text.lower()\n    doc = nlp(text)\n    tokens = [token.text for token in doc if not token.is_stop]\n    return \" \".join(tokens)\n<\/code><\/pre>\n

1.2. Splitting the Dataset<\/h3>\n

Split the dataset into training and validation sets. The typical split ratio is 80% for training and 20% for validation. You can use the train_test_split function from scikit-learn library for this purpose:<\/p>\n

from sklearn.model_selection import train_test_split\n\nX_train, X_val, y_train, y_val = train_test_split(X, y, test_size=0.2, random_state=42)\n<\/code><\/pre>\n

1.3. Converting to a Suitable Format<\/h3>\n

Convert the preprocessed text and summary pairs into a suitable format for training the LLM. Most LLM frameworks require the data to be in numeric form. You can do this by assigning a unique integer to each word in the dataset and replacing the words with their corresponding integers.<\/p>\n

from keras.preprocessing.text import Tokenizer\n\ntokenizer = Tokenizer()\ntokenizer.fit_on_texts(X_train + y_train)\n\nX_train_seq = tokenizer.texts_to_sequences(X_train)\nX_val_seq = tokenizer.texts_to_sequences(X_val)\n\ny_train_seq = tokenizer.texts_to_sequences(y_train)\ny_val_seq = tokenizer.texts_to_sequences(y_val)\n<\/code><\/pre>\n

Step 2: Building the LLM<\/h2>\n

In this step, we will build the LSTM-based language model for text summarization and expansion. We will use a Seq2Seq (Sequence-to-Sequence) model with an Encoder-Decoder architecture.<\/p>\n

2.1. Defining the Model Architecture<\/h3>\n

Define the architecture of the LLM using a deep learning framework of your choice. The Seq2Seq model consists of two parts: the Encoder and the Decoder.<\/p>\n

The Encoder processes the input sequence (original article) and encodes it into a fixed-length vector called the context vector. The Decoder takes the context vector and generates the output sequence (summary) word by word.<\/p>\n

Here’s an example of how to define the LLM architecture using the Keras framework:<\/p>\n

from keras.models import Model\nfrom keras.layers import Input, LSTM, Embedding, Dense\n\n# Define the Encoder\nencoder_input = Input(shape=(max_sequence_length,))\nencoder_embedding = Embedding(vocabulary_size, embedding_dim)(encoder_input)\nencoder_lstm = LSTM(latent_dim)(encoder_embedding)\nencoder = Model(encoder_input, encoder_lstm)\n\n# Define the Decoder\ndecoder_input = Input(shape=(max_summary_length,))\ndecoder_embedding = Embedding(vocabulary_size, embedding_dim)(decoder_input)\ndecoder_lstm = LSTM(latent_dim, return_sequences=True)(decoder_embedding, initial_state=encoder_lstm)\ndecoder_dense = Dense(vocabulary_size, activation='softmax')(decoder_lstm)\ndecoder = Model([decoder_input, encoder_lstm], decoder_dense)\n\n# Define the Seq2Seq model\nseq2seq_input = Input(shape=(max_sequence_length,))\nseq2seq_target = Input(shape=(max_summary_length,))\nencoder_output = encoder(seq2seq_input)\ndecoder_output = decoder([seq2seq_target, encoder_output])\nseq2seq_model = Model([seq2seq_input, seq2seq_target], decoder_output)\n<\/code><\/pre>\n

2.2. Training the Model<\/h3>\n

Compile the model and train it on the preprocessed dataset. Use appropriate loss function and optimizer for the task. You can experiment with different hyperparameters to improve the performance of the model.<\/p>\n

seq2seq_model.compile(optimizer='adam', loss='sparse_categorical_crossentropy')\nseq2seq_model.fit([X_train_seq, y_train_seq[:, :-1]], y_train_seq.reshape(y_train_seq.shape[0], y_train_seq.shape[1], 1)[:, 1:], validation_data=([X_val_seq, y_val_seq[:, :-1]], y_val_seq.reshape(y_val_seq.shape[0], y_val_seq.shape[1], 1)[:, 1:]), epochs=10, batch_size=64)\n<\/code><\/pre>\n

Step 3: Text Summarization<\/h2>\n

Now that we have trained the LLM, we can use it for text summarization. Given an input article, the LLM will generate a summary using the Encoder-Decoder architecture.<\/p>\n

3.1. Preprocessing the Input<\/h3>\n

Preprocess the input article by applying the same pre-processing steps as we did in Step 1.1. Make sure to convert the preprocessed text into the numeric form using the tokenizer.<\/p>\n

input_text = preprocess_text(input_text)\ninput_seq = tokenizer.texts_to_sequences([input_text])\n<\/code><\/pre>\n

3.2. Generating the Summary<\/h3>\n

Use the trained LLM to generate the summary for the input article. Pass the input sequence through the Encoder to obtain the context vector, and then feed the context vector to the Decoder to generate the output sequence (summary).<\/p>\n

encoder_output = encoder.predict(input_seq)\ntarget_seq = np.zeros((1, max_summary_length))\ntarget_seq[0, 0] = tokenizer.word_index['start'] # Set the start token\nfor i in range(max_summary_length-1):\n    decoder_output = decoder.predict([target_seq, encoder_output])\n    word_index = np.argmax(decoder_output[0, i, :])\n    target_seq[0, i+1] = word_index\n    if word_index == tokenizer.word_index['end']: # Set the end token\n        break\nsummary = tokenizer.sequences_to_texts([target_seq[0]])[0]\n<\/code><\/pre>\n

Step 4: Text Expansion<\/h2>\n

In addition to text summarization, LLMs can also be used for text expansion. Given a short input text, the LLM can generate a longer text by predicting the next words based on the context.<\/p>\n

4.1. Preprocessing the Input<\/h3>\n

Preprocess the input text by applying the same pre-processing steps as we did in Step 1.1. Convert the preprocessed text into the numeric form using the tokenizer.<\/p>\n

input_text = preprocess_text(input_text)\ninput_seq = tokenizer.texts_to_sequences([input_text])\n<\/code><\/pre>\n

4.2. Generating the Expanded Text<\/h3>\n

Use the trained LLM to generate the expanded text for the input. Pass the input sequence through the Encoder to obtain the context vector, and then feed the context vector to the Decoder to generate the output sequence (expanded text).<\/p>\n

encoder_output = encoder.predict(input_seq)\ntarget_seq = np.zeros((1, max_summary_length))\ntarget_seq[0, 0] = tokenizer.word_index['start'] # Set the start token\nfor i in range(max_summary_length-1):\n    decoder_output = decoder.predict([target_seq, encoder_output])\n    word_index = np.argmax(decoder_output[0, i, :])\n    target_seq[0, i+1] = word_index\n    if word_index == tokenizer.word_index['end']: # Set the end token\n        break\nexpanded_text = tokenizer.sequences_to_texts([target_seq[0]])[0]\n<\/code><\/pre>\n

Conclusion<\/h2>\n

In this tutorial, we learned how to use LSTM-based language models (LLMs) for text summarization and expansion. We covered the steps involved in preparing the dataset, building the LLM, and using it for text summarization and expansion. LLMs have shown great potential in various NLP tasks, and with further research and advancements, they are expected to make significant contributions in the field of natural language processing. Experiment with different architectures and techniques to improve the performance of the LLM for your specific use case. Happy coding!<\/p>\n","protected":false},"excerpt":{"rendered":"

Introduction Language models have revolutionized the field of natural language processing by providing powerful tools for tasks like text generation, translation, and summarization. One popular type of language model is the Long-Short Term Memory (LSTM) model, which is a type of Recurrent Neural Network (RNN). In this tutorial, we will Continue Reading<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_import_markdown_pro_load_document_selector":0,"_import_markdown_pro_submit_text_textarea":"","footnotes":""},"categories":[1],"tags":[1361,451,245,41,40,1360,1359,1089,1358],"yoast_head":"\nHow to use LLMs for text summarization and expansion - Pantherax Blogs<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"http:\/\/localhost:10003\/how-to-use-llms-for-text-summarization-and-expansion\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"How to use LLMs for text summarization and expansion\" \/>\n<meta property=\"og:description\" content=\"Introduction Language models have revolutionized the field of natural language processing by providing powerful tools for tasks like text generation, translation, and summarization. One popular type of language model is the Long-Short Term Memory (LSTM) model, which is a type of Recurrent Neural Network (RNN). In this tutorial, we will Continue Reading\" \/>\n<meta property=\"og:url\" content=\"http:\/\/localhost:10003\/how-to-use-llms-for-text-summarization-and-expansion\/\" \/>\n<meta property=\"og:site_name\" content=\"Pantherax Blogs\" \/>\n<meta property=\"article:published_time\" content=\"2023-11-04T23:14:04+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-11-05T05:47:59+00:00\" \/>\n<meta name=\"author\" content=\"Panther\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Panther\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"6 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\n\t \"@context\": \"https:\/\/schema.org\",\n\t \"@graph\": [\n\t {\n\t \"@type\": \"Article\",\n\t \"@id\": \"http:\/\/localhost:10003\/how-to-use-llms-for-text-summarization-and-expansion\/#article\",\n\t \"isPartOf\": {\n\t \"@id\": \"http:\/\/localhost:10003\/how-to-use-llms-for-text-summarization-and-expansion\/\"\n\t },\n\t \"author\": {\n\t \"name\": \"Panther\",\n\t \"@id\": \"http:\/\/localhost:10003\/#\/schema\/person\/b63d816f4964b163e53cbbcffaa0f3d7\"\n\t },\n\t \"headline\": \"How to use LLMs for text summarization and expansion\",\n\t \"datePublished\": \"2023-11-04T23:14:04+00:00\",\n\t \"dateModified\": \"2023-11-05T05:47:59+00:00\",\n\t \"mainEntityOfPage\": {\n\t \"@id\": \"http:\/\/localhost:10003\/how-to-use-llms-for-text-summarization-and-expansion\/\"\n\t },\n\t \"wordCount\": 795,\n\t \"publisher\": {\n\t \"@id\": \"http:\/\/localhost:10003\/#organization\"\n\t },\n\t \"keywords\": [\n\t \"\\\"expand text\\\"\",\n\t \"\\\"how to use LLMs\\\"\",\n\t \"\\\"LLMs\\\"\",\n\t \"\\\"Machine Learning\\\"\",\n\t \"\\\"Natural Language Processing\\\"\",\n\t \"\\\"summary techniques\\\"\",\n\t \"\\\"text expansion\\\"\",\n\t \"\\\"transformer models\\\"\",\n\t \"[\\\"text summarization\\\"\"\n\t ],\n\t \"inLanguage\": \"en-US\"\n\t },\n\t {\n\t \"@type\": \"WebPage\",\n\t \"@id\": \"http:\/\/localhost:10003\/how-to-use-llms-for-text-summarization-and-expansion\/\",\n\t \"url\": \"http:\/\/localhost:10003\/how-to-use-llms-for-text-summarization-and-expansion\/\",\n\t \"name\": \"How to use LLMs for text summarization and expansion - Pantherax Blogs\",\n\t \"isPartOf\": {\n\t \"@id\": \"http:\/\/localhost:10003\/#website\"\n\t },\n\t \"datePublished\": \"2023-11-04T23:14:04+00:00\",\n\t \"dateModified\": \"2023-11-05T05:47:59+00:00\",\n\t \"breadcrumb\": {\n\t \"@id\": \"http:\/\/localhost:10003\/how-to-use-llms-for-text-summarization-and-expansion\/#breadcrumb\"\n\t },\n\t \"inLanguage\": \"en-US\",\n\t \"potentialAction\": [\n\t {\n\t \"@type\": \"ReadAction\",\n\t \"target\": [\n\t \"http:\/\/localhost:10003\/how-to-use-llms-for-text-summarization-and-expansion\/\"\n\t ]\n\t }\n\t ]\n\t },\n\t {\n\t \"@type\": \"BreadcrumbList\",\n\t \"@id\": \"http:\/\/localhost:10003\/how-to-use-llms-for-text-summarization-and-expansion\/#breadcrumb\",\n\t \"itemListElement\": [\n\t {\n\t \"@type\": \"ListItem\",\n\t \"position\": 1,\n\t \"name\": \"Home\",\n\t \"item\": \"http:\/\/localhost:10003\/\"\n\t },\n\t {\n\t \"@type\": \"ListItem\",\n\t \"position\": 2,\n\t \"name\": \"How to use LLMs for text summarization and expansion\"\n\t }\n\t ]\n\t },\n\t {\n\t \"@type\": \"WebSite\",\n\t \"@id\": \"http:\/\/localhost:10003\/#website\",\n\t \"url\": \"http:\/\/localhost:10003\/\",\n\t \"name\": \"Pantherax Blogs\",\n\t \"description\": \"\",\n\t \"publisher\": {\n\t \"@id\": \"http:\/\/localhost:10003\/#organization\"\n\t },\n\t \"potentialAction\": [\n\t {\n\t \"@type\": \"SearchAction\",\n\t \"target\": {\n\t \"@type\": \"EntryPoint\",\n\t \"urlTemplate\": \"http:\/\/localhost:10003\/?s={search_term_string}\"\n\t },\n\t \"query-input\": \"required name=search_term_string\"\n\t }\n\t ],\n\t \"inLanguage\": \"en-US\"\n\t },\n\t {\n\t \"@type\": \"Organization\",\n\t \"@id\": \"http:\/\/localhost:10003\/#organization\",\n\t \"name\": \"Pantherax Blogs\",\n\t \"url\": \"http:\/\/localhost:10003\/\",\n\t \"logo\": {\n\t \"@type\": \"ImageObject\",\n\t \"inLanguage\": \"en-US\",\n\t \"@id\": \"http:\/\/localhost:10003\/#\/schema\/logo\/image\/\",\n\t \"url\": \"http:\/\/localhost:10003\/wp-content\/uploads\/2023\/11\/cropped-9e7721cb-2d62-4f72-ab7f-7d1d8db89226.jpeg\",\n\t \"contentUrl\": \"http:\/\/localhost:10003\/wp-content\/uploads\/2023\/11\/cropped-9e7721cb-2d62-4f72-ab7f-7d1d8db89226.jpeg\",\n\t \"width\": 1024,\n\t \"height\": 1024,\n\t \"caption\": \"Pantherax Blogs\"\n\t },\n\t \"image\": {\n\t \"@id\": \"http:\/\/localhost:10003\/#\/schema\/logo\/image\/\"\n\t }\n\t },\n\t {\n\t \"@type\": \"Person\",\n\t \"@id\": \"http:\/\/localhost:10003\/#\/schema\/person\/b63d816f4964b163e53cbbcffaa0f3d7\",\n\t \"name\": \"Panther\",\n\t \"image\": {\n\t \"@type\": \"ImageObject\",\n\t \"inLanguage\": \"en-US\",\n\t \"@id\": \"http:\/\/localhost:10003\/#\/schema\/person\/image\/\",\n\t \"url\": \"http:\/\/2.gravatar.com\/avatar\/b8c0eda5a49f8f31ec32d0a0f9d6f838?s=96&d=mm&r=g\",\n\t \"contentUrl\": \"http:\/\/2.gravatar.com\/avatar\/b8c0eda5a49f8f31ec32d0a0f9d6f838?s=96&d=mm&r=g\",\n\t \"caption\": \"Panther\"\n\t },\n\t \"sameAs\": [\n\t \"http:\/\/localhost:10003\"\n\t ],\n\t \"url\": \"http:\/\/localhost:10003\/author\/pepethefrog\/\"\n\t }\n\t ]\n\t}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"How to use LLMs for text summarization and expansion - Pantherax Blogs","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"http:\/\/localhost:10003\/how-to-use-llms-for-text-summarization-and-expansion\/","og_locale":"en_US","og_type":"article","og_title":"How to use LLMs for text summarization and expansion","og_description":"Introduction Language models have revolutionized the field of natural language processing by providing powerful tools for tasks like text generation, translation, and summarization. One popular type of language model is the Long-Short Term Memory (LSTM) model, which is a type of Recurrent Neural Network (RNN). In this tutorial, we will Continue Reading","og_url":"http:\/\/localhost:10003\/how-to-use-llms-for-text-summarization-and-expansion\/","og_site_name":"Pantherax Blogs","article_published_time":"2023-11-04T23:14:04+00:00","article_modified_time":"2023-11-05T05:47:59+00:00","author":"Panther","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Panther","Est. reading time":"6 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"http:\/\/localhost:10003\/how-to-use-llms-for-text-summarization-and-expansion\/#article","isPartOf":{"@id":"http:\/\/localhost:10003\/how-to-use-llms-for-text-summarization-and-expansion\/"},"author":{"name":"Panther","@id":"http:\/\/localhost:10003\/#\/schema\/person\/b63d816f4964b163e53cbbcffaa0f3d7"},"headline":"How to use LLMs for text summarization and expansion","datePublished":"2023-11-04T23:14:04+00:00","dateModified":"2023-11-05T05:47:59+00:00","mainEntityOfPage":{"@id":"http:\/\/localhost:10003\/how-to-use-llms-for-text-summarization-and-expansion\/"},"wordCount":795,"publisher":{"@id":"http:\/\/localhost:10003\/#organization"},"keywords":["\"expand text\"","\"how to use LLMs\"","\"LLMs\"","\"Machine Learning\"","\"Natural Language Processing\"","\"summary techniques\"","\"text expansion\"","\"transformer models\"","[\"text summarization\""],"inLanguage":"en-US"},{"@type":"WebPage","@id":"http:\/\/localhost:10003\/how-to-use-llms-for-text-summarization-and-expansion\/","url":"http:\/\/localhost:10003\/how-to-use-llms-for-text-summarization-and-expansion\/","name":"How to use LLMs for text summarization and expansion - Pantherax Blogs","isPartOf":{"@id":"http:\/\/localhost:10003\/#website"},"datePublished":"2023-11-04T23:14:04+00:00","dateModified":"2023-11-05T05:47:59+00:00","breadcrumb":{"@id":"http:\/\/localhost:10003\/how-to-use-llms-for-text-summarization-and-expansion\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["http:\/\/localhost:10003\/how-to-use-llms-for-text-summarization-and-expansion\/"]}]},{"@type":"BreadcrumbList","@id":"http:\/\/localhost:10003\/how-to-use-llms-for-text-summarization-and-expansion\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"http:\/\/localhost:10003\/"},{"@type":"ListItem","position":2,"name":"How to use LLMs for text summarization and expansion"}]},{"@type":"WebSite","@id":"http:\/\/localhost:10003\/#website","url":"http:\/\/localhost:10003\/","name":"Pantherax Blogs","description":"","publisher":{"@id":"http:\/\/localhost:10003\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"http:\/\/localhost:10003\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"en-US"},{"@type":"Organization","@id":"http:\/\/localhost:10003\/#organization","name":"Pantherax Blogs","url":"http:\/\/localhost:10003\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"http:\/\/localhost:10003\/#\/schema\/logo\/image\/","url":"http:\/\/localhost:10003\/wp-content\/uploads\/2023\/11\/cropped-9e7721cb-2d62-4f72-ab7f-7d1d8db89226.jpeg","contentUrl":"http:\/\/localhost:10003\/wp-content\/uploads\/2023\/11\/cropped-9e7721cb-2d62-4f72-ab7f-7d1d8db89226.jpeg","width":1024,"height":1024,"caption":"Pantherax Blogs"},"image":{"@id":"http:\/\/localhost:10003\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"http:\/\/localhost:10003\/#\/schema\/person\/b63d816f4964b163e53cbbcffaa0f3d7","name":"Panther","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"http:\/\/localhost:10003\/#\/schema\/person\/image\/","url":"http:\/\/2.gravatar.com\/avatar\/b8c0eda5a49f8f31ec32d0a0f9d6f838?s=96&d=mm&r=g","contentUrl":"http:\/\/2.gravatar.com\/avatar\/b8c0eda5a49f8f31ec32d0a0f9d6f838?s=96&d=mm&r=g","caption":"Panther"},"sameAs":["http:\/\/localhost:10003"],"url":"http:\/\/localhost:10003\/author\/pepethefrog\/"}]}},"jetpack_sharing_enabled":true,"jetpack_featured_media_url":"","_links":{"self":[{"href":"http:\/\/localhost:10003\/wp-json\/wp\/v2\/posts\/4120"}],"collection":[{"href":"http:\/\/localhost:10003\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/localhost:10003\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/localhost:10003\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/localhost:10003\/wp-json\/wp\/v2\/comments?post=4120"}],"version-history":[{"count":1,"href":"http:\/\/localhost:10003\/wp-json\/wp\/v2\/posts\/4120\/revisions"}],"predecessor-version":[{"id":4416,"href":"http:\/\/localhost:10003\/wp-json\/wp\/v2\/posts\/4120\/revisions\/4416"}],"wp:attachment":[{"href":"http:\/\/localhost:10003\/wp-json\/wp\/v2\/media?parent=4120"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/localhost:10003\/wp-json\/wp\/v2\/categories?post=4120"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/localhost:10003\/wp-json\/wp\/v2\/tags?post=4120"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}