---
license: apache-2.0
language:
- en
library_name: transformers
pipeline_tag: text2text-generation
tags:
- information extraction
- entity linking
- named entity recogntion
- relation extraction
- text-to-text generation
---
# T5-for-information-extraction
This is an encoder-decoder model that was trained on various information extraction tasks, including text classification, named entity recognition, relation extraction and entity linking.
### How to use:
First of all, initialize the model:
```python
from transformers import T5Tokenizer, T5ForConditionalGeneration
import torch
device = torch.device("cuda") if torch.cuda.is_available() else torch.device('cpu')
tokenizer = T5Tokenizer.from_pretrained("google/flan-t5-large")
model = T5ForConditionalGeneration.from_pretrained("knowledgator/t5-for-ie").to(device)
```
You need to set a prompt and put it with text to the model, below are examples of how to use it for different tasks:
**named entity recognition**
```python
input_text = "Extract entity types from the text: Kyiv is the capital of Ukraine."
input_ids = tokenizer(input_text, return_tensors="pt").input_ids.to(device)
outputs = model.generate(input_ids)
print(tokenizer.decode(outputs[0]))
```
**text classification**
```python
input_text = "Classify the following text into the most relevant categories: Kyiv is the capital of Ukraine"
input_ids = tokenizer(input_text, return_tensors="pt").input_ids.to(device)
outputs = model.generate(input_ids)
print(tokenizer.decode(outputs[0]))
```
**relation extraction**
```python
input_text = "Extract relations between entities in the text: Kyiv is the capital of Ukraine."
input_ids = tokenizer(input_text, return_tensors="pt").input_ids.to(device)
outputs = model.generate(input_ids)
print(tokenizer.decode(outputs[0]))
```
### Unlimited-classifier
With our [unlimited-classifier](https://github.com/Knowledgator/unlimited_classifier) you can use `t5-for-ie` to classify text into millions of categories. It applies generation with contraints that is super helful when structured and deterministic outputs are needed.
To install it, run the following command:
```bash
pip install -U unlimited-classifier
```
Right now you can try it with the following example:
```python
from unlimited_classifier import TextClassifier
labels=[
"e1 - capital of Ukraine",
"e1 - capital of Poland",
"e1 - European city",
"e1 - Asian city",
"e1 - small country"
]
classifier = TextClassifier(
labels=['default'],
model=model,
tokenizer=tokenizer,
device=device #if cuda
)
classifier.initialize_labels_trie(labels)
text = "Kyiv is the capital Ukraine."
output = classifier.invoke(text)
print(output)
```
### Turbo T5
We recommend to use this model on GPU with our [TurboT5 package](https://github.com/Knowledgator/TurboT5), it uses custom CUDA kernels that accelerate computations and allows much longer sequences.
First of all, you need to install the package
```
pip install turbot5 -U
```
Then you can import different heads for various purposes; we released more encoder heads for tasks such as token classification, question-answering or text classification and, of course, encoder-decoder heads for conditional generation:
```python
from turbot5 import T5ForConditionalGeneration
from turbot5 import T5Config
from transformers import T5Tokenizer
import torch
tokenizer = T5Tokenizer.from_pretrained("google/flan-t5-large")
model = T5ForConditionalGeneration.from_pretrained("knowledgator/t5-for-ie",
attention_type = 'flash', #put attention type you want to use
use_triton=True).to('cuda')
```
### Feedback
We value your input! Share your feedback and suggestions to help us improve our models.
Fill out the feedback [form](https://forms.gle/5CPFFuLzNWznjcpL7)
### Join Our Discord
Connect with our community on Discord for news, support, and discussion about our models.
Join [Discord](https://discord.gg/dkyeAgs9DG)