mirror of
https://github.com/neuml/txtai.git
synced 2026-10-12 02:19:52 +00:00
20 KiB
20 KiB
In [ ]:
%%capture
!pip install git+https://github.com/neuml/txtai#egg=txtai[pipeline,workflow] sacremoses
# Get test data
!wget -N https://github.com/neuml/txtai/releases/download/v2.0.0/tests.tar.gz
!tar -xvzf tests.tar.gzIn [ ]:
%%capture
from txtai.pipeline import Summary, Textractor, Transcription, Translation
# Summary instance
summary = Summary()
# Text extraction
textractor = Textractor()
# Transcription instance
transcribe = Transcription("facebook/wav2vec2-large-960h")
# Create a translation instance
translate = Translation()In [ ]:
from txtai.workflow import Workflow, Task
# Workflow that translate text to French
workflow = Workflow([Task(lambda x: translate(x, "fr"))])
# Data to run through the pipeline
data = ["The sky is blue", "Forest through the trees"]
# Workflows are generators for efficiency, read results to list for display
list(workflow(data))['Le ciel est bleu', 'Forêt à travers les arbres']
In [ ]:
from txtai.workflow import FileTask
tasks = [
FileTask(transcribe, r"\.wav$"),
Task(lambda x: translate(x, "fr"))
]
# List of files to process
data = [
"txtai/US_tops_5_million.wav",
"txtai/Canadas_last_fully.wav",
"txtai/Beijing_mobilises.wav",
"txtai/The_National_Park.wav",
"txtai/Maine_man_wins_1_mil.wav",
"txtai/Make_huge_profits.wav"
]
# Workflow that translate text to French
workflow = Workflow(tasks)
# Run workflow
list(workflow(data))["Les cas de virus U sont en tête d'un million", "La dernière plate-forme de glace entièrement intacte du Canada s'est soudainement effondrée en formant un berge de glace de taille manhatten", "Bagage mobilise les embarcations d'invasion le long des côtes à mesure que les tensions tiwaniennes s'intensifient", "Le service des parcs nationaux met en garde contre le sacrifice d'amis plus lents dans une attaque nue", "L'homme principal gagne du billet de loterie", "Faire d'énormes profits sans travailler faire jusqu'à cent mille dollars par jour"]
In [ ]:
from txtai.embeddings import Embeddings, Documents
from txtai.workflow import FileTask, WorkflowTask
# Embeddings index
embeddings = Embeddings({"path": "sentence-transformers/paraphrase-multilingual-mpnet-base-v2", "content": True})
documents = Documents()
# List of files to process
files = [
"txtai/article.pdf",
"txtai/US_tops_5_million.wav",
"txtai/Canadas_last_fully.wav",
"txtai/Beijing_mobilises.wav",
"txtai/The_National_Park.wav",
"txtai/Maine_man_wins_1_mil.wav",
"txtai/Make_huge_profits.wav"
]
data = [(x, element, None) for x, element in enumerate(files)]
# Workflow that extracts text and builds a summary
articles = Workflow([
FileTask(textractor),
Task(summary)
])
# Define workflow tasks. Workflows can also be tasks!
tasks = [
WorkflowTask(articles, r".\.pdf$"),
FileTask(transcribe, r"\.wav$"),
Task(lambda x: translate(x, "fr")),
Task(documents.add, unpack=False)
]
# Workflow that translate text to French
workflow = Workflow(tasks)
# Run workflow and show results to be indexed
for x in workflow(data):
print(x)
# Build the embeddings index
embeddings.index(documents)
# Cleanup temporary storage
documents.close()(0, "Txtai, un moteur de recherche alimenté par l'IA construit sur Transformers, permet la recherche basée sur la compréhension du langage naturel (NLU) dans n'importe quelle application. Le champ de traitement du langage naturel (NLP) évolue rapidement avec un certain nombre de nouveaux développements. Le moteur de recherche open-source est open source et disponible sur GitHub.", None) (1, "Les cas de virus U sont en tête d'un million", None) (2, "La dernière plate-forme de glace entièrement intacte du Canada s'est soudainement effondrée en formant un berge de glace de taille manhatten", None) (3, "Bagage mobilise les embarcations d'invasion le long des côtes à mesure que les tensions tiwaniennes s'intensifient", None) (4, "Le service des parcs nationaux met en garde contre le sacrifice d'amis plus lents dans une attaque nue", None) (5, "L'homme principal gagne du billet de loterie", None) (6, "Faire d'énormes profits sans travailler faire jusqu'à cent mille dollars par jour", None)
In [ ]:
# Run a search query and show the result.
embeddings.search("changement climatique", 1)[0]{'id': '2',
'score': 0.2982647716999054,
'text': "La dernière plate-forme de glace entièrement intacte du Canada s'est soudainement effondrée en formant un berge de glace de taille manhatten"}In [ ]:
# Run a search query and show the result.
embeddings.search("traitement du langage naturel", 1)[0]{'id': '0',
'score': 0.47031939029693604,
'text': "Txtai, un moteur de recherche alimenté par l'IA construit sur Transformers, permet la recherche basée sur la compréhension du langage naturel (NLU) dans n'importe quelle application. Le champ de traitement du langage naturel (NLP) évolue rapidement avec un certain nombre de nouveaux développements. Le moteur de recherche open-source est open source et disponible sur GitHub."}In [ ]:
workflow = """
writable: true
embeddings:
path: sentence-transformers/paraphrase-multilingual-mpnet-base-v2
content: True
# Summarize text
summary:
# Extract text from documents
textractor:
# Transcribe audio to text
transcription:
path: facebook/wav2vec2-large-960h
# Translate text between languages
translation:
workflow:
summarize:
tasks:
- action: textractor
task: file
- summary
index:
tasks:
- action: summarize
select: '\\.pdf$'
- action: transcription
select: '\\.wav$'
task: file
- action: translation
args: ['fr']
- action: index
"""
# Create and run the workflow
from txtai.app import Application
# Create and run the workflow
app = Application(workflow)
list(app.workflow("index", files))["Txtai, un moteur de recherche alimenté par l'IA construit sur Transformers, permet la recherche basée sur la compréhension du langage naturel (NLU) dans n'importe quelle application. Le champ de traitement du langage naturel (NLP) évolue rapidement avec un certain nombre de nouveaux développements. Le moteur de recherche open-source est open source et disponible sur GitHub.", "Les cas de virus U sont en tête d'un million", "La dernière plate-forme de glace entièrement intacte du Canada s'est soudainement effondrée en formant un berge de glace de taille manhatten", "Bagage mobilise les embarcations d'invasion le long des côtes à mesure que les tensions tiwaniennes s'intensifient", "Le service des parcs nationaux met en garde contre le sacrifice d'amis plus lents dans une attaque nue", "L'homme principal gagne du billet de loterie", "Faire d'énormes profits sans travailler faire jusqu'à cent mille dollars par jour"]
In [ ]:
# Run a search query and show the result.
app.search("changement climatique", 1)[0]{'id': '2',
'score': 0.2982647716999054,
'text': "La dernière plate-forme de glace entièrement intacte du Canada s'est soudainement effondrée en formant un berge de glace de taille manhatten"}In [ ]:
# Run a search query and show the result.
app.search("traitement du langage naturel", 1)[0]{'id': '0',
'score': 0.47031939029693604,
'text': "Txtai, un moteur de recherche alimenté par l'IA construit sur Transformers, permet la recherche basée sur la compréhension du langage naturel (NLU) dans n'importe quelle application. Le champ de traitement du langage naturel (NLP) évolue rapidement avec un certain nombre de nouveaux développements. Le moteur de recherche open-source est open source et disponible sur GitHub."}