Certainly! Here's how you can structure your HTML to include the translated Chinese text:
```html
Building a Q&A Chatbot
Building a Q&A Chatbot
In this article, I will walk you through how to build a Q&A chatbot using the Haystack 2.x framework, and one of my favourite novels “Treasure Island” by Robert Louis Stevenson as the knowledge base. This classic novel will serve as the primary source of content from which our chatbot will extract information and answer queries.
```
In the provided HTML structure:
- The English text is included in the `
` tag directly under the `
` heading.
- The simplified Chinese translation is included in another `
` tag immediately after the English text.
This maintains the structure and ensures that both versions of the text are clearly presented in the HTML document.
Sure, here is the translated text in simplified Chinese while keeping the HTML structure intact:
```html
```
This HTML snippet translates the original text into simplified Chinese and maintains the HTML paragraph structure.
Sure, here's how you can write "Key Components" in simplified Chinese while maintaining HTML structure:
```html
重要组成部分
```
In this HTML snippet, "重要组成部分" translates to "Key Components" in simplified Chinese.
Certainly! Here's the translated text in simplified Chinese while keeping the HTML structure:
```html
Sure, here's how you can write "Documents" in simplified Chinese within an HTML structure:
```html
文件
```
This HTML snippet embeds the Chinese translation "文件" (wénjiàn) for "Documents," wrapped in a `` tag with the `lang` attribute specifying simplified Chinese (`zh-CN`).
Sure, here is the HTML structure with the text translated to simplified Chinese:
```html
```
This HTML structure preserves the original formatting while presenting the text in simplified Chinese.
Sure, here's the translation in simplified Chinese while keeping the HTML structure:
```html
文档的结构可以表示为:
```
In this HTML snippet, `
` represents a paragraph, and "文档的结构可以表示为:" is the translation of "The structure of a Document can be represented as:".
{ "id": "unique_document_id", "content": "The main text of the document", "meta": { "title": "Document Title", "author": "Author Name", "url": "https://example.com/document", ... } }
Sure, here's how you can write "Preprocessors" in simplified Chinese within an HTML structure:
```html
预处理器
```
In this HTML snippet:
- `
` is used for a paragraph element.
- "预处理器" (yù chǔlǐ qì) is the translation of "Preprocessors" in simplified Chinese.
Sure, here is the HTML structure with the translated simplified Chinese text embedded:
```html
```
In this HTML snippet, the translated Chinese text is enclosed within `
` tags, assuming it's part of a paragraph in your HTML document.
Certainly! Here's the translation of the sentence into simplified Chinese, keeping the HTML structure intact:
```html
以下是如何初始化两个预处理器(DocumentCleaner 和 DocumentSplitter),它们与文档一起工作的示例。
```
This HTML structure ensures that the translation fits seamlessly into an HTML document while displaying the Chinese text correctly.
from haystack import Document from haystack.components.preprocessors import DocumentCleaner, DocumentSplitter
# Define list of documents documents = [ Document(id='1', content='This is the first document.', meta={'title': 'First'}), Document(id='2', content='This is the second document.', meta={'title': 'Second'}), ]
# Initialise and Run Document Cleaner cleaner = DocumentCleaner( remove_empty_lines=True, # Removes empty lines. remove_extra_whitespaces=True, # Removes extra whitespaces. remove_repeated_substrings=False, # Removes repeated substrings from pages (demarcated by '\f') of documents remove_substrings=None, # Removes list of substrings from the documents. remove_regex=None, # Regex to match and replace substrings by "" keep_id=False # Keeps the ids of the documents. ) cleaned_documents = cleaner.run(documents)
# Initialise and Run Document Splitter splitter = DocumentSplitter( split_by='sentence', # The unit by which the document should be split. Choose from "word" for splitting by " ", "sentence" for splitting by ".", "page" for splitting by "\\f" or "passage" for splitting by "\\n\\n". split_length=3, # The maximum number of units in each split. split_overlap=1, # The number of units that each split should overlap. ) split_documents = splitter.run(cleaned_documents['documents'])
Sure, here's how you can write "Document Store" in simplified Chinese within an HTML structure:
```html
文档存储
```
This HTML snippet uses the `span` element with the `lang` attribute set to "zh-CN" for simplified Chinese. The text "文档存储" translates to "Document Store" in English.
Certainly! Here's the translated text in simplified Chinese, keeping the HTML structure intact:
```html
` denotes a paragraph tag, commonly used for textual content.
- The Chinese text is enclosed within `
` and `
` tags, ensuring it is displayed as a paragraph in HTML.
Sure, here's how you could structure the HTML with the translated text in simplified Chinese:
```html
根据您特定的用例和数据库类型,在 Haystack 中有多种文档存储方案可供利用。
```
This HTML snippet maintains the structure while presenting the translated text in simplified Chinese.
Sure, here is the text translated into simplified Chinese while maintaining the HTML structure:
```html
以下是如何使用ChromaDocumentStore的示例
```
This translation keeps the original meaning intact while adhering to the HTML formatting.
from haystack import Document from haystack_integrations.document_stores.chroma import ChromaDocumentStore
# Initialise Chroma Document Store document_store = ChromaDocumentStore( collection_name='your_collection_name', embedding_function='default', # see repo for supported embedding functions https://github.com/masci/chroma-haystack/blob/main/src/chroma_haystack/utils.py persist_path='path_dir' # Local path to store documents )
# Write documents document_store.write_documents([ Document(id='1', content='This is the first document.', meta={'title': 'First'}), Document(id='2', content='This is the second document.', meta={'title': 'Second'}), ])
Certainly! Here is the translation of "Document Writer" in simplified Chinese, keeping the HTML structure:
```html
文档撰写者
```
In this HTML snippet:
- `` is used to enclose the translated text.
- `lang="zh-CN"` specifies the language as simplified Chinese.
- "文档撰写者" is the translated text for "Document Writer".
Sure, here's the text translated into simplified Chinese while keeping the HTML structure intact:
```html
DocumentWriter将文档列表写入文档存储库中。它类似于DocumentStore类的write_documents方法,但DocumentWriter可以在索引流水线中用作预处理文档并创建其嵌入后的最终步骤;其关键特性是集成了DuplicatePolicy类,该类定义了如何处理具有重复ID的文档。
```
This HTML structure maintains the original formatting of the text while providing the translation in simplified Chinese.
To translate the given English text to simplified Chinese while keeping the HTML structure intact, you can use the following:
```html
The DuplicatePolicy class has 3 options:
OVERWRITE: 如果已存在具有相同ID的文档,则应使用新文档覆盖它。
SKIP: 如果已存在具有相同ID的文档,则保留文档存储中的现有文档,跳过新文档的写入。
FAIL: 如果已存在具有相同ID的文档,则会引发错误。
```
This HTML structure ensures that the translation is presented clearly and organized in a list format, suitable for displaying different options of the DuplicatePolicy class.
Sure, here's how you would structure that sentence in HTML while using simplified Chinese:
```html
以下是如何使用DocumentWriter的示例:
```
In this HTML snippet:
- "以下是" means "Below is".
- "如何使用DocumentWriter的示例" translates to "an example of how to use DocumentWriter".
from haystack import Document from haystack.components.writers import DocumentWriter from haystack.document_stores.types import DuplicatePolicy from haystack.document_stores.in_memory import InMemoryDocumentStore
# Define list of documents documents = [ Document(id='1', content='This is the first document.', meta={'title': 'First'}), Document(id='2', content='This is the second document.', meta={'title': 'Second'}), ]
# Initialise InMemory Document Store document_store = InMemoryDocumentStore()
Certainly! Here's how you can write "Generators" in simplified Chinese within an HTML structure:
```html
发电机
```
In this HTML snippet:
- `` is used to wrap the Chinese text.
- `lang="zh-CN"` specifies the language as simplified Chinese.
- "发电机" is the translation of "Generators" into simplified Chinese.
Certainly! Here's the HTML structure with the translated text in simplified Chinese:
```html
```
This HTML snippet will display the translated text in a structured manner while preserving the hyperlink to the documentation.
Sure, here's how you could structure the HTML while including the simplified Chinese translation:
```html
使用支持OpenAI模型的生成器的示例
使用支持OpenAI模型的生成器的示例
以下是一个使用支持OpenAI模型的生成器的示例。
```
In this HTML structure:
- `` tag provides the title of the webpage in Chinese.
- `
` tag is used for the main heading.
- `
` tag contains the translated text.
This structure maintains the integrity of the HTML while ensuring the text is correctly displayed in simplified Chinese.
from haystack.utils import Secret from haystack.components.generators import OpenAIGenerator
client = OpenAIGenerator(model='gpt-4', api_key=Secret.from_token('<your-api-key>')) response = client.run('What motivated Jim Hawkins to embark on the journey to Treasure Island in the novel "Treasure Island"?') print(response)
Certainly! Here's the translation of "Custom Components" into simplified Chinese while maintaining the HTML structure:
```html
自定义组件
```
Certainly! Here's the translation of the provided text into simplified Chinese, keeping the HTML structure:
```html
Haystack 允许我们创建自定义组件,以扩展框架的功能,以满足构建问答系统时的特定需求。这种灵活性使我们能够实现独特的逻辑,甚至与外部服务和数据源集成。
```
In Chinese characters:
```html
Haystack 允许我们创建自定义组件,以扩展框架的功能,以满足构建问答系统时的特定需求。这种灵活性使我们能够实现独特的逻辑,甚至与外部服务和数据源集成。
```
This HTML structure ensures the translation is presented correctly in a web context while maintaining the integrity of the original English text.
Sure, here's the HTML structure with the translated text in simplified Chinese:
```html
```
Translated to simplified Chinese, the text now reads:
```
在开发自定义组件时,有三个基本要求需要遵循:
- 使用 @component 装饰器:这个装饰器将类标记为 Haystack 组件。
- 实现 run() 方法:该方法应接受一组输入参数,并返回一个字典对象。
- 使用 @component.output_types 装饰器定义输出类型:此装饰器指定输出的数据类型和名称。这些名称和类型必须与 run() 方法返回的字典对象中的相匹配。
```
Certainly! Here's the translation of the English text into simplified Chinese while keeping the HTML structure:
```html
以下是一个简单的示例,展示了一个自定义组件,它将字符串列表转换为文档列表。
```
This HTML code snippet contains the translated text in simplified Chinese within a `
` (paragraph) element, maintaining the original structure as requested.
from haystack import component from haystack import Document
@component class TextsToDocuments:
@component.output_types(documents=list[Document]) def run(self, texts: list[str]): documents = [] for i in texts: documents.append(Document(content=i)) return {'documents': documents}
texts = [ 'This is the first text.', 'This is the second text.', ]
documents = TextsToDocuments().run(texts)
Sure, here's how you can write "Pipelines" in simplified Chinese within an HTML structure:
```html
管道
```
In this translation:
- `
` denotes a top-level heading in HTML, typically used for main titles or headings.
- "管道" (guǎndào) is the simplified Chinese translation for "Pipelines".
Certainly! Here's the HTML structure with the translated text in simplified Chinese:
```html
Certainly! Here's your text translated into simplified Chinese while keeping the HTML structure intact:
```html
使用管道,您可以将预处理、索引和查询步骤组合为单个工作流,使用顺序步骤、分支和循环。
```
In this HTML snippet, the Chinese text translates back to:
使用管道,您可以将预处理、索引和查询步骤组合为单个工作流,使用顺序步骤、分支和循环。
This maintains the original structure and provides the translation you requested.
Sure, here's how you could structure it in HTML while providing the translation in simplified Chinese:
```html
Below is a sample of how to setup and connect components in a pipeline.
```
Translated to simplified Chinese:
```html
以下是如何设置和连接管道中组件的示例。
```
In this HTML snippet, the English text is replaced with its simplified Chinese translation within the `
` (paragraph) tag, maintaining the basic HTML structure.
from haystack import Pipeline from haystack.document_stores.in_memory import InMemoryDocumentStore from haystack.components.converters import TextFileToDocument from haystack.components.preprocessors import DocumentCleaner from haystack.components.preprocessors import DocumentSplitter from haystack.components.writers import DocumentWriter
# Initialise document store document_store = InMemoryDocumentStore()
# Run pipeline pipeline.run({ 'converter': {'sources': file_names}, })
Sure, here's how you could write "Implementation" in simplified Chinese within an HTML structure:
```html
实施
```
In this example:
- `
` denotes a paragraph tag, maintaining the HTML structure.
- "实施" is the simplified Chinese translation of "Implementation".
Certainly! Here's how you could structure the HTML while including the translated text in simplified Chinese:
```html
Q&A Chatbot Implementation
Q&A Chatbot Implementation
For the implementation of our Q&A Chatbot, we will be using one of my favourite novels “Treasure Island” by Robert Louis Stevenson as the knowledge base. This classic novel will serve as the primary source of content from which our chatbot will extract information and answer queries.
问答聊天机器人实现
为了实现我们的问答聊天机器人,我们将使用罗伯特·路易斯·史蒂文森(Robert Louis Stevenson)的经典小说《金银岛》作为知识库。这部经典小说将作为聊天机器人提取信息和回答查询的主要内容来源。
```
In this example:
- The original English text is placed in a `
` with `id="content"`.
- The translated Chinese text is placed in a separate `
` with `id="content-cn"`, initially hidden (`display: none;`).
- A button (``) is provided to switch between displaying the English and Chinese versions of the text.
- JavaScript function `toggleLanguage()` is used to toggle the visibility of the English and Chinese text `
` elements based on the button click.
This setup allows users to view the content in either English or simplified Chinese by clicking the toggle button. Adjustments can be made to styling and functionality as needed based on specific requirements or design preferences.
Certainly! Here's the translation of the text into simplified Chinese while maintaining the HTML structure:
```html
实现将分为两个部分:
1. 文档处理流程
2. 检索增强生成流程
```
In this HTML snippet:
- `
` indicates a paragraph tag for structuring the text.
- The Chinese text is enclosed within the paragraph tag, maintaining the original structure provided.
Sure, here's how you can write "Document Processing Pipeline" in simplified Chinese, while keeping the HTML structure intact:
```html
文档处理流程
```
Sure, here's the HTML structure with the translated text in simplified Chinese:
```html
from haystack import component from haystack import Pipeline, Document from haystack.components.preprocessors import DocumentCleaner, DocumentSplitter from haystack.components.writers import DocumentWriter from haystack.document_stores.types import DuplicatePolicy from haystack_integrations.document_stores.chroma import ChromaDocumentStore
Certainly! Here is the HTML structure with the translated text in simplified Chinese:
```html
` is used for the paragraph tag to maintain the structure.
- The text is translated into simplified Chinese as requested.
# Setup Reader component @component class GutenbergTextIngestor:
@component.output_types(documents=list[Document]) def run(self, url: str): # Read HTML resp = requests.get(url) data = resp.text
# Select relevant part of the text start_position = data.index('*** START OF THE PROJECT GUTENBERG EBOOK TREASURE ISLAND ***') end_position = data.index('*** END OF THE PROJECT GUTENBERG EBOOK TREASURE ISLAND ***') data = data[start_position:end_position]
# Preprocess texts data = data.replace('\r', '') data = data.split('\n\n') data = [i.replace('\n', ' ').strip() for i in data] data = [i for i in data if i != ''] data = '\n\n'.join(data)
# Define chapters chapters = [ 'I THE OLD SEA-DOG AT THE ADMIRAL BENBOW', 'II BLACK DOG APPEARS AND DISAPPEARS', 'III THE BLACK SPOT', 'IV THE SEA-CHEST', 'V THE LAST OF THE BLIND MAN', 'VI THE CAPTAIN’S PAPERS', 'VII I GO TO BRISTOL', 'VIII AT THE SIGN OF THE SPY-GLASS', 'IX POWDER AND ARMS', 'X THE VOYAGE', 'XI WHAT I HEARD IN THE APPLE-BARREL', 'XII COUNCIL OF WAR', 'XIII HOW I BEGAN MY SHORE ADVENTURE', 'XIV THE FIRST BLOW', 'XV THE MAN OF THE ISLAND', 'XVI NARRATIVE CONTINUED BY THE DOCTOR: HOW THE SHIP WAS ABANDONED', 'XVII NARRATIVE CONTINUED BY THE DOCTOR: THE JOLLY-BOAT’S LAST TRIP', 'XVIII NARRATIVE CONTINUED BY THE DOCTOR: END OF THE FIRST DAY’S FIGHTING', 'XIX NARRATIVE RESUMED BY JIM HAWKINS: THE GARRISON IN THE STOCKADE', 'XX SILVER’S EMBASSY', 'XXI THE ATTACK', 'XXII HOW I BEGAN MY SEA ADVENTURE', 'XXIII THE EBB-TIDE RUNS', 'XXIV THE CRUISE OF THE CORACLE', 'XXV I STRIKE THE JOLLY ROGER', 'XXVI ISRAEL HANDS', 'XXVII “PIECES OF EIGHT”', 'XXVIII IN THE ENEMY’S CAMP', 'XXIX THE BLACK SPOT AGAIN', 'XXX ON PAROLE', 'XXXI THE TREASURE-HUNT--FLINT’S POINTER', 'XXXII THE TREASURE-HUNT--THE VOICE AMONG THE TREES', 'XXXIII THE FALL OF A CHIEFTAIN', 'XXXIV AND LAST', ]
# Create document per chapter documents = [] for idx, chapter in enumerate(chapters): stidx = data.upper().index(chapter) + len(chapter) enidx = None if (idx == len(chapters)-1) else data.upper().index(chapters[idx+1]) document = Document(content=data[stidx:enidx].strip(), meta={'chapter': chapter}) documents.append(document)
Sure, here is the translated text in simplified Chinese, maintaining the HTML structure:
```html
我们可以通过运行组件并查看示例文档的ID、元数据和内容来测试该组件。
```
This text retains the structure of the original English sentence within an HTML context, translated into simplified Chinese.
# Run component and store results treasure_island = GutenbergTextIngestor().run(url='https://www.gutenberg.org/cache/epub/120/pg120.txt')
```
This HTML snippet contains the translated text:
- **收藏名称** (shōucáng míngchēng): Collection name
- **默认的嵌入功能** (mòrèn de qiànrù gōngnéng): Default embedding function
# Setup Document Store document_store = ChromaDocumentStore(collection_name='treasure_island', embedding_function='default', persist_path='/content/vectordb')
Sure, here is the translated text in simplified Chinese, while keeping the HTML structure intact:
```html
为了将所有内容整合在一起,我们通过添加组件并在组件之间建立连接来设置我们的流水线。
```
This HTML snippet retains the structure but displays the translated text in simplified Chinese.
```
This HTML snippet maintains the structure while providing the translated text in Chinese.
Sure, here's the translation of "Retrieval-Augmented Generation Pipeline" into simplified Chinese while keeping the HTML structure:
```html
检索增强生成管道
```
In the above translation:
- `` tags are used to denote inline text within HTML, ensuring the translated text remains part of the HTML structure.
- "检索增强生成管道" is the simplified Chinese translation of "Retrieval-Augmented Generation Pipeline".
Certainly! Here's how you can structure your HTML while incorporating the translated text in simplified Chinese:
```html
```
This HTML snippet maintains the structure while displaying the translated text in simplified Chinese.
Certainly! Here's the translation of "We start by importing the relevant modules:" in simplified Chinese, while keeping the HTML structure intact:
```html
我们首先导入相关的模块:
```
from haystack import component from haystack import Pipeline, Document from haystack.components.builders import PromptBuilder from haystack.components.generators import OpenAIGenerator from haystack.components.routers import ConditionalRouter from haystack_integrations.components.retrievers.chroma import ChromaQueryTextRetriever from haystack_integrations.document_stores.chroma import ChromaDocumentStore
Certainly! Here's the translation of "Then, we setup our main prompt." in simplified Chinese, while keeping the HTML structure intact:
```html
然后,我们设置我们的主提示。
```
This translation preserves the HTML structure and provides the text in simplified Chinese characters.
main_prompt_template = """ ROLE AND CONTEXT: You are a knowledgeable assistant specialized in "Treasure Island" by Robert Louis Stevenson. Your task is to provide accurate and detailed answers to queries based on the content of this novel. Use the provided excerpts and references from "Treasure Island" to support your answers.
INSTRUCTIONS: 1. Identify the relevant sections of the excerpts provided. 2. Provide a concise and informative response. 3. Include direct quotes from the novel when necessary to substantiate your answers. 4. Ensure your responses are clear and easy to understand.
Here is an example of how to format your answers: Query: What is the relationship between Jim Hawkins and Long John Silver? Answer: Jim Hawkins and Long John Silver have a complex relationship. Initially, Jim admires Silver and is deceived by his charisma and seeming kindness. For example, in Chapter "X THE VOYAGE", Jim describes Silver as "intelligent and kind-hearted." However, as the story progresses, Jim discovers Silver's true nature as a cunning and ruthless pirate, leading to a mixture of fear and respect. Their relationship evolves from one of admiration to mutual wariness and strategic cooperation.
EXCERPTS: {% for doc in documents %} chapter: {{ doc.meta.chapter }} excerpt: {{ doc.content }} {% endfor %}
CONSIDERATIONS: - If the query cannot be answered given the provided documents, return 'no_answer'
Query: {{query}} Answer: """
Sure, here's the translated text in simplified Chinese while maintaining the HTML structure:
```html
fallback_prompt_template = """ User entered a query that cannot be answered with the excerpts provided. The query was: {{query}}. Let the user know why the question cannot be answered. Be brief. """
conditional_router = ConditionalRouter([ { "condition": "{{'no_answer' not in replies[0]}}", "output": "{{replies}}", "output_name": "replies", "output_type": list[str], }, { "condition": "{{'no_answer' in replies[0]}}", "output": "{{query}}", "output_name": "go_to_fallback", "output_type": str, }, ])
Sure, here's how you can structure your HTML while including the translated text:
```html
Translate Text to Chinese
Next, we define the other components that will be part of our eventual pipeline.
接下来,我们定义将成为最终流水线一部分的其他组件。
```
In this HTML structure:
- The original English text is kept as is inside the first `
` element.
- The translated Simplified Chinese text is placed inside the second `
Sure, here's the translation of the sentence into simplified Chinese, while keeping the HTML structure intact:
```html
我们通过将组件添加到管道中,并在组件之间设置连接,将所有内容整合在一起。
```
This HTML snippet contains the translation of "We bring it all together by adding the components to the pipeline and setting up connections between the components" in simplified Chinese.
Sure, here's how you can write "You can visualise your pipeline by running the below script" in simplified Chinese while keeping the HTML structure intact:
```html
你可以通过运行下面的脚本来可视化你的流水线。
```
In this HTML snippet, the Chinese text is embedded within the `` structure, suitable for displaying in a web page or similar context.
# Visualise pipeline pipeline.show()
Sure, here is the translation in simplified Chinese while keeping the HTML structure:
```html
完成了!!!我们的问答聊天机器人已经完成。
```
In this HTML snippet, `
` tags are used to enclose the translated text, preserving the structure as requested.
Sure, here's how you could structure that in HTML and translate the text into simplified Chinese:
```html
```
In simplified Chinese, the translation of the text "We can test our chatbot by asking it two questions related to our knowledge base (Treasure Island novel) and two unrelated questions." is:
"我们可以通过问两个与我们的知识库(《金银岛》小说)相关的问题和两个无关的问题来测试我们的聊天机器人。"
You can embed this translation within your HTML structure as shown above.
questions = [ 'Describe the character of Jim Hawkins.', 'What is the relationship between Jim Hawkins and Long John Silver?', 'Who is Albert Einstein?', 'What is the meaning of life?', ]
```
In this translation:
- "I hope you enjoyed this article and are inspired to try this on your documents." is translated to "希望您喜欢这篇文章,并受到启发尝试将此应用于您的文档中。"
- "Follow me on Medium for more Data Science posts like this, and let’s connect on LinkedIn." is translated to "关注我的Medium账号获取更多类似数据科学的文章,也欢迎在LinkedIn上与我联系。"
This maintains the intended meaning while translating it into simplified Chinese.
Sure, here's how you can translate "References" into simplified Chinese while maintaining the HTML structure:
```html
References
```
In simplified Chinese, "References" is translated as "参考文献" (Cānkǎo wénxiàn). However, HTML tags like `
` and `
` are kept the same as they are structural and not translated.
Certainly! Here's how you can structure the HTML while translating the text to simplified Chinese:
```html
```
This HTML code segment maintains the structure while displaying the translated text "Haystack Github 页面" and providing a link to the Haystack GitHub page in simplified Chinese.
Certainly! Here's how you can structure your HTML to display the text in simplified Chinese:
```html
Haystack API Reference
```
In this HTML structure:
- `lang="zh-CN"` indicates the language is simplified Chinese.
- The `` tag ensures proper character encoding.
- The `` tag provides a title for the webpage.
- The text "Haystack API 参考文档:" is the translation of "Haystack API Reference:" into simplified Chinese.
- The URL to the API reference is linked appropriately using the `` tag.