Skip to content. | Skip to navigation


Annotating a text, or marking the pages with notes, is an excellent, if not essential, way to make the most out of the reading you do for college courses. Annotations make it easy to find important information quickly when you look back and review a text. They help you familiarize yourself with both the content and organization of what you read. They provide a way to begin engaging with ideas and issues directly through comments, questions, associations, or other reactions that occur to you as you read. In all these ways, annotating a text makes the reading process an active one, not just background for writing assignments, but an integral first step in the writing process.

A well-annotated text will accomplish all of the following:

Ideally, you should read a text through once before making major annotations. You may just want to circle unfamiliar vocabulary or concepts. This way, you will have a clearer idea about where major ideas and important information are in the text, and your annotating will be more efficient.

A brief description and discussion of four ways of annotating a text— highlighting/underlining, paraphrase/summary of main ideas, descriptive outline, and comments/responses —and a sample annotated text follow:


Highlighting or underlining key words and phrases or major ideas is the most common form of annotating texts. Many people use this method to make it easier to review material, especially for exams. Highlighting is also a good way of picking out specific language within a text that you may want to cite or quote in a piece of writing. However, over-reliance on highlighting is unwise for two reasons. First, there is a tendency to highlight more information than necessary, especially when done on a first reading. Second, highlighting is the least active form of annotating. Instead of being a way to begin thinking and interacting with ideas in texts, highlighting can become a postponement of that process.

On the other hand, highlighting is a useful way of marking parts of a text that you want to make notes about. And it’s a good idea to highlight the words or phrases of a text that are referred to by your other annotations.


Going beyond locating important ideas to being able to capture their meaning through paraphrase is a way of solidifying your understanding of these ideas. It’s also excellent preparation for any writing you may have to do based on your reading. A series of brief notes in the margins beside important ideas gives you a handy summary right on the pages of the text itself, and if you can take the substance of a sentence or paragraph and condense it into a few words, you should have little trouble clearly demonstrating your understanding of the ideas in question in your own writing.


A descriptive outline shows the organization of a piece of writing, breaking it down to show where ideas are introduced and where they are developed. A descriptive outline allows you to see not only where the main ideas are but also where the details, facts, explanations, and other kinds of support for those ideas are located.

A descriptive outline will focus on the function of individual paragraphs or sections within a text. These functions might include any of the following:

This list is hardly exhaustive and it’s important to recognize that several of these functions may be repeated within a text, particularly ones that contain more than one major idea.

Making a descriptive outline allows you to follow the construction of the writer’s argument and/or the process of his/her thinking. It helps identify which parts of the text work together and how they do so.


You can use annotation to go beyond understanding a text’s meaning and organization by noting your reactions—agreement/disagreement, questions, related personal experience, connection to ideas from other texts, class discussions, etc. This is an excellent way to begin formulating your own ideas for writing assignments based on the text or on any of the ideas it contains.

Document Actions

ABLE blog: thoughts, learnings and experiences

How to annotate: 5 strategies for success

How to annotate: 5 strategies for success

Have you ever written inside of a book?

It can feel a little mischievous to write on the pages of a book, as if we're breaking some rule. As children, we were taught not to write in our school books or library books, so annotations seemed taboo.

But what if writing in a book was not only OK but also encouraged?

Annotation is a practical and valuable way to engage with text, whether it’s a novel, textbook, or article. When done correctly, annotation can help you engage with the text, identify key points and themes, and even improve your comprehension.

In this article, we'll discuss what it means to annotate and how it can benefit your learning and comprehension. Get ready to learn how to annotate effectively with this five-step guide.

What is annotation?

How to annotate: sample annotations

Annotating is the act of adding notes, comments, or highlighting to a text as we read through it. These notes can be about anything — our thoughts, reactions, questions — and they can be written in any way we want, from symbols to complete sentences. This form of note-taking can help us remember key information in any text, whether it's a textbook for school or a novel we enjoy.

Although writing inside books has generally been discouraged and frowned upon in recent decades, the practice of annotation dates back centuries. The word “annote” from Latin “ad” meaning "to" + “notare” meaning "to mark or note," was first recorded in the mid-15th century.

Annotation has traditionally been used for scholars, researchers, and students to engage with texts. But it's also widely used by many others, from business professionals to authors like Mark Twain. His humorous marginalia is now collected and exhibited in libraries.

There are many ways to annotate a document, from underlining and highlighting to writing notes in the margins. Regardless of their form, annotations serve the same purpose — to help us better engage with and understand the text.

Why annotate?

Yellow notebook and a yellow pen

Annotating is an active reading strategy that facilitates the critical understanding of information in a text. As we note our thoughts and reflections, we can better engage with the material, identify main points and themes, and even improve our comprehension.

There are many benefits to annotating, whether we're reading for school or pleasure. Among the most significant are the following:

How to annotate in 5 easy steps

Different colors of markers

Knowing how to annotate is a valuable skill for anyone, whether you're a student, professional, or lifelong self-learner. If you'd like to use annotation to discover and recall key information from your reading, here are a handful of steps to get started.

1. Choose your annotation tools

The first step is to choose your annotation tools. The tools that you choose will depend on the format of your text. If you’re annotating the pages of a book or printed text on a piece of paper, you will need different tools than if you’re annotating an electronic document on a computer or tablet.

Some standard annotation tools for paper texts include:

If you're using a physical book, choose materials that won't damage the pages. This means avoiding pens and markers with bleed-through ink and opting for pencils instead. Highlighters are also a good option, as long as they don't bleed through the pages.

For electronic texts, you can use digital versions of many of the same tools as you would for paper texts. However, some annotation-specific tools may come in handy. These include:

If you're reading on a Kindle or other e-reader, you may be limited in the tools you can use. Check your device's documentation to see what options are available. No matter what format you're using, choosing tools you're comfortable with is key. This will make annotation more enjoyable and effective.

2. Select an annotation strategy

Now that you've selected tools, it's time to choose an annotation strategy. There are many ways to annotate, so experiment to find what works best for you. There are several common annotation strategies to try:

Once you choose a strategy that fits your reading intent, you're ready to start annotating.

3. Scan the text

Armed with your tools and strategy, you're ready to annotate For your first read, you will simply scan the text. During this initial read-through, there are a few key things to look for:

As you scan, note anything that confuses you or doesn't make sense. When you do a close reading, you'll want to pay attention to these areas.

4. Skim for major ideas

Two notebooks and a pencil

After a quick scan of the text, it's time for a closer look. Read the text again, focusing on the bigger picture to identify the author's main points. This step doesn't include close reading of the text, but you'll want to take a little more time and skim the text more closely than in your initial scan.

During this read-through, your goal is to discover the thesis or central argument of the text. Take some time to note the format of the text, how the information is structured, and how the author supports their claims. Underline or highlight the major ideas of each section as you skim. Lastly, paraphrase the article in your own words near the header or at the end of the text.

5. Complete a close read

Once you understand the main points, you're ready to do a close reading. This is where you'll finally slow down, focus on the details, and do some note-taking.

Start at the beginning and slowly re-read the text. Keep your annotation strategy in mind as you read. Knowing whether you want to take a descriptive approach, use the evaluative method, or try another strategy will help you look for the areas you should annotate.

Whichever strategy you use, there are a few helpful things to keep in mind:

Adding annotations to a text is an individual process, so there’s no right or wrong way. However, you can use these tips to maximize your annotations and ensure they're helpful.

Enhance your learning with effective annotation

Whether reading for leisure or learning, knowing how to annotate can benefit your experience. Using annotations effectively improves your understanding of a text and enhances your memory and comprehension. Annotating allows you to take a more active role in your self-learning so you're not just passively reading but critically engaging with the material.

If you're new to annotation, start small. Pick one article or chapter and experiment with different annotation strategies. As you become more comfortable, you can try different approaches and find the one(s) that work best for you. With time and practice, annotating will become second nature — and you'll be able to reap all the benefits of this powerful learning tool.

text annotation format

ABLE - the next-level all-in-one knowledge acquisition and productivity tool

Highlight, annotate or take notes from anywhere, and it's easily linked to a selected topic in your Knowledge Base.

I hope you have enjoyed reading this article. Feel free to share, recommend and connect 🙏

Connect with me on Twitter 👉

And follow Able's journey on Twitter:

And subscribe to our newsletter to read more valuable articles before it gets published on our blog.

Now we're building a Discord community of like-minded people, and we would be honoured and delighted to see you there.

Erin E. Rupp

Erin E. Rupp

Read more posts by this author

Task batching: 5 steps to become more productive in less time

Information processing model: understanding our mental mechanisms.

What is abstract thinking? 10 activities to improve your abstract thinking skills

What is abstract thinking? 10 activities to improve your abstract thinking skills

5 examples of cognitive learning theory (and how you can use them)

5 examples of cognitive learning theory (and how you can use them)

0 results found.

Building with passion in

One of the greatest challenges students face is adjusting to college reading expectations.  Unlike high school, students in college are expected to read more “academic” type of materials in less time and usually recall the information as soon as the next class.

The problem is many students spend hours reading and have no idea what they just read.  Their eyes are moving across the page, but their mind is somewhere else. The end result is wasted time, energy, and frustration…and having to read the text again.

Although students are taught  how to read  at an early age, many are not taught  how to actively engage  with written text or other media. Annotation is a tool to help you learn how to actively engage with a text or other media.

View the following video about how to annotate a text.

Annotating a text or other media (e.g. a video, image, etc.) is as much about you as it is the text you are annotating. What are YOUR responses to the author’s writing, claims and ideas? What are YOU thinking as you consider the work? Ask questions, challenge, think!

When we annotate an author’s work, our minds should encounter the mind of the author, openly and freely. If you met the author at a party, what would you like to tell to them; what would you like to ask them? What do you think they would say in response to your comments? You can be critical of the text, but you do not have to be. If you are annotating properly, you often begin to get ideas that have little or even nothing to do with the topic you are annotating. That’s fine: it’s all about generating insights and ideas of your own. Any good insight is worth keeping because it may make for a good essay or research paper later on.

The Secret is in the Pen

One of the ways proficient readers read is with a pen in hand. They know their purpose is to keep their attention on the material by:

The same applies for mindfully viewing a film, video, image or other media.

Annotating a Text

Review the video, “How to Annotate a Text.”  Pay attention to both how to make annotations and what types of thoughts and ideas may be part of your annotations as you actively read a written text.

Example Assignment Format: Annotating a Written Text

For the annotation of reading assignments in this class, you will cite and comment on a minimum of FIVE (5) phrases, sentences or passages from notes you take on the selected readings.

Here is an example format for an assignment to annotate a written text:

Example Assignment Format: Annotating Media

In addition to annotating written text, at times you will have assignments to annotate media (e.g., videos, images or other media). For the annotation of media assignments in this class, you will cite and comment on a minimum of THREE (3) statements, facts, examples, research or any combination of those from the notes you take about selected media.

Here is an example format for an assignment to annotate media:

Instructor Resources (Access Requires Login)

An Overview of the Writing Process

Using Sources

Definition Essay

Narrative Essay

Illustration/Example Essay

Compare/Contrast Essay

Cause-and-Effect Essay

Argument Essay

Click here to download the full example code

Annotations #

Annotations are graphical elements, often pieces of text, that explain, add context to, or otherwise highlight some portion of the visualized data. annotate supports a number of coordinate systems for flexibly positioning data and annotations relative to each other and a variety of options of for styling the text. Axes.annotate also provides an optional arrow from the text to the data and this arrow can be styled in various ways. text can also be used for simple text annotation, but does not provide as much flexibility in positioning and styling as annotate .

Basic annotation #

In an annotation, there are two points to consider: the location of the data being annotated xy and the location of the annotation text xytext . Both of these arguments are (x, y) tuples:


In this example, both the xy (arrow tip) and xytext locations (text location) are in data coordinates. There are a variety of other coordinate systems one can choose -- you can specify the coordinate system of xy and xytext with one of the following strings for xycoords and textcoords (default is 'data')

The following strings are also valid arguments for textcoords

For physical coordinate systems (points or pixels) the origin is the bottom-left of the figure or axes. Points are typographic points meaning that they are a physical unit measuring 1/72 of an inch. Points and pixels are discussed in further detail in Plotting in physical coordinates .

Annotating data #

This example places the text coordinates in fractional axes coordinates:


Annotating with arrows #

You can enable drawing of an arrow from the text to the annotated point by giving a dictionary of arrow properties in the optional keyword argument arrowprops .

In the example below, the xy point is in the data coordinate system since xycoords defaults to 'data'. For a polar axes, this is in (theta, radius) space. The text in this example is placed in the fractional figure coordinate system. matplotlib.text.Text keyword arguments like horizontalalignment , verticalalignment and fontsize are passed from annotate to the Text instance.


For more on plotting with arrows, see Customizing annotation arrows

Placing text annotations relative to data #

Annotations can be positioned at a relative offset to the xy input to annotation by setting the textcoords keyword argument to 'offset points' or 'offset pixels' .


The annotations are offset 1.5 points (1.5*1/72 inches) from the xy values.

Advanced annotation #

We recommend reading Basic annotation , text() and annotate() before reading this section.

Annotating with boxed text #

text takes a bbox keyword argument, which draws a box around the text:


The arguments are the name of the box style with its attributes as keyword arguments. Currently, following box styles are implemented.

Class Name Attrs Circle circle pad=0.3 DArrow darrow pad=0.3 Ellipse ellipse pad=0.3 LArrow larrow pad=0.3 RArrow rarrow pad=0.3 Round round pad=0.3,rounding_size=None Round4 round4 pad=0.3,rounding_size=None Roundtooth roundtooth pad=0.3,tooth_size=None Sawtooth sawtooth pad=0.3,tooth_size=None Square square pad=0.3


The patch object (box) associated with the text can be accessed using:

The return value is a FancyBboxPatch ; patch properties (facecolor, edgewidth, etc.) can be accessed and modified as usual. FancyBboxPatch.set_boxstyle sets the box shape:

The attribute arguments can also be specified within the style name with separating comma:

Defining custom box styles #

You can use a custom box style. The value for the boxstyle can be a callable object in the following forms:


See also Custom box styles . Similarly, you can define a custom ConnectionStyle and a custom ArrowStyle . View the source code at patches to learn how each class is defined.

Customizing annotation arrows #

An arrow connecting xy to xytext can be optionally drawn by specifying the arrowprops argument. To draw only an arrow, use empty string as the first argument:


The arrow is drawn as follows:

A path connecting the two points is created, as specified by the connectionstyle parameter.

The path is clipped to avoid patches patchA and patchB , if these are set.

The path is further shrunk by shrinkA and shrinkB (in pixels).

The path is transmuted to an arrow patch, as specified by the arrowstyle parameter.


The creation of the connecting path between two points is controlled by connectionstyle key and the following styles are available.

Name Attrs angle angleA=90,angleB=0,rad=0.0 angle3 angleA=90,angleB=0 arc angleA=0,angleB=0,armA=None,armB=None,rad=0.0 arc3 rad=0.0 bar armA=0.0,armB=0.0,fraction=0.3,angle=None

Note that "3" in angle3 and arc3 is meant to indicate that the resulting path is a quadratic spline segment (three control points). As will be discussed below, some arrow style options can only be used when the connecting path is a quadratic spline.

The behavior of each connection style is (limitedly) demonstrated in the example below. (Warning: The behavior of the bar style is currently not well-defined and may be changed in the future).


The connecting path (after clipping and shrinking) is then mutated to an arrow patch, according to the given arrowstyle .

Name Attrs - None -> head_length=0.4,head_width=0.2 -[ widthB=1.0,lengthB=0.2,angleB=None |-| widthA=1.0,widthB=1.0 -|> head_length=0.4,head_width=0.2 <- head_length=0.4,head_width=0.2 <-> head_length=0.4,head_width=0.2 <|- head_length=0.4,head_width=0.2 <|-|> head_length=0.4,head_width=0.2 fancy head_length=0.4,head_width=0.4,tail_width=0.4 simple head_length=0.5,head_width=0.5,tail_width=0.2 wedge tail_width=0.3,shrink_factor=0.5


Some arrowstyles only work with connection styles that generate a quadratic-spline segment. They are fancy , simple , and wedge . For these arrow styles, you must use the "angle3" or "arc3" connection style.

If the annotation string is given, the patch is set to the bbox patch of the text by default.


As with text , a box around the text can be drawn using the bbox argument.


By default, the starting point is set to the center of the text extent. This can be adjusted with relpos key value. The values are normalized to the extent of the text. For example, (0, 0) means lower-left corner and (1, 1) means top-right.


Placing Artist at anchored Axes locations #

There are classes of artists that can be placed at an anchored location in the Axes. A common example is the legend. This type of artist can be created by using the OffsetBox class. A few predefined classes are available in matplotlib.offsetbox and in mpl_toolkits.axes_grid1.anchored_artists .


The loc keyword has same meaning as in the legend command.

A simple application is when the size of the artist (or collection of artists) is known in pixel size during the time of creation. For example, If you want to draw a circle with fixed size of 20 pixel x 20 pixel (radius = 10 pixel), you can utilize AnchoredDrawingArea . The instance is created with a size of the drawing area (in pixels), and arbitrary artists can be added to the drawing area. Note that the extents of the artists that are added to the drawing area are not related to the placement of the drawing area itself. Only the initial size matters.

The artists that are added to the drawing area should not have a transform set (it will be overridden) and the dimensions of those artists are interpreted as a pixel coordinate, i.e., the radius of the circles in above example are 10 pixels and 5 pixels, respectively.


Sometimes, you want your artists to scale with the data coordinate (or coordinates other than canvas pixels). You can use AnchoredAuxTransformBox class. This is similar to AnchoredDrawingArea except that the extent of the artist is determined during the drawing time respecting the specified transform.

The ellipse in the example below will have width and height corresponding to 0.1 and 0.4 in data coordinates and will be automatically scaled when the view limits of the axes change.


Another method of anchoring an artist relative to a parent axes or anchor point is via the bbox_to_anchor argument of AnchoredOffsetbox . This artist can then be automatically positioned relative to another artist using HPacker and VPacker :


Note that, unlike in Legend , the bbox_transform is set to IdentityTransform by default

Coordinate systems for annotations #

Matplotlib Annotations support several types of coordinate systems. The examples in Basic annotation used the data coordinate system; Some others more advanced options are:

1. A Transform instance. For more information on transforms, see the Transformations Tutorial For example, the Axes.transAxes transform positions the annotation relative to the Axes coordinates and using it is therefore identical to setting the coordinate system to "axes fraction":


Another commonly used Transform instance is Axes.transData . This transform is the coordinate system of the data plotted in the axes. In this example, it is used to draw an arrow from a point in ax1 to text in ax2 , where the point and text are positioned relative to the coordinates of ax1 and ax2 respectively:


2. An Artist instance. The xy value (or xytext ) is interpreted as a fractional coordinate of the bounding box (bbox) of the artist:


Note that you must ensure that the extent of the coordinate artist ( an1 in this example) is determined before an2 gets drawn. Usually, this means that an2 needs to be drawn after an1 . The base class for all bounding boxes is BboxBase

3. A callable object that takes the renderer instance as single argument, and returns either a Transform or a BboxBase . For example, the return value of Artist.get_window_extent is a bbox, so this method is identical to (2) passing in the artist:


Artist.get_window_extent is the bounding box of the Axes object and is therefore identical to setting the coordinate system to axes fraction:


4. A blended pair of coordinate specifications -- the first for the x-coordinate, and the second is for the y-coordinate. For example, x=0.5 is in data coordinates, and y=1 is in normalized axes coordinates:


5. Sometimes, you want your annotation with some "offset points", not from the annotated point but from some other point or artist. text.OffsetFrom is a helper for such cases.


Using ConnectionPatch #

ConnectionPatch is like an annotation without text. While annotate is sufficient in most situations, ConnectionPatch is useful when you want to connect points in different axes. For example, here we connect the point xy in the data coordinates of ax1 to point xy in the data coordinates of ax2 :


Here, we added the ConnectionPatch to the figure (with add_artist ) rather than to either axes. This ensures that the ConnectionPatch artist is drawn on top of both axes, and is also necessary when using constrained_layout for positioning the axes.

Zoom effect between Axes #

mpl_toolkits.axes_grid1.inset_locator defines some patch classes useful for interconnecting two axes.


The code for this figure is at Axes Zoom Effect and familiarity with Transformations Tutorial is recommended.

Total running time of the script: ( 0 minutes 3.874 seconds)

Download Python source code:

Download Jupyter notebook: annotations.ipynb

Gallery generated by Sphinx-Gallery

text annotation format

What is text annotation? Five different types of annotations

Illustration of person interacting with symbols representing documents and text data

Natural language processing (NLP) is one of the biggest fields of AI development. Numerous NLP solutions like chatbots , automatic speech recognition and sentiment analysis programs improve efficiency and productivity in countless businesses around the world. Recent breakthroughs in NLP have even shown potential to help the speech impaired communicate freely with automatic speech recognition devices and the people around them. However, none of these amazing technologies would be possible without text annotation and the companies that provide these annotation services.

To train NLP algorithms , large annotated text datasets are required and every project has different requirements. For developers looking to build text datasets, here is a brief introduction to five common types of text annotation.

1. Entity annotation

Entity annotation is one of the most important processes in the generation of chatbot training datasets and other NLP training data. It is the act of locating, extracting and tagging entities in text. Types of entity annotation include:

Entity annotation teaches NLP models how to identify parts of speech, named entities and keyphrases within a text. In this task, annotators read the text thoroughly, locate the target entities, highlight them on the annotation platform and choose from a predetermined list of labels. To help NLP models learn about named entities further, entity annotation is often paired with entity linking.

2. Entity linking

Whereas entity annotation is the location and annotation of certain entities within a text, entity linking is the process of connecting those entities to larger repositories of data about them. Types of entity linking include:

Entity linking is used to both improve search functions and user experience. Annotators are tasked with linking labeled entities within a text to a URL that contains more information about the entity.

3. Text classification

Also known as text categorization or document classification, text classification tasks annotators with reading a body of text or short lines of text. Annotators must analyze the content, discern the subject, intent and sentiment within it and classify it based on a predetermined list of categories. Whereas entity annotation is the labeling of individual words or phrases, text classification is the process of annotating of an entire body or line of text with a single label. Related text annotation types include:

Because text classification is a broad category, various annotation types like product categorization or sentiment annotation are technically just specialized forms of text classification.

4. Sentiment annotation

Emotional intelligence is one of the most difficult fields of machine learning. Sometimes it is difficult even for humans to guess the true emotion behind a text message or email. It is exponentially more difficult for a machine to determine connotations hidden in texts that use sarcasm, wit or other casual forms of communication. To help machine learning models understand the sentiment within text, the models are trained with sentiment-annotated text data.

More broadly referred to as sentiment analysis or opinion mining, sentiment annotation is the labeling of emotion, opinion, or sentiment inherent within a body of text. Annotators are given texts to analyze and must choose which label best represent the emotion or opinion within the text. A simple example would be the analysis of customer reviews. Annotators would read the reviews and label them as positive, neutral or negative.

When built correctly with accurate training data, a strong sentiment analysis model can accurately detect the sentiment in user reviews, social media posts and more. The sentiment analysis model would then allow businesses to track public opinion about their products, allowing the companies to develop future strategies or alter current strategies accordingly.

5. Linguistic annotation

Also referred to as corpus annotation, linguistic annotation simply describes the process of tagging language data in text or audio recordings. With linguistic annotation, annotators are tasked with identifying and flagging grammatical, semantic or phonetic elements in the text or audio data. Types of linguistic annotation include:

Linguistic annotation is used to create AI training datasets for a variety of NLP solutions such as chatbots, virtual assistants, search engines, machine translation and more. These are just five types of text annotation commonly used in machine learning today. To read more about these five types of text annotation, please see our AI Data Solutions pages.

Be the first to know

Get curated content delivered right to your inbox. No more searching. No more scrolling.

Related insights

Autonomous driving case study with a green fern behind the paper

Computer vision annotation to support autonomous driving systems

TELUS International Data Annotation Chatbots case study

Infusing personality into conversational artificial intelligence systems through high-quality text data

Hour glass with sand falling

Are we headed for an AI data shortage?

Start chatbot

We're sorry, this computer has been flagged for suspicious activity.

If you are a member, we ask that you confirm your identity by entering in your email.

You will then be sent a link via email to verify your account.

If you are not a member or are having any other problems, please contact customer support.

Thank you for your cooperation


Top 6 Text Annotation Tools - NewsCatcher

Top 6 Text Annotation Tools

Even with all the recent advances in machine learning and artificial intelligence, we can’t escape the irony of the information age. In order for humans to rely on machines, machines need humans first to teach them. So if you're doing any type of supervised learning in your natural language processing pipeline, and you most likely are, data annotation has played a role in your work. Maybe you were lucky enough to have a large pre-annotated text corpus. And You didn't need to do all the text annotation for training yourself. But if you want to know how well it's doing in production, you'll have to annotate text at some point.

What Is Text Annotation?

Text annotation is simply reading natural language data and adding some additional information about it, in a machine-readable format. This additional information can be used to train machine learning models and to evaluate how well they perform.

Let’s say you have this piece of text in your corpus: “I am going to order some brownies for tomorrow”

labelling brownies and tomorrow individually

You might want to identify that brownies are a food item and/or that tomorrow is the delivery time. Then use that piece of information to ensure that you have some brownies for them and that you can deliver them tomorrow. 


Or maybe your task is on a larger scale. So you might want to annotate that the whole sentence has the intent of placing an order. 

Tips To Make Your Text Annotation Process Better

examples of simple and unnecessarily complex labels

The first thing you can do to make the life of your annotators and developers simple is to keep the labels simple and descriptive. food_item and time_of_delivery are good, straightforward labels that describe what you’re annotating. But labels like intent_1 , intent_1_ver2 , and unnecessary acronyms make it harder to quickly apply and check labels. 

Besides that, it’s unlikely that one person is going to be annotating everything on their own. Usually, there is a team of people that need to agree on what the labels mean. I recommend that you define your labels in a central shared location and keep this information up to date. So if a new label is added, or if the meaning of a label changes, everyone has easy access to the updates. 

Checking The Quality Of Your Text Annotations

One often overlooked thing is checking the quality of your annotations. Well, how does one even do that? You could go through all of the text again, but that’s inefficient.

One handy technique is to use a flag to denote confusion or uncertainty about an annotation. This enables annotators that are unsure about an annotation to flag it, allowing it to be double-checked later.

Another helpful method is to have some annotators look at the same data, and compare their annotations. You could use a measure of inter-rater reliability like Cohen's kappa , Scott's Pi , or Fleiss's kappa for this. Or you could create a confusion matrix.

example confusion matrix that compares the annotations made by two annotators

In the example above, annotator 1's labels are in the columns and annotator 2's labels are in the rows. You can see that they both agree on all the things labeled order_time , and they mostly agree on the food_item . But there seems to be a lot of confusion about where the label food_order should be applied.

This might be a sign that the label needs more clarification about its meaning, or that it needs to be slit into separate labels. Or maybe it should be removed completely.

Top Text Annotation Tools

Brat (browser-based rapid annotation tool).

brat is a free, browser-based online annotation tool for collaborative text annotation. It has a rich set of features such as integration with external resources including Wikipedia, support for automatic text annotation tools, and an integrated annotation comparison. The configurations for a project-specific labeling scheme is defined via .conf files , which are just plain text files. 

brat is more suited to annotating expressions and relationships between them, as annotating longer text spans like paragraphs is really inconvenient (the pop-up menu becomes larger than the screen). It only accepts text files as input documents, and the text file is not presented in the original formatting in the UI. So it is not suitable for labeling structured documents like PDFs. 

It comes with detailed install instructions and can be set up in a few lines of code. 

To set up the standalone version, just clone the GitHub repository :

Navigate into the directory and run the installation script:

You’ll be prompted for information like username, password, and admin contact email. Once you have filled in that information, you can launch brat:

You will then be able to access brat from the address printed in the terminal.

doccano is an open-source, browser-based annotation tool solely for text files. It has a more modern, attractive UI, and all the configuration is done in the web UI. But doccano is less adaptable than brat. It does not have support for labeling relationships between words and nested classifications, however, most models and use cases don’t need these anyway.

You can write and save annotation guidelines in the app itself and use keyboard shortcuts to apply an annotation. It also creates a basic diagrammatic overview of the labeling stats. All this makes doccano more beginner, and in general user, friendly. It does support multiple users, but there are no extra features for collaborative annotation. 

The setup process is also quite simple, just install doccano from PyPI:

After installation, run the following commands:

In another terminal, run the following command:

And go to in your browser.

LightTag is another browser-based text labeling tool, but it isn’t entirely free. It has a free-for-all version with 5,000 annotations a month for its basic functionalities. You just need to create an account to start annotating. 

The LightTag platform has its own AI model that learns from the previous labeling and makes annotation suggestions. For a fee, the platform also automates the work of managing a project. It assigns tasks to annotators, and ensures there is enough overlap and duplication to keep accuracy and consistency high.

What really makes LightTag stand out, in my opinion, is its data quality control features. It automatically generates precision and recall reports of your annotators, and has a dedicated review page that enables you to visually review your teams' annotations. LightTag also detects conflicts and allows you to auto-accept by majority or unanimous vote.

You can also load your production model’s predictions into LightTag and review them to detect data drift and monitor your production performance. It was recently acquired by , so you get access to their NLP platform with the subscriptions as well.

TagEditor is a standalone desktop application that enables you to quickly annotate text with the help of the spaCy library. It does not require any installations. You just need to download and extract the TagEditor.7z file from their GitHub repo , and run TagEditor.exe . Yes, it is limited to Windows 😬

With TagEditor you can annotate dependencies, parts of speech, named entities, text categories, and coreference resolution, create your customized annotated data or create a training dataset in .json or .spacy formats for training with spaCy library or PyTorch. If you're working with spaCy on Windows, TagEditor covers all bases.

tagtog is a user-friendly web-based text annotation tool. Similar to LigthTag, you don’t need to install anything because it runs on the cloud. You just have to set up a new account and create a project. But if you need to run it in a private cloud environment, you can use their Docker image.

It provides free features to cover manual annotation, train your own model with Webhooks, and a bunch of pre-annotated public datasets. tagtog accelerates manual annotation by automatically recognizing and annotating words you've labeled once.

You can upload files in the  supported format , such as  .csv ,  .xml ,  .html , or simply insert plain text.

There is a subscription fee for the more advanced features like automatic annotation, native PDF annotations, and customer support. tagtog also enables you to import annotated data from your own trained models. You can then review it in the annotation editor and make the necessary modifications. Finally, download the reviewed documents using their  API  and re-train your model. Check out the official  tutorials  for complete examples.

The folks at (the creators of spaCy ) have their own annotation tool called Prodigy . It is a scriptable annotation tool that enables you to leverage transfer learning to train production-quality models with very few examples. The creators say that it's "so efficient that data scientists can do the annotation themselves." It does not have a free offering, but you can check out its live demo .

The active learning aspect of this annotation tool means that you only have to annotate examples the model doesn’t already know the answer to, considerably speeding up the annotation process. You can choose from . jsonl , . json , and . txt formats for exporting your files.

To start annotating, you need to get a license key , and install Prodigy from PyPI:

And if you work with JupyterLab, you can install the jupyterlab-prodigy extension.

The extension enables you to execute recipe commands in notebook cells and opens the annotation UI in a JupyterLab tab, so you don’t need to leave your notebook to annotate data.

The Python library includes a range of pre-built workflows and command-line commands for various tasks, and well-documented components for implementing your own workflow scripts. Your scripts can specify how the data is loaded and saved, change which questions are asked in the annotation interface, and can even define custom HTML and JavaScript to change the behavior of the front-end.

Prodigy is not limited to text, it enables you to annotate images, videos, and audio. It also has an easy-to-use randomized A/B testing feature that you can use to evaluate models for tasks like machine translation, image captioning, image generation, dialogue generation, etc.

If you can't spend any money, and your annotation task is something simple go with doccano. And if you need to label relationships go with TagEditor, but if you want more control and customization you can use brat.

On the paid tools front, Prodigy is the best option if you are willing to write some code to create data quality reports and manage annotation conflicts. While Prodigy does look like a pricey option upfront, it is worth noting that it is a one-time fee for a lifetime license with one year of updates. On the other hand, tagtog and LightTag are subscription services. But if you want a more ready out-of-the-box solution, you can go with tagtog or LightTag.

10. Annotations 

Explicit labeling and annotation of particular data values is often an important element in data visualization and analysis. ParaView provides a variety of mechanisms to enable annotation in renderings ranging from free floating text rendered alongside other visual elements in the render view to data values associated with particular points or cells.

10.1. Annotation sources 

Several types of text annotations can be added through the Sources > Alphabetical menu. Text from these sources is drawn on top of 3D elements in the render view. All annotation sources share some common properties under the Display section of the Properties panel. These include Font Properties such as the font to use, the size of the text, its color, opacity, and justification, as well as text effects to apply such as making it bold, italic, or shadowed.


Fig. 10.1 Font property controls in annotation sources and filters. 

There are three fonts available in ParaView : Arial, Courier, and Times. You can also supply an arbitrary TrueType font file (*.ttf) to use by selecting the File entry in the popup menu under Font Properties and clicking on the ... button to the right of the font file text field. A file selection dialog will appear letting you choose a font file from the file system on which paraview (or pvpython ) is running.

The remaining display properties control where the text is placed in the render view. There are two modes for placement, one that uses predefined positions relative to the render view, and one that enables arbitrary interactive placement in the render view. The first mode is active when the Use Window Location checkbox is selected. It enables the annotation to be placed in one of the four corners of the render view or centered horizontally at the top or bottom of the render view. Buttons with icons representing the location are shown in the Pipeline browser. These buttons correspond to locations in the render view as depicted in Fig. 10.2 .


Fig. 10.2 Annotation placement buttons and where they place the annotation. 

The second mode, activated by clicking the Lower Left Corner checkbox, lets you arbitrarily place the annotation. If the Interactivity property is enabled, you can click and drag the annotation in the render view to place it, or you can manually enter a location where the lower left corner of the annotation’s bounding box should be placed. The coordinates are defined in terms of fractional coordinates that range from [0, 1] in the x and y dimensions. The coordinate system of the render view has a lower left origin, so a Lower Left Corner value of [0, 0] will place the annotation in the lower left corner of the render view.

10.1.1. Text source 

The Text source enables you to add a text annotation in the render view. It has one property defining what text is displayed. Text can be multiline, and it can contain numbers and unicode characters. Text may also contain Mathtex expressions between starting and ending dollar signs. Mathtext expressions are a subset of TeX math expressions [ dt ] . When Mathtext is used, the text can only be on a single line.


Fig. 10.3 An example of the Text source annotation in the upper left corner with a math expression rendered from a Mathtext [ dt ] expression. 

10.1.2. Annotate Time source 

The Annotate Time source is nearly identical to the Text source, but it also offers access to the current time value set in ParaView. Control over the format of the time display is available through the Format property. This property takes a string with optional formatting sections understood by the fmt library. By default, the value is “Time: {time:f}” where the “time” term inside the curly braces is replaced with ParaView’s current time value, and the “:f” specifies that it should be formatted as a float with six decimal digits. For other formatting possibilities, please see the fmt syntax description at . Examples are near the bottom of that page.

10.2. Annotation filters 

The annotation sources described in the previous section are available for adding text annotations that do not depend on any loaded datasets. To create annotations that show values from an available data source in the Pipeline Browser , several annotation filters are available. The properties available to change the text font and annotation location are exactly the same as those available for the annotation sources described in the previous section.

10.2.1. Annotate Attribute Data filter 

The Annotate Attribute Data makes it possible to create an annotation with a data value from an array (or attribute) in a dataset. To use the filter, first select the data array with the data of interest in the Select Input Array . These arrays may be point, cell, or field data arrays. The Element Id property specifies the index of the point or cell whose value should be shown in the annotation. If the selected input array is a field array (not associated with points or cells), the Element Id specifies the tuple of the array to show. When running in parallel, the Process Id denotes the process that holds the array from which the value should be obtained.


Fig. 10.4 Properties of the Annotate Attribute Data filter. 

The Prefix text property precedes the attribute value in the rendered annotation. There is no formatting string - the number is appended after the prefix. If the array value selected is a scalar value, the annotation will contain just the number. On the other hand, if the array value is from a multicomponent array, the individual components will be added to the annotation label in a space-separated list that is surrounded by parentheses.

10.2.2. Annotate Global Data filter 

Some file formats include the concept of global data , a single data value stored in the data array for each time step. ParaView stores the set of such data values as a field data array associated with the dataset with the same number of values as timesteps. To display these global values in the render view, use the Annotate Global Data filter. The Select Arrays popup menu shows the available field data arrays. The Prefix and Suffix properties come before and after the data value in the annotation, respectively. The Format property is a C language number format specifier as you would use in a printf function call. The filter will provide a warning if the format is invalid for the global data type.

10.2.3. Annotate Time Filter 

A nice feature of ParaView is that it supports data sources that produce different data at different times. Examples include file readers that read in data for a requested time step and certain temporal filters. Each data source advertises to ParaView the time values for which it can produce data. The data produced and displayed in ParaView depends on the time you set in the ParaView VCR Controls or Time Inspector panel.

What is even nicer is that you can have several data sources that each advertise and respond to a possibly unique set of times. That is, available sources do not need to advertise that they support the same set of time points - in fact, they may define data at entirely different time points. Given a requested time, each data source will produce the data corresponding to the time it supports closest to the requested time. This features makes it possible to create animations from multiple datasets varying at different time resolutions, for instance.

While the Annotate Time source described earlier can be used to display ParaView ’s currently requested time, it does not show the time value to which a particular data source is responding. For example ParaView may be requesting data for time 5.0, but if a source produces data for time values 10.0 and above, it will produce the data for time 10.0, even though time 5.0 was requested. To show the time for which a data source is producing data, you can instead use the Annotate Time Filter . Simply attach it to the source of interest. If several data sources are present, a separate instance of this filter may be attached to each one.

Control over the format of the time display is available through the Format property. The format string is a string supported by the fmt library and defaults to “Time: {time:f}” where the “time” string inside the curly braces is replaced by the currently loaded time value of the data source to which this filter is attached. This filter also includes Shift and Scale properties used to linearly transform the displayed time. The time value is first multiplied by the scale and then the shift is then added to it.

10.2.4. Environment Annotation filter 

If you want to display information about the environment in which a visualization was generated, use the Environment Annotation filter. By attaching this filter to a data source, you can have it automatically display your user name on the system running ParaView , show which operating system was used to generate it, present the date and time when the visualization was generated, and show the file name of the source data if applicable. Each of these items can be enabled or disabled by checkboxes in the Properties panel for this filter.

If the input source for this filter is a file reader, the File Name property is initialized to the name of the file. A checkbox labeled Display Full Path is available to show the full path of the file, but if unchecked, only the file name will be displayed. This default file path can be overridden by changing the text in the File Name property. If this filter is attached to a filter instead of a reader, the file path will be initialized to an empty string. It can be changed to the original file name manually, or an arbitrary string if so desired.

10.2.5. Python Annotation filter 

The most versatile annotation filter, the Python Annotation filter, offers the most general way of generating annotations that include information about the dataset. Values from point, cell, field, and row data arrays may be accessed and combined with mathematical operations in a short Python expression defined in the Expression property. The type of data arrays available for use in the Expression is set with the Array Association property.

Before going further, let’s look at an example of how to use the Python Annotation filter. Assume you want to show a data value at from a point array named Pressure at point index 22. First, set the Array Association to Point Data to ensure point data arrays can be referenced in the Python annotation expression. To show the pressure value at point 22, set the Expression property to


Fig. 10.5 An example of a basic Python Annotation filter showing the value of the Pressure array at point 22. 

You can augment the Python expression to give the annotation more meaning. To add a prefix, set the Expression to

noindent All data arrays in the chosen association are provided as variables that can be referenced in the expression as long as their names are valid Python variables. Array names that are invalid Python variable names are available through a modified version of the array name. This sanitized version of the array name consists of the subset of characters in the array name that are letters, numbers, or underscore ( _ ) joined together without spaces in the order in which they appear in the original array name. For example, an array named Velocity X will be made available in the variable VelocityX .

Point and cell data in composite datasets such as multiblock datasets is accessed somewhat differently than point or cell data in non-composite datasets. The expression

retrieves a single scalar value from a point array in a non-composite dataset, the same expression retrieves the 22nd element of the Pressure array in each block. These values are held in a VTKCompositeDataArray, which is a data structure that holds arrays associated with each block in the dataset. Hence, when the expression

is evaluated on a composite dataset, the value returned and displayed is actually an assemblage of array values from each block. To access the value from a single block, the array from that block must be selected from the Arrays member of the result VTKCompositeDataArray. To show the Pressure value associated with 22nd point of block 2, for example, set the expression to

This expression yields a single data value in the rendered annotation, assuming that the Pressure array has a single component. To show a range of array values, use a Python range expression in the index into the Pressure field, e.g.,

This will show the Pressure values for points 22 and 23 from block 2. You can also retrieve more than one array using an index range on the Arrays member, e.g.,

This expression evaluates to Pressure for points 22 and 23 for blocks 2, 3, and 4.

The Array Association is really a convenience to make the set of data arrays of the given association available as variables that can be used in the Expression . The downside of using these array names is that arrays from only one array association are available at a time. That means annotations that require the combination of a cell data array and point data array, for example, cannot be expressed with these convenience Python variables alone.

Fortunately, you can access any array in the input to this filter with a slightly more verbose expression. For example, the following expression multiplies a cell data value by a point data value:

Note that the arrays in the input are accessed in the above example using their original array names.

In the example above, the expression inputs[0] refers to the first input to the filter. While this filter can take only one input, it is based on the same code used by the Python Calculator (described in Section 5.9.3 ), which puts its several inputs into a Python list, hence the input to the Python Annotation filter is referenced as inputs[0] .

In addition to making variables for the current array association available in the expression, this filter provides some other variables that can be useful when computing an annotation value.

points : Point locations (available for datasets with explicit points).

time_value , t_value : The current time value set in ParaView .

time_steps , t_steps : The number of timesteps available in the input.

time_range , t_range : The range of timesteps in the input.

time_index , t_index : The index of the current timestep in ParaView .

There are some situations where the variables above are not defined. If the input has no explicitly defined points, e.g., image data, the points variable is not defined. If the input does not define timesteps, the time_* and t_* variables are not defined.

are available, including the NumPy integration and access to the NumPy and SciPy methods.

Common Errors

The time-related variables are not needed to index into point or cell data arrays. Only the point and cell arrays loaded for the current timestep are available in the filter. You cannot access point or cell data from arbitrary timesteps from within this filter.

With the capabilities in this filter, it is possible to reproduce the other annotation sources and filters, as shown below.

Text source: To produce the text “My annotation”, write "My annotation"

Annotate Time source: To produce the equivalent of Time: {time:f} , write "Time: %f" % time_value

Annotate Attribute Data filter: To produce the equivalent of setting Select Input Array to EQPS , Element Id to 0 and Process Id to 0, and Prefix to Value is: , write 'Value is: %.12f' % (inputs[0].CellData['EQPS'][0]) .

Annotate Global Data filter: To produce the same annotation as setting Select Arrays to KE , Prefix to Value is: , Format to %7.5g , and empty suffix, write "Value is: %7.5g" % (inputs[0].FieldData['KE'].Arrays[0][time_index])

Annotate Time Filter : To produce the equivalent of setting Format to Time: %f , Shift to 3, and Scale to 2, write "Time: %f" % (2*time_value + 3) .

The examples above are meant to illustrate the versatility of the Python Annotation filter. Using the specialized annotation sources and filters are likely to be more convenient than entering the expressions in the examples.

Purdue Online Writing Lab College of Liberal Arts

text annotation format

MLA In-Text Citations: The Basics

OWL logo

Welcome to the Purdue OWL

This page is brought to you by the OWL at Purdue University. When printing this page, you must include the entire legal notice.

Copyright ©1995-2018 by The Writing Lab & The OWL at Purdue and Purdue University. All rights reserved. This material may not be published, reproduced, broadcast, rewritten, or redistributed without permission. Use of this site constitutes acceptance of our terms and conditions of fair use.

MLA (Modern Language Association) style is most commonly used to write papers and cite sources within the liberal arts and humanities. This resource, updated to reflect the MLA Handbook (9 th ed.), offers examples for the general format of MLA research papers, in-text citations, endnotes/footnotes, and the Works Cited page.

Guidelines for referring to the works of others in your text using MLA style are covered throughout the  MLA Handbook  and in chapter 7 of the  MLA Style Manual . Both books provide extensive examples, so it's a good idea to consult them if you want to become even more familiar with MLA guidelines or if you have a particular reference question.

Basic in-text citation rules

In MLA Style, referring to the works of others in your text is done using parenthetical citations . This method involves providing relevant source information in parentheses whenever a sentence uses a quotation or paraphrase. Usually, the simplest way to do this is to put all of the source information in parentheses at the end of the sentence (i.e., just before the period). However, as the examples below will illustrate, there are situations where it makes sense to put the parenthetical elsewhere in the sentence, or even to leave information out.

General Guidelines

In-text citations: Author-page style

MLA format follows the author-page method of in-text citation. This means that the author's last name and the page number(s) from which the quotation or paraphrase is taken must appear in the text, and a complete reference should appear on your Works Cited page. The author's name may appear either in the sentence itself or in parentheses following the quotation or paraphrase, but the page number(s) should always appear in the parentheses, not in the text of your sentence. For example:

Both citations in the examples above, (263) and (Wordsworth 263), tell readers that the information in the sentence can be located on page 263 of a work by an author named Wordsworth. If readers want more information about this source, they can turn to the Works Cited page, where, under the name of Wordsworth, they would find the following information:

Wordsworth, William. Lyrical Ballads . Oxford UP, 1967.

In-text citations for print sources with known author

For print sources like books, magazines, scholarly journal articles, and newspapers, provide a signal word or phrase (usually the author’s last name) and a page number. If you provide the signal word/phrase in the sentence, you do not need to include it in the parenthetical citation.

These examples must correspond to an entry that begins with Burke, which will be the first thing that appears on the left-hand margin of an entry on the Works Cited page:

Burke, Kenneth. Language as Symbolic Action: Essays on Life, Literature, and Method . University of California Press, 1966.

In-text citations for print sources by a corporate author

When a source has a corporate author, it is acceptable to use the name of the corporation followed by the page number for the in-text citation. You should also use abbreviations (e.g., nat'l for national) where appropriate, so as to avoid interrupting the flow of reading with overly long parenthetical citations.

In-text citations for sources with non-standard labeling systems

If a source uses a labeling or numbering system other than page numbers, such as a script or poetry, precede the citation with said label. When citing a poem, for instance, the parenthetical would begin with the word “line”, and then the line number or range. For example, the examination of William Blake’s poem “The Tyger” would be cited as such:

The speaker makes an ardent call for the exploration of the connection between the violence of nature and the divinity of creation. “In what distant deeps or skies. / Burnt the fire of thine eyes," they ask in reference to the tiger as they attempt to reconcile their intimidation with their relationship to creationism (lines 5-6).

Longer labels, such as chapters (ch.) and scenes (sc.), should be abbreviated.

In-text citations for print sources with no known author

When a source has no known author, use a shortened title of the work instead of an author name, following these guidelines.

Place the title in quotation marks if it's a short work (such as an article) or italicize it if it's a longer work (e.g. plays, books, television shows, entire Web sites) and provide a page number if it is available.

Titles longer than a standard noun phrase should be shortened into a noun phrase by excluding articles. For example, To the Lighthouse would be shortened to Lighthouse .

If the title cannot be easily shortened into a noun phrase, the title should be cut after the first clause, phrase, or punctuation:

In this example, since the reader does not know the author of the article, an abbreviated title appears in the parenthetical citation, and the full title of the article appears first at the left-hand margin of its respective entry on the Works Cited page. Thus, the writer includes the title in quotation marks as the signal phrase in the parenthetical citation in order to lead the reader directly to the source on the Works Cited page. The Works Cited entry appears as follows:

"The Impact of Global Warming in North America." Global Warming: Early Signs . 1999. Accessed 23 Mar. 2009.

If the title of the work begins with a quotation mark, such as a title that refers to another work, that quote or quoted title can be used as the shortened title. The single quotation marks must be included in the parenthetical, rather than the double quotation.

Parenthetical citations and Works Cited pages, used in conjunction, allow readers to know which sources you consulted in writing your essay, so that they can either verify your interpretation of the sources or use them in their own scholarly work.

Author-page citation for classic and literary works with multiple editions

Page numbers are always required, but additional citation information can help literary scholars, who may have a different edition of a classic work, like Marx and Engels's  The Communist Manifesto . In such cases, give the page number of your edition (making sure the edition is listed in your Works Cited page, of course) followed by a semicolon, and then the appropriate abbreviations for volume (vol.), book (bk.), part (pt.), chapter (ch.), section (sec.), or paragraph (par.). For example:

Author-page citation for works in an anthology, periodical, or collection

When you cite a work that appears inside a larger source (for instance, an article in a periodical or an essay in a collection), cite the author of the  internal source (i.e., the article or essay). For example, to cite Albert Einstein's article "A Brief Outline of the Theory of Relativity," which was published in  Nature  in 1921, you might write something like this:

See also our page on documenting periodicals in the Works Cited .

Citing authors with same last names

Sometimes more information is necessary to identify the source from which a quotation is taken. For instance, if two or more authors have the same last name, provide both authors' first initials (or even the authors' full name if different authors share initials) in your citation. For example:

Citing a work by multiple authors

For a source with two authors, list the authors’ last names in the text or in the parenthetical citation:

Corresponding Works Cited entry:

Best, David, and Sharon Marcus. “Surface Reading: An Introduction.” Representations , vol. 108, no. 1, Fall 2009, pp. 1-21. JSTOR, doi:10.1525/rep.2009.108.1.1

For a source with three or more authors, list only the first author’s last name, and replace the additional names with et al.

Franck, Caroline, et al. “Agricultural Subsidies and the American Obesity Epidemic.” American Journal of Preventative Medicine , vol. 45, no. 3, Sept. 2013, pp. 327-333.

Citing multiple works by the same author

If you cite more than one work by an author, include a shortened title for the particular work from which you are quoting to distinguish it from the others. Put short titles of books in italics and short titles of articles in quotation marks.

Citing two articles by the same author :

Citing two books by the same author :

Additionally, if the author's name is not mentioned in the sentence, format your citation with the author's name followed by a comma, followed by a shortened title of the work, and, when appropriate, the page number(s):

Citing multivolume works

If you cite from different volumes of a multivolume work, always include the volume number followed by a colon. Put a space after the colon, then provide the page number(s). (If you only cite from one volume, provide only the page number in parentheses.)

Citing the Bible

In your first parenthetical citation, you want to make clear which Bible you're using (and underline or italicize the title), as each version varies in its translation, followed by book (do not italicize or underline), chapter, and verse. For example:

If future references employ the same edition of the Bible you’re using, list only the book, chapter, and verse in the parenthetical citation:

John of Patmos echoes this passage when describing his vision (Rev. 4.6-8).

Citing indirect sources

Sometimes you may have to use an indirect source. An indirect source is a source cited within another source. For such indirect quotations, use "qtd. in" to indicate the source you actually consulted. For example:

Note that, in most cases, a responsible researcher will attempt to find the original source, rather than citing an indirect source.

Citing transcripts, plays, or screenplays

Sources that take the form of a dialogue involving two or more participants have special guidelines for their quotation and citation. Each line of dialogue should begin with the speaker's name written in all capitals and indented half an inch. A period follows the name (e.g., JAMES.) . After the period, write the dialogue. Each successive line after the first should receive an additional indentation. When another person begins speaking, start a new line with that person's name indented only half an inch. Repeat this pattern each time the speaker changes. You can include stage directions in the quote if they appear in the original source.

Conclude with a parenthetical that explains where to find the excerpt in the source. Usually, the author and title of the source can be given in a signal phrase before quoting the excerpt, so the concluding parenthetical will often just contain location information like page numbers or act/scene indicators.

Here is an example from O'Neill's  The Iceman Cometh.

WILLIE. (Pleadingly) Give me a drink, Rocky. Harry said it was all right. God, I need a drink.

ROCKY. Den grab it. It's right under your nose.

WILLIE. (Avidly) Thanks. (He takes the bottle with both twitching hands and tilts it to his lips and gulps down the whiskey in big swallows.) (1.1)

Citing non-print or sources from the Internet

With more and more scholarly work published on the Internet, you may have to cite sources you found in digital environments. While many sources on the Internet should not be used for scholarly work (reference the OWL's  Evaluating Sources of Information  resource), some Web sources are perfectly acceptable for research. When creating in-text citations for electronic, film, or Internet sources, remember that your citation must reference the source on your Works Cited page.

Sometimes writers are confused with how to craft parenthetical citations for electronic sources because of the absence of page numbers. However, these sorts of entries often do not require a page number in the parenthetical citation. For electronic and Internet sources, follow the following guidelines:

Miscellaneous non-print sources

Two types of non-print sources you may encounter are films and lectures/presentations:

In the two examples above “Herzog” (a film’s director) and “Yates” (a presentor) lead the reader to the first item in each citation’s respective entry on the Works Cited page:

Herzog, Werner, dir. Fitzcarraldo . Perf. Klaus Kinski. Filmverlag der Autoren, 1982.

Yates, Jane. "Invention in Rhetoric and Composition." Gaps Addressed: Future Work in Rhetoric and Composition, CCCC, Palmer House Hilton, 2002. Address.

Electronic sources

Electronic sources may include web pages and online news or magazine articles:

In the first example (an online magazine article), the writer has chosen not to include the author name in-text; however, two entries from the same author appear in the Works Cited. Thus, the writer includes both the author’s last name and the article title in the parenthetical citation in order to lead the reader to the appropriate entry on the Works Cited page (see below).

In the second example (a web page), a parenthetical citation is not necessary because the page does not list an author, and the title of the article, “MLA Formatting and Style Guide,” is used as a signal phrase within the sentence. If the title of the article was not named in the sentence, an abbreviated version would appear in a parenthetical citation at the end of the sentence. Both corresponding Works Cited entries are as follows:

Taylor, Rumsey. "Fitzcarraldo." Slant , 13 Jun. 2003, Accessed 29 Sep. 2009. 

"MLA Formatting and Style Guide." The Purdue OWL , 2 Aug. 2016, Accessed 2 April 2018.

Multiple citations

To cite multiple sources in the same parenthetical reference, separate the citations by a semi-colon:

Time-based media sources

When creating in-text citations for media that has a runtime, such as a movie or podcast, include the range of hours, minutes and seconds you plan to reference. For example: (00:02:15-00:02:35).

When a citation is not needed

Common sense and ethics should determine your need for documenting sources. You do not need to give sources for familiar proverbs, well-known quotations, or common knowledge (For example, it is expected that U.S. citizens know that George Washington was the first President.). Remember that citing sources is a rhetorical task, and, as such, can vary based on your audience. If you’re writing for an expert audience of a scholarly journal, for example, you may need to deal with expectations of what constitutes “common knowledge” that differ from common norms.

Other Sources

The MLA Handbook describes how to cite many different kinds of authors and content creators. However, you may occasionally encounter a source or author category that the handbook does not describe, making the best way to proceed can be unclear.

In these cases, it's typically acceptable to apply the general principles of MLA citation to the new kind of source in a way that's consistent and sensible. A good way to do this is to simply use the standard MLA directions for a type of source that resembles the source you want to cite.

You may also want to investigate whether a third-party organization has provided directions for how to cite this kind of source. For example, Norquest College provides guidelines for citing Indigenous Elders and Knowledge Keepers⁠ —an author category that does not appear in the MLA Handbook . In cases like this, however, it's a good idea to ask your instructor or supervisor whether using third-party citation guidelines might present problems.

Formatting Examples

For best results, turn on hidden characters by clicking the ¶ (paragraph) symbol in the Home ribbon of Microsoft Word. When pasting text into the template, right-click where you want to paste the text, and then select the “Paste text only” option to clear all formatting attributes from the source document. Use the formatting checklist to check that all of your content is formatted according to Graduate College requirements. Finally, schedule a format check  with a CCE thesis/dissertation consultant to get feedback on your formatting.

text annotation format

 Title Page

Including a Title Page is required . Some of the most common thesis/dissertation mistakes are made on the title page. Follow the bullets below, paying close attention to capitalization, spacing, line breaks, actual date of graduation, and copyright statement. These bullets will guide you through the title page.

Annotated Examples

Sample Title Page

Master's Title Page

Master's Title Page_Co-Majors

Master's Title Page_Specialization

Master's Title Page _2 Specializations

Master's Title Page_2 Majors and 3 Specializations

Mater's Title Page_Double Degree

PhD Title Page

PhD Title Page_Co-Majors

PhD Title Page_Specialization

PhD Title Page_2 Specializations

PhD Title Page_2 Majors and 3 Specializations

Sample Title Page with Alternative Student Name  

  Table of Contents

Including a Table of Contents is required . The Table of Contents shows the reader the organization of the document as well as displays the correct page numbers. The bulleted items explain various heading styles for you to follow. They also demonstrate various preliminary pages' formats.

Traditional Format Table of Contents

Journal Format Table of Contents

Single Journal Format Table of Contents

MFA Format Table of Contents

  List of Tables or Figures

Including a List of Tables and/or a List of Figures is optional . If you have one list, you must have the other list. Each list starts on a new page regardless of how many entries are on the page.

List of Tables Traditional Format

List of Figures Traditional Format

List of Tables Journal Article Format (Option 1: Restart numbering)

List of Figures Journal Article Format (Option 1: Restart numbering)

List of Tables Journal Article Format (Option 2: Use chapter number)

List of Figures Journal Article Format (Option 2: Use chapter number)

Including an abstract is required . The abstract is a concise summary of the dissertation or thesis’s purpose, highlights the main points, states the method used, provides findings, and states conclusions. Oftentimes, readers only read the abstract to determine if they should read the document.

Abstract Page

 Traditional Body Format

There are two format styles—traditional and journal. The traditional format is basically one document; whereas, journal is a compilation of several manuscripts for journal publication. See the Journal Article Format  section for instructions for papers including journal publications.

 Journal Article Format

This manuscript format refers to the use of articles and/or book chapters to replace the standard thesis/dissertation chapters. Publication of the manuscript(s) is not a requirement of this format. The graduate student is the major contributor and writer of the manuscript(s). In the case of multiple authorship, the contribution of each author is detailed in the Introduction or footnotes.

Author Affiliation

 Bibliography or References

Including a bibliography or reference section is required . Every thesis/dissertation that uses other sources, either by direct quotation or reference, must have a bibliography or listing of these sources at the end before the Appendices. The organization of references or bibliography according to specific disciplines can be accepted if approved by the committee.

Citation Style Guides

Traditional Format References

Journal Format References

Discipline-specific Organization

Use one or more appendices for materials that do not pertain directly, but are relevant, to the main text. Examples of appendix material include survey instruments, Institutional Review Board approval, permission forms, additional data, or raw data. The material within the appendices may be in a different font or use different spacing from the main text of the dissertation/thesis.

 Tables, Figures & Schemas

Table Example

Table Continued Example

Figure Example

Figure Continued Example (Long Caption)

Figure Continued Example (Long Figure)

Figure in Portrait and Landscape Orientation

Page Numbers of Landscape Pages

You are using an outdated browser. Please upgrade your browser to improve your experience.

Text and Annotations in Python

How to add text labels and annotations to plots in python.

Plotly is a free and open-source graphing library for Python. We recommend you read our Getting Started guide for the latest installation or upgrade instructions, then move on to our Plotly Fundamentals tutorials or dive straight in to some Basic Charts tutorials .

Adding Text to Figures ¶

As a general rule, there are two ways to add text labels to figures:

The differences between these two approaches are that:

Text on scatter plots with Plotly Express ¶

Here is an example that creates a scatter plot with text labels using Plotly Express.

Text on scatter plots with Graph Objects ¶

Text positioning in dash ¶.

Dash is the best way to build analytical apps in Python using Plotly figures. To run the app below, run pip install dash , click "Download" to get the code and run python .

Get started with the official Dash docs and learn how to effortlessly style & deploy apps like this with Dash Enterprise .

Sign up for Dash Club → Free cheat sheets plus updates from Chris Parmer and Adam Schroeder delivered to your inbox every two months. Includes tips and tricks, community apps, and deep dives into the Dash architecture. Join now .

Controlling Text Size with uniformtext ¶

For the pie , bar -like, sunburst and treemap traces, it is possible to force all the text labels to have the same size thanks to the uniformtext layout parameter. The minsize attribute sets the font size, and the mode attribute sets what happens for labels which cannot fit with the desired fontsize: either hide them or show them with overflow.

Here is a bar chart with the default behavior which will scale down text to fit.

Here is the same figure with uniform text applied: the text for all bars is the same size, with a minimum size of 8. Any text at the minimum size which does not fit in the bar is hidden.

Controlling Maximum Text Size ¶

The textfont_size parameter of the the pie , bar -like, sunburst and treemap traces can be used to set the maximum font size used in the chart. Note that the textfont parameter sets the insidetextfont and outsidetextfont parameter, which can also be set independently.

Text Annotations ¶

Annotations can be added to a figure using fig.add_annotation() .

3D Annotations ¶

Custom text color and styling ¶, styling and coloring annotations ¶, text font as an array - styling each text element ¶, positioning text annotations absolutely ¶.

By default, text annotations have xref and yref set to "x" and "y" , respectively, meaning that their x/y coordinates are with respect to the axes of the plot. This means that panning the plot will cause the annotations to move. Setting xref and/or yref to "paper" will cause the x and y attributes to be interpreted in paper coordinates .

Try panning or zooming in the following figure:

Adding Annotations Referenced to an Axis ¶

To place annotations relative to the length or height of an axis, the string ' domain' can be added after the axis reference in the xref or yref fields. For example:

Specifying the Text's Position Absolutely ¶

The text coordinates / dimensions of the arrow can be specified absolutely, as long as they use exactly the same coordinate system as the arrowhead. For example:

Customize Displayed Text with a Text Template ¶

To show an arbitrary text in your chart you can use texttemplate , which is a template string used for rendering the information, and will override textinfo . This template string can include variables in %{variable} format, numbers in d3-format's syntax , and date in d3-time-format's syntax . texttemplate customizes the text that appears on your plot vs. hovertemplate that customizes the tooltip text.

Customize Text Template ¶

The following example uses textfont to customize the added text.

Set Date in Text Template ¶

The following example shows how to show date by setting axis.type in funnel charts . As you can see textinfo and texttemplate have the same functionality when you want to determine 'just' the trace information on the graph.

Reference ¶

See for more information and chart attribute options!

What About Dash? ¶

Dash is an open-source framework for building analytical applications, with no Javascript required, and it is tightly integrated with the Plotly graphing library.

Learn about how to install Dash at .

Everywhere in this page that you see , you can display the same figure in a Dash application by passing it to the figure argument of the Graph component from the built-in dash_core_components package like this:

text annotation format

Make Our Dictionary Yours

Sign up for our weekly newsletters and get:

By signing in, you agree to our Terms and Conditions and Privacy Policy .

We'll see you in your inbox soon.

Annotation Examples Simply Explained

Book with pen and underlined text

You’ve likely encountered notes in the margins of a book or paper, but you may skip over them or not quite understand why they’re there. Annotations ensure that you understand what is happening in a text when you come back to it, or provide others with valuable information about the text.

Why Use Annotations?

Annotations are used in order to add notes or more information about a topic as well as to explain content listed on a page or at the end of a publication. These notes can be added by the reader or printed by the author or publisher.

Another common use of annotations is in an annotated bibliography which details the information about sources used to back up research. Ultimately, annotations help readers to understand the main text and ensure the reader has all the information they need.

Annotations in Content

Highlighting or underlining key words or major ideas is the most common way of annotating and makes it easy to find those important passages again. You may also find annotations in some texts written by the authors themselves, regarding related topics or expanding on an idea.

Annotations can be used to:

provide reminders

help a reader engage with the text

add context

offer further clarification

How to Annotate

Take notes for a class, prepare for a presentation, book club or any other occasion: You can make your annotations as simple or elaborate as you want. For instance, you can use different color highlighters or sticky notes to color code the text for different things such as:

comments and questions


text you want to quote

use of themes

vocabulary words to look up

Reader Annotations

You can go beyond marking up text and write notes on your reaction to the content or on its connection with other works or ideas. A reader might annotate a book, paper, pamphlet. or other texts for the following reasons:

a student noting important ideas from the content by highlighting or underlining passages in their textbook

a student noting examples or quotes in the margins of a textbook

a reader noting content to be revisited at a later time

a Bible reader noting sources in their Bible of relevant verses for study

an academic noting similar or contradictory studies related to their article or book

Examples of Reader Annotations

In this example, the reader makes notes about the article including their understanding of the material and how they can apply it. Here, the reader asks questions about the text that they want to see answered in the following sections or questions they themselves will address in their own paper.

Notebook With Notes On Margins

Author or Publisher Annotations

Sometimes annotations can be found in the margins of a book, paper, article or other text for various purposes, including:

pronunciation explanations

explanation about a word or information in a sentence

notes from a scholar about the historical context of an event described in the main text

notes from a scientist about the study discussed in the main text

notes made by a realtor on a housing listing

notes from the coroner on an autopsy report

notes in a law book showing related court cases

Example of Author Annotations

Authors, editors, publishers, or others may use annotations to give historical context, explain the meaning of a word, offer insights or highlight information. In this edition of The Art of War by Sun Tzu, annotations are provided to explain the text.

Book with Chapter I. The Art of War, by Sun Tzŭ

Annotated Bibliography

Annotated bibliographies should include a brief summary about the source , the value of the source, and an evaluation of the reliability.

The list should be titled Annotated Bibliography or Annotated List of Works Cited. The bibliography should be listed alphabetically by author or title, by date of publication or by subject according to MLA and APA formatting styles .

Examples of Annotations in an Annotated Bibliography

The purpose of an annotated bibliography is to explain how you will use a source and your understanding of the information.

Anxiety Disorder. (2013). NIMH Website. Retrieved from: This is a comprehensive listing of anxiety-related disorders with descriptions of each disorder and narratives from those who have coped with the symptoms. The site discusses how sufferers can get help and what resources are available. There is information about research currently underway to help with these disorders.The National Institute of Mental Health is a renowned organization committed to the education of individuals on mental health issues as well as research and dissemination of information pertaining to all aspects of mental health. This site is a useful tool to understand anxiety disorders and how they affect those suffering from them. Dimeff, Linda, Koerner, Kelly, and Linehand, Marsha. Dialectical Behavior Therapy in Clinical Practice: Applications across Disorders and Settings. Guilford Press. 2007. Dialectical Behavior Therapy, initially created as a means of treatment for those with bipolar disorder who showed suicidal tendencies, is now a more generalized method of treatment, established as effective for many psychological disorders. This book outlines the method and its increased usage. Guilford Press is a publisher of many reputable books, both scholarly and in the self-help genre, that relate to psychology and psychiatry. The authors are highly knowledgeable in their field of practice making the source highly reliable Magnitude of placebo response and drug-placebo differences across psychiatric disorders. (2004). Psychological Medicine. Retrieved from This article discusses the usage and effectiveness of various drugs in treatment for myriad psychiatric disorders, including anxiety. Six different disorders were studied using placebos to study the effects Published by Cambridge Press, a respected and renowned publication, this scholarly article is highly informative, and the data considered reliable Self Help Publications. (2013). Anxiety and Depression Association of America. Retrieved from This site is a useful tool to find resources to help those dealing with anxiety-related issues, no matter what the disorder. It is useful for various age ranges, giving information for adults as well as how to help teens or young children. Furthermore, the list offers some informative texts that would be helpful to those whose family members, friends, or other loved ones are trying to cope with anxiety-related disorders. Composed by a reputable organization, the Anxiety and Depression Association of America, this list is a useful means of locating print resources to learn more about anxiety and how to help oneself, or others. Some treatment methods are discussed in detail in some publications, as well, helping researchers and others to better understand some of the specifics of treatment options.

Annotations are one of the best ways to make easy-to-follow notes. Explore other ways you can create notes for a paper or other document.

Annotated Bibliography Examples in APA and MLA Style

Footnote Examples and Format Tips

Ibid: Examples of Usage

Annotation format ¶

An annotation is a JSON document that contains a number of fields describing the position and content of an annotation within a specified document:

Note that this annotation includes some info stored by plugins (notably the Permissions plugin and Tags plugin ).

This basic schema is completely extensible . It can be added to by plugins, and any fields added by the frontend should be preserved by backend implementations. For example, the Store plugin (which adds persistence of annotations) allow you to specify arbitrary additional fields using the annotationData attribute.


Data Annotation

End-to-End Text Annotation

High-Quality Training Data for Automated Text Classification and Natural Language Processing

High-Quality Text Annotation and Classification Services

With Innodata’s full suite of text annotation and classification services, you can scale your AI models and ensure model flexibility with high-quality annotated text data. Leverage Innodata’s deep annotation expertise to streamline text annotation and classification using active learning, NLP, and human experts-in-the-loop.

text annotation format

Data-Centric Approach

Our data-centric approach helps jump-start your models with the highest quality of labeled text data for your AI/ML models.

text annotation format

Multiple Configurations

With world-class workbenches, our services can be configurable to address any requirements for labeling and annotation, including support for any text data input format in 40+ languages.

text annotation format

Highly Secure

Multiple security features within our operations result in the strictest control and compliance in labeling or classifying your text data.

text annotation format

Industry-Specific Ready

With our global workforce of 4,000+ domain-specific subject matter experts, you can rely on Innodata to annotate, classify, and validate exceptional text data for any industry-specific use case in any major language with confidence.

text annotation format

Quality Assurance, Validation, & Control

Innodata can support various annotation processes such as single pass, double pass, double pass blind, or inter-annotator agreement processes — giving you the highest-quality annotated data to ensure your AI/ML model accuracy.

text annotation format

Scalable Output In Any Format

Our services can simultaneously process thousands of text files from multiple sources across different locations. Additionally, Innodata can support, load, or build custom taxonomies and deliver annotated text data in formats such as JSON, HTML, or XML.

Our Expertise at Work Across Diverse Applications

Whether you need document classification or NER annotation to automate document recognition or build your NLP models, our best-in-class text annotation solution delivers ground truth data for any situation in 40+ languages.

Content Classification

Build binary classifiers and other classification models for automatically categorizing your content.

Intent Identification

Analyze the intent behind user-generated content to determine the proper response or course of action.

Content Detection

Automatically detect the types of content present in textual data to support content moderation, such as hate speech and other types of inappropriate content.

Semantic Identification

Build and train models to automatically extract concepts and entities, such as people, organizations, places, or topics from textual data.

Risk Assessment

Find and evaluate potential risks involved in an organization or undertaking. Identify and filter data based on types of risks.

Sentiment Analysis

Identify the sentiment behind your text to populate relevant metrics and other data analytics.

Relationship Mapping

Build relationships from your semantic data to support the development of knowledge maps.

Medical Data Research

Drug search, discovery, and complex annotation of medical literature, healthcare records, and medical data — including medical concepts and diseases.

Legal Data Analysis

Manage contract analysis and identify critical data from legislations, statutes, rules & regulations, circulars, and case law.

Business Intelligence

Identify meaningful and useful business data to enable more effective operational insights and decision-making. Support company data analysis, insight, and benchmarking.

Text Annotation Workbenches to Create your Training Datasets and Train Your AI Models

text annotation format

Identify annotated entities that play a role in an annotated event and assign the entity’s role in the event.

text annotation format

Label multiple identifiers via different agents and scoring for critical datasets. Integrate multiple hierarchical taxonomies for use in multi-label annotation.

text annotation format

Group two or more annotated entities in your text data that refer to the same-named entity.

text annotation format

Classify any document and record with the relevant labels from custom taxonomies, helping to train and scale your AI/ML models faster.

Text Annotation Customer Success Stories

text annotation format

Multilingual Content Moderation for Global Social Media Platform

A leading social media platform needed to improve modeling for search query relevance, ad review and placement, sentiment analysis and toxicity, and content moderation.

Innodata's Solution:

Deploy world-class content moderation, data annotation services, platforms, and SMEs to support the success of business units throughout the entire company (product, advertising, design, trust, data science, etc.).

Helping to perfect AI modeling to increase user engagement, maximize ad revenue, and build trust with their community through content moderation.

Delivering 100% accurate ground truth data to train and accelerate AI models focused on the platform’s most mission-critical data-driven initiatives across the globe.

text annotation format

Risk Assessment Financial Annotation for Global Financial Firm

A global financial services firm required the annotation of technical financial documents to train its AI platform to conduct risk assessments for investment portfolios.

Global Financial Services Firm Builds AI Capability for Risk Assessment

Global financial services firm required the annotation of technical financial documents to train its AI platform to conduct risk assessments for investment portfolios.

Innodata's Solution: 

Innodata's subject matter experts created a taxonomy focused on model-relevant risk categories and risk stages. To bolster speed and ensure high-quality annotations throughout the articles, Innodata employed a combination of humans-in-the-loop and ML-enhanced technology. The articles were first run through Innodata's proprietary text annotation platform, which completed an auto annotation. Then experts did a round of annotations to ensure accuracy and reviewed any low confidence annotations. Finally, our quality assurance specialist reviewed and resolved any discrepancies. The platform and annotators labeled the risks associated with events, named individuals, and named companies within each article. They then identified risks within each article and assigned a risk category and level based on the agreed-upon taxonomy.

The leading global financial services company's risk assessment platform received a large annotated dataset of the highest quality based on thousands of relevant articles. This pristine data, along with the risk taxonomy provided, helped train and improve the model performance.

text annotation format

Multilingual Text Annotation for Leading Booking Engine Chatbot

A leading travel aggregator and booking engine required highly accurate annotated datasets for a booking assistant bot that operates in multiple languages.

Travel Aggregator Deploys AI Booking Assistant Chatbot

Leading travel aggregator and booking engine required highly accurate datasets for a booking assistant bot that operates in multiple languages.

To reach the seamless performance expected by the travel aggregator and its customers, the chatbot needed to be trained for many utterances per intent in English, Chinese, and French. To achieve this, the Innodata team annotated incoming chatbot messages for any mention of specific hotels, occurrences of locations (including cities, regions, districts, and addresses), and categorized the intent of the utterances based on their subjective interpretation of the message. This process of annotating utterances and assigning labels from a taxonomy allowed the chatbot to understand customer intent from incoming messaging and provide relevant and accurate responses. To ensure the accuracy and quality of the annotations, the Innodata team utilized a double-blind pass process, in which two different annotators provide annotations and an adjudicator provides a judgement on any discrepancies between the annotations. 

The travel aggregator received highly accurate annotated and labeled datasets which enabled the booking assistant AI chatbot to appropriately respond to customer messages and inquiries with relevant information in multiple languages improving the net promoter score. 

text annotation format

Annotation for Life Science Data Provider’s Drug Search & Discovery

A leading abstract and indexing scientific research discovery solution required annotated data to enhance its platform for drug search/discovery and research funding.

Life Science Data Provider Acquires Right Annotated Data for Drug Search & Discovery

A leading abstract and indexing scientific research discovery solution required annotated data to enhance its platform to enable predictive and prescriptive analytics for drug discovery and research funding.

To begin the process of creating high-quality labeled scientific datasets, Innodata's annotation experts set up their platform to automate the process of entity extraction to pull out relevant keywords and references from the source documents. Innodata's experts then annotated millions of pages of scientific data, research, and articles. They created structured XML datasets that could be used to train the AI platform in predictive and prescriptive analytics.

With these datasets, the research discovery solution was able to provide more insight and give its users actionable intelligence. This intelligence is then used by the customer to research fund attribution, drive investments of new drug development, and avoid patent infringement.

The Innodata Process

An End-to-End Approach

Consult with a dedicated account manager. Generate test pilot to fine-tune annotation specifications to meet client’s ML needs. Align text annotation goals. Establish quality metrics, KPIs, & SLAs. A flexible & iterative approach.

A tailored team of in-house SMEs are selected based on project requirements and individual domain expertise. Annotators complete a customized training program after which they receive weekly audit reports, showing the results of auto-validation, random QC spot checks, and KPI performance evaluations. ​

Our text annotation services and platform offer various workbenches with unparalleled control of annotation workflows. Time-to-value enhancers augment and streamline work. Highly accurate annotated data. Infinite scale. ​

Continuous delivery of ground-truth annotated text data to power your text classification and NLP models. Secure data transfers. Strengthen model weaknesses with iterative batches to facilitate active learning. ​

Our Team of Data Experts

Our team is comprised of data experts with years of developing strategies that enable companies to manage and distribute data using AI-based solutions. Book a time that works for you, and let us help develop a custom solution for your unique needs.

text annotation format

Pricing Packages

Text Annotation Services

We offer cost effective packages while maintaining the highest quality.  All of our packages include:  


(NASDAQ: INOD) Innodata is a global data engineering company delivering the promise of AI to many of the world’s most prestigious companies. We provide AI-enabled software platforms and managed services for AI data collection/annotation, AI digital transformation, and industry-specific business processes. Our low-code Innodata AI technology platform is at the core of our offerings. In every relationship, we honor our 30+ year legacy delivering the highest quality data and outstanding service to our customers.

text annotation format

You’re So Close to High-Quality Text Annotation

It Takes Less Than 30 Seconds to Inquire

Step 1

Expedite Your AI Process Without Sacrificing Quality So Your Team Can Focus on Innovation

Privacy Overview

brat standoff format

Annotations created in brat are stored on disk in a standoff format: annotations are stored separately from the annotated document text, which is never modified by the tool.

For each text document in the system, there is a corresponding annotation file. The two are associatied by the file naming convention that their base name (file name without suffix) is the same: for example, the file DOC-1000.ann contains annotations for the file DOC-1000.txt .

Within the document, individual annotations are connected to specific spans of text through character offsets. For example, in a document beginning "Japan was today struck by ..." the text "Japan" is identified by the offset range 0..5. (All offsets all indexed from 0 and include the character at the start offset but exclude the character at the end offset.)

The specific standoff flavor used by brat is similar to the BioNLP Shared Task standoff format , and described in detail in the following.

Text files ( .txt )

Text files are expected to have the suffix .txt and contain the text of the original documents input into the system.

The document texts are stored in plain text files encoded using UTF-8 (an extension of ASCII — plain ASCII texts work also). Document texts may contain newlines, which will be shown as line breaks by brat. However, it is not necessary for the documents to contain any newlines: brat can perform its own sentence segmentation for display using a reliable algorithm. (Whether or not newlines are included in the original text documents, the text files themselves are not modified.)

Annotation files ( .ann )

Annotations are stored in files with the .ann suffix. The various annotation types that may be contained in these files are discussed in the following.

General annotation structure

All annotations follow the same basic structure: Each line contains one annotation, and each annotation is given an ID that appears first on the line, separated from the rest of the annotation by a single TAB character. The rest of the structure varies by annotation type.

Examples of annotation for an entity ( T1 ), an event trigger ( T2 ), an event ( E1 ) M1 ) --> and a relation ( R1 ) are shown in the following.

Detailed descriptions of these annotations are given below.

Text-bound annotations

Text-bound annotations are an important category of annotation related to both entity and event annotations. Text-bound annotation identifies a specific span of text and assigns it a type.

All text-bound annotations follow the same structure. As in all annotations, the ID occurs first and is delimited from the rest of the line with a TAB character. The primary annotation is given as a SPACE-separated triple (type, start-offset, end-offset). The start-offset is the index of the first character of the annotated span in the text (".txt" file), i.e. the number of characters in the document preceding it. The end-offset is the index of the first character after the annotated span. Thus, the character in the end-offset position is not included in the annotated span. For reference, the text spanned by the annotation is included, separated by a TAB character.

As of v1.3 , brat supports also discontinuous text-bound annotations, where the annotation involves more than one continuous span of characters. The standoff representation for these annotations is a straightforward extension of the single-span case. For example, one possible annotation for "North and South America" would be represented as follows:

The (start-offset, end-offset) pairs forming a discontinuous annotation are separated by semicolons, and the texts of by these spans are joined by single space characters to form the reference text of the annotation.

Annotation ID conventions

All annotations IDs consist of a single upper-case character identifying the annotation type and a number. The initial ID characters relate to annotation types as follows:

Additionally, an asterisk ("*") can be used as a placeholder for an ID in special cases.

Entity annotations

Each entity annotation has a unique ID and is defined by type (e.g. Person or Organization ) and the span of characters containing the entity mention (represented as a "start end" offset pair).

Each line contains one text-bound annotation identifying the entity mention in text.

Event annotations

Each event annotation has a unique ID and is defined by type (e.g. MERGE-ORG ), event trigger (the text stating the event) and arguments.

The event triggers, annotations marking the word or words stating each event, are text-bound annotations and their format is identical to that for entities. (The IDs of triggers occupy the same space as the IDs of entities, and these must not overlap.)

As for all annotations, the event ID occurs first, separated by a TAB character. The event trigger is specified as TYPE:ID and identifies the event type and its trigger through the ID. By convention, the event type is specified both in the trigger annotation and the event annotation. The event trigger is separated from the event arguments by SPACE. The event arguments are a SPACE-separated set of ROLE:ID pairs, where ROLE is one of the event- and task-specific argument roles (e.g. Theme , Cause , Site ) and the ID identifies the entity or event filling that role. Note that several events can share the same trigger and that while the event trigger should be specified first, the event arguments can appear in any order.

Relation annotations

Binary relations have a unique ID and are defined by their type (e.g. Origin , Part-of ) and their arguments.

The format is similar to that applied for events, with the exception that the annotation does not identify a specific piece of text expressing the relation ("trigger"): the ID is separated by a TAB character, and the relation type and arguments by SPACE.

Relation arguments are commonly identified simply as Arg1 and Arg2 , but the system can be configured to use any labels (e.g. Anaphor and Antecedent ) in the standoff representation.

Equivalence relations

The system also supports a special syntax for equivance relations. Equivalence relations are symmetric and transitive relations that define sets of annotations to be equivalent in some sense (e.g. referring to the same real-world entity). Such relations can be represented in a compact way as a SPACE-separated list of the IDs of the equivalent annotations.

For backward compatibility with existing standoff formats, brat supports also the special "empty" ID value " * " for equivalence relation annotations.

Attribute and modification annotations

Attribute annotations are binary or multi-valued "flags" that specify further aspects of other annotations. Attributes have a unique ID and are defined by reference to the ID of the annotation that the attribute marks and the attribute value.

As for other annotations, the ID is separated by TAB and other fields by space.

Binary attributes such as A1 in the above example need only specify the attribute name and the ID of the marked annotation: the value true is implied for the binary attribute. The absence of a binary attribute annotation is interpreted as the attribute having the value false .

Multi-valued attributes specify also the attribute value, separated by SPACE. The values of multi-valued attributes are fully configurable.

For backward compatibility with existing standoff formats, brat also recognizes the ID prefix " M " for attributes.

Normalization annotations

Normalization annotations are supported as of v1.3 . Each normalization annotation has a unique ID and is defined by reference to the ID of the annotation that the normalization attaches to and a RID:EID pair identifying the external resource ( RID ) and the entry within that resource ( EID ). Additionally, each normalization annotation has the type Reference (no other values for the type are currently defined) and a human-readable string value for the entry referred to.

The following example shows a normalization annotation attached to the text-bound annotation "T1" (not shown) and associates it with the Wikipedia entry with the Wikipedia ID "534366" ("Barack Obama").

(Note that the association of the EID values such as "Wikipedia" or "GO" with the relevant external resources is not represented in the standoff but controlled by the tools.conf configuration file .)

As for text-bound annotations, the ID and the text are separated by TAB characters, and other fields (here, "Reference", "T1" and "Wikipedia:534366") by SPACE.

Note annotations

Note annotations provide a way to associate freeform text with either the document or a specific annotation. Notes lines begin with the number (or "hash") sign # .

Notes with an "ID" starting with # followed by a TAB character attach to specific annotations. For these notes, the second TAB-separated field contains a note type and the ID of the annotation that the note is attached to, and the third TAB-separated field contains the text of the note.

The note type can be freely assigned and any number of notes can be attached to a single annotation. (However, currently only a single note of type AnnotatorNotes can be edited from the brat UI.)

© 2010-2022 the brat contributors



  1. Why Data Annotation is Important for Machine Learning and AI?

    text annotation format

  2. How to Annotate a Text (and Why It's Helpful)

    text annotation format

  3. What Is Text Annotation? 5 Different Types Of Annotations

    text annotation format

  4. How to Annotate a Text (and Why It's Helpful)

    text annotation format

  5. Text Annotation Services & Tools for Machine Learning

    text annotation format

  6. Text Annotation Tools and Services

    text annotation format


  1. How to Annotate Your TextAid Documents

  2. Jazz piano, improvisation, Misty

  3. Annotating Text with Explain Everything

  4. External Text Features Editorial Mini-Lesson

  5. 12 Text Formatting

  6. Tagging Simulator


  1. What Is an Annotated Bibliography?

    The annotations themselves are usually between 50 and 200 words in length, typically formatted as a single paragraph. This can vary depending on the word count of the assignment, the relative length and importance of different sources, and the number of sources you include.

  2. Annotating a Text

    A well-annotated text will accomplish all of the following: clearly identify where in the text important ideas and information are located express the main ideas of a text trace the development of ideas/arguments throughout a text introduce a few of the reader's thoughts and reactions

  3. How to annotate: 5 strategies for success

    1. Choose your annotation tools. The first step is to choose your annotation tools. The tools that you choose will depend on the format of your text. If you're annotating the pages of a book or printed text on a piece of paper, you will need different tools than if you're annotating an electronic document on a computer or tablet.

  4. Text annotation

    Annotations may be anchored to very broad stretches of text (such as an entire document) or very narrow sections (such as a specific letter, word, or phrase). The marker is the visual appearance of the anchor, such as whether it is a grey underline or a yellow highlight.

  5. How to Write an Annotation

    How to Annotate A Text Example Assignment Format: Annotating a Written Text For the annotation of reading assignments in this class, you will cite and comment on a minimum of FIVE (5) phrases, sentences or passages from notes you take on the selected readings. Here is an example format for an assignment to annotate a written text:

  6. Annotations

    Annotations #. Annotations. #. Annotations are graphical elements, often pieces of text, that explain, add context to, or otherwise highlight some portion of the visualized data. annotate supports a number of coordinate systems for flexibly positioning data and annotations relative to each other and a variety of options of for styling the text.

  7. What Is Text Annotation? 5 Different Types Of Annotations

    Also known as text categorization or document classification, text classification tasks annotators with reading a body of text or short lines of text. Annotators must analyze the content, discern the subject, intent and sentiment within it and classify it based on a predetermined list of categories.

  8. Annotation Examples & Techniques

    An annotation might look like highlighting information information or vocabulary in a text, marking a text with symbols to represent different ideas, creating notes in the margins of a text...

  9. Top 6 Text Annotation Tools

    Text annotation is simply reading natural language data and adding some additional information about it, in a machine-readable format. This additional information can be used to train machine learning models and to evaluate how well they perform. Let's say you have this piece of text in your corpus: "I am going to order some brownies for tomorrow"

  10. 10. Annotations

    The Text source enables you to add a text annotation in the render view. It has one property defining what text is displayed. Text can be multiline, and it can contain numbers and unicode characters. ... The Prefix and Suffix properties come before and after the data value in the annotation, respectively. The Format property is a C language ...

  11. MLA In-Text Citations: The Basics

    In-text citations: Author-page style MLA format follows the author-page method of in-text citation. This means that the author's last name and the page number (s) from which the quotation or paraphrase is taken must appear in the text, and a complete reference should appear on your Works Cited page.

  12. Annotated Samples

    When pasting text into the template, right-click where you want to paste the text, and then select the "Paste text only" option to clear all formatting attributes from the source document. Use the formatting checklistto check that all of your content is formatted according to Graduate College requirements.

  13. Text and annotations in Python

    Text annotations can be positioned absolutely or relative to data coordinates in 2d/3d cartesian subplots only. Traces cannot be positioned absolutely but can be positioned relative to data coordinates in any subplot type. Traces also be used to draw shapes, although there is a shape equivalent to text annotations.

  14. Annotation Examples Simply Explained

    Sometimes annotations can be found in the margins of a book, paper, article or other text for various purposes, including: pronunciation explanations explanation about a word or information in a sentence notes from a scholar about the historical context of an event described in the main text

  15. Annotation format

    Annotation format — Annotator 1.2.10 documentation Annotation format ¶ An annotation is a JSON document that contains a number of fields describing the position and content of an annotation within a specified document:

  16. Text Annotation for AI & ML

    Text Annotation Workbenches to Create your Training Datasets and Train Your AI Models Entity Annotation Event Annotation Multi-Label Annotation Relationship Annotation Co-Reference Annotation Document and Record Classification Text Annotation Customer Success Stories Multilingual Content Moderation for Global Social Media Platform

  17. English Composition I: Rhetorical Methods-Based

    For the annotation of reading assignments in this class, you will cite and comment on a minimum of FIVE (5) phrases, sentences or passages from notes you take on the selected readings. Here is an example format for an assignment to annotate a written text: Example Assignment Format: Annotating Media

  18. Standoff format

    Annotations created in brat are stored on disk in a standoff format: annotations are stored separately from the annotated document text, which is never modified by the tool. For each text document in the system, there is a corresponding annotation file. The two are associatied by the file naming convention that their base name (file name ...

  19. UBIAI Easy to Use Text Annotation Tool

    Easy to Use Text Annotation Tool | Upload documents in native PDF, CSV, Docx, html or ZIP format, start annotating, and create advanced NLP model in a few hours. Collaborate with other users to accelerate the document annotation process. Manage users, assign documents and track the annotation progress. UBIAI high quality OCR annotation allow you to label native PDFs and images directly and ...

  20. Free APA Citation Generator

    APA Style is widely used by students, researchers, and professionals in the social and behavioral sciences. Scribbr's free citation generator automatically generates accurate references and in-text citations. This citation guide outlines the most important citation guidelines from the 7th edition APA Publication Manual (2020).