|
| 1 | +# ExampleCompany take home test |
| 2 | + |
| 3 | +This is a frontend exercise that will give you a chance to see some of the things we build at ExampleCompany. |
| 4 | + |
| 5 | +At ExampleCompany we want to make instructing AI systems as intuitive as teaching a colleague. Right now, machine learning instruction happens primarily through providing hundreds of hand labelled examples, so we want to make that process as easy, intuitive and _fun_ as possible. |
| 6 | + |
| 7 | +For this task, we look at the problem of [named-entity recognition (NER)](https://en.wikipedia.org/wiki/Named-entity_recognition). We would like you to build an annotation interface for NER – to display a textual document and be able to label spans of text with one of a handful of classes. |
| 8 | + |
| 9 | +### Requirements |
| 10 | + |
| 11 | +- the user needs to be able to read the document |
| 12 | +- select a span of text |
| 13 | +- assign one of the predefined labels `['person', 'organization', 'location', 'misc']` to the text. |
| 14 | +- the user can see the state of the highlighted text |
| 15 | +- the user can remove an annoation |
| 16 | +- the annotations should be available as a JSON array of objects with the following structure of start and end indexes, the inside text, and the label |
| 17 | + |
| 18 | +``` |
| 19 | +[{"start": 12, "end": 30, "text": "Southampton United", label: 'organization'},] |
| 20 | +``` |
| 21 | + |
| 22 | +How you do this is up to you! People can spend a long time annotating documents like this, so some thought to making intuitive, robust and maybe even fun is wanted. |
| 23 | + |
| 24 | +# Guidelines |
| 25 | + |
| 26 | +We'd like you to spend no more than 3-4 hours working on this. Please let us know how much time you spent so we can calibrate our expectations. |
| 27 | + |
| 28 | +# Hints / Tips |
| 29 | + |
| 30 | +- This initial code is using React. If you'd prefer to use other libraries or frameworks, you're welcome to. |
| 31 | +- You can use any libraries, frameworks, tools you want. |
| 32 | +- Pick any UI toolkit or component library (Bootstrap, TailwindCSS, Ant Design etc.) you'd like to use, but try to make everything look consistent. |
| 33 | +- How you want to store state is up to you. |
| 34 | +- It doesn't have to look pixel perfect and it doesn't need amazing animations, but we do care a lot about UX and usability at ExampleCompany. |
| 35 | +- Paying attention to details like padding, alignment, and cursors is appreciated! |
| 36 | +- Handle the UX edge-cases! For example, what happens when the spans overflow a single line? |
| 37 | + |
| 38 | +# Getting started |
| 39 | + |
| 40 | +This project was bootstrapped with [Create React App](https://github.com/facebook/create-react-app). |
| 41 | +Run the following commands to get started. |
| 42 | + |
| 43 | +``` |
| 44 | +cd app |
| 45 | +npm start |
| 46 | +``` |
| 47 | + |
| 48 | +You can clear out the file structure as you wish. |
| 49 | + |
| 50 | +Any questions, let us know! team@humanloop.com |
0 commit comments