L’Agente di Ricerca Affrontare la Sfida di Rispondere a Domande Basate su un Grande Corpus di Testi

Rispondere a Domande su un Grande Corpus di Testi

Ho creato un Agente di Ricerca AI Autonomo che può rispondere a domande difficili con capacità di ragionamento multi-hop

Immagine dell'autore (generata usando il riempimento generativo di Photoshop)

Introduzione al problema

Nel 2021, ho iniziato a lavorare sulla sfida di rispondere a domande basate su un ampio corpus di testi. Nell’era prima dei transformers pre-addestrati, questo problema era difficile da risolvere.

E per mia frustrazione, ho iniziato i miei esperimenti con una delle storie più complesse e intricate mai scritte, il Mahabharata. Per coloro che non sono familiari con l’opera, il Mahabharata è una collezione di 18 libri con un totale di circa 1,8 milioni di parole. È la poesia più lunga mai scritta, con circa 90.000 versi. È approssimativamente dieci volte più lungo dell’Iliade e dell’Odissea messe insieme. Ma non è solo la lunghezza, ma anche l’ampiezza del Mahabharata che è sbalorditiva. Altamente non lineare e complesso nelle sue cause ed effetti, ha migliaia di personaggi che spaziano su sette generazioni, e tra questi, nessuno è completamente buono o malvagio. Contiene profonde riflessioni filosofiche sul Dovere (Karma), le Scelte e l’esistenza umana, in particolare sui conflitti di doveri e le scelte tra molteplici male. Il Bhagavad Gita (filosofia chiave dell’Induismo) fa anche parte del sesto libro del Mahabharata.

Ho raccolto i dati testuali del Mahabharata da diverse fonti online in un set di dati pulito. Tuttavia, non sono riuscito a trovare un metodo per implementare una QA significativa sul testo.

In meno di due anni, tutto è cambiato.

I rapidi avanzamenti nell’IA e nei transformers pre-addestrati stanno cambiando profondamente e radicalmente il mondo della tecnologia. E ne sono affascinato, come la maggior parte dei tecnici di questi tempi.

Quindi, alcuni mesi fa, sono tornato al problema con una conoscenza ingenua dell’arte neonata dell’ingegneria delle prompt. Ma questa volta con un’idea generale di creare un Agente di Ricerca Autonomo che possa lavorare con qualsiasi base di conoscenza complessa.

Il Mahabharata è uno dei casi d’uso più complessi. Tuttavia, in ogni dominio della conoscenza, Legge, Ricerca scientifica, Educazione, Medicina, ecc., ogni progetto parte da una ricerca approfondita sulle opere precedenti. Quindi il problema è sufficientemente meritevole da essere risolto.

L’Agente di Ricerca

Qui discuterò il design e l’implementazione di un Agente di Ricerca AI Autonomo che può risolvere il problema di multi-hop KBQA con capacità di ragionamento approfondito. Condividerò il repository git con un’implementazione iniziale dell’agente di ricerca in un notebook Python. Se sei interessato solo a quella parte, sentiti libero di passare alla sezione Implementazione in seguito in questo articolo.

Se sei interessato a saperne di più sull’Agente AI, su “Domanda e risposta basata sulla conoscenza” (KBQA), sul “Perché”, sul “Cosa” e sull’evoluzione del design dell’Agente di Ricerca AI, allora continua a leggere.

Perché?

La prima domanda che si potrebbe fare è perché non usare semplicemente l’interfaccia ChatGPT e fare domande. È stato addestrato su un’enorme quantità di dati generati su Internet fino al 2021, quindi è a conoscenza di un corpus di testo come il Mahabharata.

Quella è stata la mia prima approccio. Ho fatto diverse domande al ChatGPT sul Mahabharata. Ho ottenuto buone risposte a alcune domande. Tuttavia, mancano di rigore nella maggior parte dei casi. E questo è normale. Il GPT è addestrato su dataset generali. Può comprendere e interpretare bene le lingue naturali. Può anche ragionare abbastanza bene. Tuttavia, non è un esperto in alcun dominio specifico. Quindi, mentre potrebbe avere alcune conoscenze sul Mahabharata, potrebbe non rispondere con risposte approfondite frutto di una ricerca approfondita. A volte il GPT potrebbe non avere alcuna risposta. In questi casi, si rifiuta umilmente di rispondere alla domanda o la risolve con confidenza (allucinazioni).

Il secondo modo più ovvio per ottenere KBQA è utilizzare un Prompt di Recupero QA. Qui è dove LangChain diventa estremamente utile.

Retrieval QA

Per coloro che non sono familiari con la libreria LangChain, è uno dei modi migliori per utilizzare LLM come GPT nel tuo codice. Ecco un’implementazione di KBQA utilizzando LangChain.

QA utilizzando un Retriever | 🦜️🔗 Langchain

Questo esempio mostra il question answering su un indice.

python.langchain.com

Per riassumere, ecco i passaggi per ottenere KBQA su qualsiasi corpo di documenti:

  • Dividere la base di conoscenza in frammenti di testo.
  • Creare una rappresentazione numerica (Embeddings) per ogni frammento e salvarli in un database vettoriale. Se i tuoi dati sono statici, i passaggi 1 e 2 sono sforzi da fare una sola volta.
  • Eseguire una ricerca semantica utilizzando la query dell’utente su questo database e recuperare i frammenti di testo pertinenti.
  • Inviare questi frammenti di testo all’LLM insieme alle domande dell’utente e chiedere loro di rispondere.

Ecco una rappresentazione grafica di questo processo.

Immagine creata dall'Autore utilizzando draw.io

Allora perché andare oltre? Sembra essere un problema risolto!

Non proprio 🙁

Questo approccio funziona bene per domande semplici su una base di conoscenza semplice e fattuale. Tuttavia, non funziona per una base di conoscenza più complessa e per domande più complicate che richiedono un ragionamento più profondo, multi-hop. Il ragionamento multi-hop si riferisce a un processo in cui vengono compiuti più passaggi di inferenza logica o contestuale per arrivare a una conclusione o risposta a una domanda.

Inoltre, gli LLM sono limitati nella lunghezza del testo che possono elaborare in un’unica richiesta. Puoi, naturalmente, inviare i documenti uno alla volta e poi ‘raffinare’ o ‘ridurre’ la risposta ad ogni chiamata. Tuttavia, questo approccio non consente un ragionamento complesso ‘multi-hop’. In alcuni casi, i risultati utilizzando l’approccio ‘raffina’ o ‘riduci’ sono migliori rispetto a semplicemente inserire tutti i documenti in una singola richiesta, ma non di molto.

Per una base di conoscenza complessa, la domanda degli utenti da sola potrebbe non essere sufficiente per trovare tutti i documenti pertinenti che possono aiutare l’LLM a arrivare a una risposta accurata.

Ad esempio:

Chi era Arjuna?

Questa è una domanda semplice e può essere risposta con un contesto limitato. Tuttavia, la domanda seguente:

Perché è avvenuta la guerra di Mahabharata?

È una domanda che ha il suo contesto diffuso in tutto il corpus di testo. La domanda stessa ha informazioni limitate sul suo contesto. Trovare i frammenti di testo pertinenti e poi ragionare in base a essi potrebbe non funzionare.

Quindi, cosa viene dopo?

Agenti AI

Questo è uno dei concetti più interessanti emersi dopo l’avvento dell’AI. Se non conosci il concetto di un Agente AI, non vedo l’ora di spiegartelo, ma potrei ancora non riuscire a trasmetterne l’eccezionalità. Per spiegarlo prima, userò ChatGPT.

Un agente AI, noto anche semplicemente come “agente”, si riferisce a un programma o sistema software che può percepire autonomamente il proprio ambiente, prendere decisioni e intraprendere azioni per raggiungere obiettivi specifici. Gli agenti AI sono progettati per imitare il comportamento simile a quello umano nel risolvere problemi e compiti decisionali. Operano all’interno di un ambiente definito e interagiscono con tale ambiente per raggiungere risultati desiderati.

Semplicemente, un Agente è un programma che prende un problema, decide come risolverlo e poi lo risolve. All’Agente vengono forniti un insieme di strumenti come funzioni, metodi, chiamate API, ecc. Può utilizzarne uno qualsiasi se sceglie di farlo in qualsiasi sequenza ritenga opportuna. A differenza del software convenzionale, dove la sequenza di passaggi necessari per risolvere il problema è pre-programmata. Questa è, ovviamente, una definizione molto vaga. Ma probabilmente hai capito l’idea fino a questo punto.

Ecco i due diversi agenti che ho provato per il nostro caso d’uso KBQA.

ReAct Questo Agente utilizza uno stile di ragionamento ‘ReAct’ (Ragione e Azione) per decidere quale strumento utilizzare per il problema specifico.

Ecco l’implementazione di langChain di un agente ReAct:

ReAct | 🦜️🔗 Langchain

Questa guida illustra l’utilizzo di un agente per implementare la logica ReAct.

python.langchain.com

Ho fornito all’agente i seguenti strumenti tra cui scegliere:

  • Retrieval QA chain con un archivio di documenti.
  • Ricerca nel glossario dei personaggi (ho creato un glossario utilizzando il riconoscimento delle entità nominate tramite un modello pre-addestrato)
  • Ricerca su Wikipedia.

L’agente ReAct non mi ha dato buoni risultati e non è riuscito a convergere su una risposta nella maggior parte dei casi. Non funziona bene con GPT 3.5. Potrebbe funzionare meglio con GPT 4, che è 20-30 volte più costoso di GPT 3.5, quindi potrebbe non essere ancora un’opzione.

Anche quando ha convergito, non sono riuscito a ottenere buoni risultati. Qualcuno più esperto nella creazione di prompt ‘react’ avrebbe probabilmente fatto meglio.

Agent di auto-domandaQuesto agente fa domande di approfondimento basate sulla domanda originale e cerca poi di trovare le risposte intermedie. Utilizzando queste risposte intermedie, arriva infine a una risposta finale. Ecco un articolo che spiega l’Agent di auto-domanda

Auto-Domanda Prompting

L’Auto-Domanda Prompting è una progressione dal Prompting della Catena del Pensiero. Di seguito alcuni esempi pratici e…

cobusgreyling.medium.com

Questo approccio mi ha dato alcuni buoni risultati. Funziona bene per una ragione a singolo passaggio. Ma anche questo fallisce per le domande che richiedono più passaggi.

Ad esempio, le domande:

Chi ha ucciso Karna e perché?

sono relativamente facili da rispondere con questo approccio

La domanda

Perché Arjuna ha ucciso Karna, suo fratellastro?

è molto più difficile da rispondere. Richiede che l’LLM sappia il fatto che Arjuna non sapeva che Karna fosse suo fratellastro. L’LLM non può sapere che ha bisogno di conoscere questo fatto, né capendo la domanda né facendo ulteriori domande basate sulla domanda originale.

Processo di Ricerca Umana

Quotando nuovamente GPT

Gli agenti di intelligenza artificiale sono progettati per imitare il comportamento umano nella risoluzione di problemi e nelle attività decisionali

Quindi, la mia prossima idea è stata quella di studiare come gli esseri umani fanno ricerche, la meta-ricerca se preferisci. Mi sono immaginato seduto in una biblioteca (nostalgia universitaria) con facile accesso a tutti i libri pertinenti all’argomento della mia ricerca. Ho preso un quaderno e una penna e ho iniziato a scrivere il processo che seguo quando faccio ricerche su un argomento.

Ecco cosa ho scoperto.

Metodologia di ricerca:

Annotare la query originale su una pagina.

  1. Cerco di rispondere alla domanda corrente leggendo alcuni libri. Nel processo, prendo alcune note e segno alcuni estratti che trovo più pertinenti alla domanda corrente.
  2. Inevitabilmente, trovo molte cose sconosciute in questi estratti. Segno queste cose sconosciute e scrivo alcune domande che possono aiutarmi a conoscere queste cose sconosciute.
  3. Di queste domande, ne scelgo una che è più pertinente alla domanda originale.
  4. Torno al punto 1

Dopo alcune iterazioni del genere, mi chiedo se ho abbastanza informazioni per rispondere alla domanda originale.

Se sì, allora lavoro ben fatto! Se no, allora continuo a cercare.

Voilà!

Finalmente, sapevo cosa programmare. Speravo che, con un po’ di ingegneria dei prompt, questo processo potesse darmi risposte più profonde rispetto a qualsiasi altro approccio che avevo provato in precedenza.

Spoiler alert… ci sono riuscito! 🙂

Prima di sedermi a programmare, ho cercato su internet idee simili. E ho scoperto il BabyAGI. Che mondo meraviglioso!

Ecco un repository che descrive il BabyAGI

Ho realizzato che c’erano molte somiglianze tra il BabyAGI e il processo di ricerca sopra descritto. Quindi, con gratitudine, ho preso ispirazione dai prompt utilizzati nell’implementazione del BabyAGI.

L’Agente di Ricerca – Implementazione

Ecco lo stesso processo convertito in un diagramma di flusso utilizzando il fantastico draw.io

Immagine dell'autore (Generata utilizzando draw.io)

Ogni riquadro blu in questo diagramma rappresenta una chiamata a un LLM.

Componenti

  1. Agente QA – Ricerca di risposte e contesto aggiuntivo Questa è una catena semplice di domande e risposte che utilizza un archivio vettoriale. In futuro, potrebbe essere un Agente IA che utilizza strumenti come archivi vettoriali, API di ricerca o API di Wikipedia, API di moderazione e dati di ricerca precedenti. Qui la richiesta è ottimizzata per generare risposte concise basate su 1. Il contesto (documenti) e 2. La pertinenza alla domanda originale. Ad eccezione del primo ciclo, la domanda attuale è sempre una domanda intermedia generata al passo 2 e scelta al passo 3. L’Agente aggiunge la risposta intermedia alle note e gli ultimi estratti (i documenti utilizzati per rispondere alla domanda attuale) ai segnalibri. I documenti più recenti di questi sono utilizzati al passo 2.
  2. Generatore di Domande – Porre ulteriori domande basate sulle note recenti Qui, l’agente utilizza i risultati di ricerca vettoriale più recenti che corrispondono alla domanda attuale e li utilizza per generare ulteriori domande pertinenti alla domanda originale. Aggiunge queste domande alla lista delle domande senza risposta. La richiesta qui è ottimizzata in modo che le nuove domande generate non si sovrappongano con l’elenco esistente di domande.
  3. Selezionatore della Domanda più Pertinente – Scegli una domanda più pertinente alla domanda originale Questa richiesta seleziona una domanda dalla lista delle domande senza risposta che è la più pertinente alla domanda originale. Questa domanda viene utilizzata come domanda attuale per il prossimo ciclo. Nel prossimo ciclo, l’agente rimuove questa domanda dalla lista delle domande senza risposta dopo aver generato un nuovo set di domande.
  4. Analizzatore – So abbastanza? Sto utilizzando un parametro max_iterations per uscire dal ciclo. Al momento funziona abbastanza bene. Tuttavia, potrebbe essere meglio decidere dinamicamente il numero di iterazioni o una strategia di uscita in base al contesto in evoluzione. Lavorerò su un “analizzatore” che potrà farlo autonomamente in futuro.
  5. Compilatore di Ricerca – Compila la ricerca Questa è la richiesta finale. Utilizza le note fatte durante il processo di ricerca per arrivare a una `risposta finale` dettagliata alle `domande originali`.

Risultati

L’Agente di Ricerca rappresenta un grande miglioramento rispetto a tutti gli approcci precedenti che ho provato. Produce risposte più dettagliate e accurate rispetto a qualsiasi altro approccio. Ho giocato con questo per alcune settimane ora e sono sorpreso dalla ricchezza delle risposte che ottengo.

L’Agente evita il problema delle allucinazioni in misura maggiore rispetto a qualsiasi approccio precedente. Corregge automaticamente le allucinazioni e gli errori di fatto che genera nelle prime iterazioni, durante quelle successive. Più si approfondisce un problema, più accuratamente produce il risultato.

Ecco un esempio di esecuzione.

Domande: Perché i Pandava hanno dovuto vivere nella foresta per 12 anni?

Output —

Just in case you are curious, here is the final answer

Risposta Finale: La decisione dei Pandava di vivere nella foresta per 12 anni era principalmente dovuta alle circostanze e agli eventi che si sono svolti nella loro vita. Dopo aver perso una partita a dadi contro i Kaurava, i Pandava furono costretti all'esilio per 13 anni, di cui l'ultimo anno da trascorrere incognito. Durante il loro esilio, affrontarono numerose sfide e difficoltà, tra cui la vita nella foresta. Bhima pianificò di uccidere tutti i Kurava, ma suo fratello Yudhisthira lo tranquillizzò sempre, affermando che non era il momento opportuno per soddisfare i loro desideri. Pertanto, vivendo nella foresta, riuscirono ad evitare conflitti e mantenere la pace. Durante il loro tempo nella foresta, i Pandava affrontarono diverse difficoltà. Una delle principali sfide fu la lotta di Bhima nel tollerare la vita ascetica. Pianificò di uccidere tutti i Kurava, ma suo fratello Yudhisthira lo tranquillizzò sempre e gli consigliò di non farlo. Inoltre, i Pandava dovettero vivere nella foresta e dipendere dalla mendicità per il loro sostentamento poiché il loro regno era stato saccheggiato nel gioco d'azzardo. Erano angosciati dalla perdita del loro regno e dagli insulti alla loro regina Draupadi. La foresta stessa era piena di pericoli, che si aggiungevano alle loro difficoltà. Inoltre, i Pandava si sentivano incapaci di soddisfare le esigenze di certi Brahmani pii che rimasero con loro nella foresta, poiché non possedevano nulla e dipendevano dalla mendicità per la loro stessa sopravvivenza. Nonostante queste sfide, i Pandava hanno sfruttato al massimo il loro tempo nella foresta. Hanno ricevuto conoscenze da saggi e persone sante, che li hanno aiutati ad acquisire saggezza e intuizioni spirituali. Il grande saggio Vyasa li informò che molti generali avevano accettato di sostenere il loro cugino Duryodhana, tra cui Karna, Shakuni, Bhurishravas, Sala, Drona e Bhishma. Vyasa disse anche ad Arjuna che se avesse dovuto combattere in una futura guerra, avrebbe dovuto ottenere gli astra divini del Signore Indra e del Signore Shiva. Alla luce di queste informazioni, Yudhisthira ordinò ad Arjuna di recarsi sulle montagne dell'Himalaya per compiere austerità per compiacere il Signore Shiva. Questo era necessario affinché Arjuna ottenesse le armi divine che sarebbero state cruciali nella prossima guerra. I Pandava capirono l'importanza di essere preparati e di raccogliere le risorse necessarie per contrastare la forza dei loro avversari. Pertanto, Yudhisthira prese la decisione di inviare Arjuna in questa missione per cercare le benedizioni del Signore Shiva e acquisire gli astra divini. Nel complesso, l'esilio dei Pandava nella foresta per dodici anni è stato il risultato delle condizioni loro imposte dopo aver perso la partita a dadi. Hanno affrontato varie difficoltà durante il loro tempo nella foresta, ma hanno anche acquisito conoscenze preziose e si sono preparati alle sfide che li attendevano.

Questa risposta è abbastanza elaborata. Ma la bellezza dell’agente non è solo che ha risposto alla domanda originale con precisione, ma che è andato oltre e ha scoperto la storia che circonda la domanda.

Nella maggior parte dei casi, le risposte che ottengo sono ricche di dettagli del genere. E ogni risposta del genere stimola la mia curiosità per ulteriori indagini.

L’agente produce anche un insieme di domande risposte e domande non risposte che annota durante il processo di ricerca. Quindi, dopo ogni esecuzione, mi porta a molte altre domande che posso fare. Nelle ultime settimane, ho imparato di più sul Mahabharata di quanto non abbia fatto in molti anni prima.

** Domande non risposte **'4. Come hanno ricevuto conoscenza i Pandava da saggi e santi durante il loro tempo nella foresta?''5. Quali austerità specifiche ha dovuto compiere Arjuna nelle montagne dell'Himalaya per compiacere il Signore Shiva?''6. Come hanno fatto i Pandava a nascondersi dalle spie di Duryodhana per quasi l'intero tredicesimo anno dell'esilio?''8. Come ha affrontato Bhima le sfide di vivere come un asceta nella foresta? Ha affrontato particolari difficoltà o lotte durante il loro tempo di esilio?''9. Puoi fornire ulteriori informazioni sui generali che hanno sostenuto la causa di Duryodhana? Quali erano i loro ruoli e contributi nella guerra di Kurukshetra?''10. Come hanno fatto i Pandava a mantenere una vita pacifica nella foresta nonostante le sfide che hanno affrontato?''11. Quali erano gli insegnamenti e la conoscenza specifica che i Pandava hanno ricevuto dai saggi e dai santi durante il loro tempo nella foresta?''12. Puoi fornire ulteriori informazioni sul palazzo in cui i Pandava hanno vissuto per un intero anno prima di andare nella foresta?''13. Come ha influenzato la presenza del Signor Krishna nella foresta l'esperienza dei Pandava durante il loro esilio?''14. Puoi fornire ulteriori informazioni sui pericoli che i Pandava hanno affrontato vivendo nella foresta?''15. Quali erano le sfide e le difficoltà specifiche che Yudhisthira e i suoi fratelli hanno affrontato nella loro vita quotidiana come abitanti della foresta?'

Immagina di seguire lo stesso processo per altri ambiti di conoscenza, un pensiero entusiasmante!

Il Codice

E qui ci sono i notebook Python con l’implementazione dell’Agente di Ricerca.

GitHub – rahulnyk/research_agent

Contribuisci allo sviluppo di rahulnyk/research_agent creando un account su GitHub.

github.com

Il repository Git del dataset Mahabharata

GitHub – rahulnyk/mahabharata: Testo del Mahabharata compilato da varie fonti, diviso in segmenti…

Il testo del Mahabharata è compilato da varie fonti, diviso in segmenti e analizzato in file CSV con metadati. Entità nominate…

github.com

Cosa c’è dopo?

L’implementazione attuale è una versione semplice dell’idea di un Agente di Ricerca AI autonomo. Ho eseguito il processo di ricerca diverse volte durante l’implementazione dell’Agente. È stato un viaggio entusiasmante, ma il divertimento non è ancora finito. Ecco alcuni dei miglioramenti su cui sto lavorando attualmente.

  • Implementare questo agente su un link pubblico e osservare più modelli di utilizzo.
  • Utilizzare l’Agente con documenti di origine diversi dal Mahabharata.
  • Attualmente, la fase 1 del processo è una semplice catena di domande e risposte che utilizza un archivio di vettori con il corpus di testo di origine. Sto lavorando per sostituirla con un Agente “ReAct” in modo che altri strumenti come le API di ricerca, Wikipedia, API di moderazione, ecc., possano essere utilizzati nel processo di ricerca.
  • Salvo i dati e i metadati generati durante ogni esecuzione in un archivio di vettori denominato “runs”. Salvo anche gli embedding della domanda originale nello stesso archivio. Questo mi ha aiutato a seguire il percorso di ragionamento dell’Agente e osservare diversi schemi logici che ne emergono. Questo può aiutare a regolare l’Agente di domande e risposte per seguire un percorso di ragionamento più coerente.
  • Attualmente, l’Agente di Ricerca termina dopo un numero fisso di iterazioni. Questo funziona molto bene per la maggior parte delle domande. Tuttavia, potrebbe essere meglio decidere dinamicamente il numero di iterazioni o una strategia di uscita in base al contesto in evoluzione. Lavorerò su un “analizzatore” che può farlo autonomamente.
  • L’Agente funziona bene per la maggior parte dei tipi di domande, tranne per le meta-domande. Ad esempio, se chiedo “Descrivi cosa succede nel libro 5 capitolo 3”, l’Agente fatica a rispondere. Nelle versioni future, includerò un recupero di auto-query con l’Agente “ReAct” per gestire tali casi.
  • Fino ad ora, ho provato l’Agente solo con il modello OpenAI GPT3.5. Mi costa circa $ 0.02 per esecuzione. Presto proverò l’Agente di Ricerca con un modello più piccolo come Llama, che può essere ospitato localmente.

Nel prossimo articolo, ho intenzione di scrivere delle mie scoperte dopo aver implementato alcune di queste aggiornamenti. L’idea più ampia è quella di creare un’Autonomous AI Research Agent di prim’ordine che possa eccellere nel trovare risposte approfondite a domande difficili. Quindi, sentiti libero di suggerire e, se possibile, collaborare con me per sviluppare ulteriormente questo progetto.

Spero che tu trovi utile questo articolo e il codice condiviso.

Grazie per la lettura.

Spero che tu trovi l’AI Research Agent eccitante e utile.

Il notebook che ho condiviso è solo una semplice implementazione di questa più ampia idea di creare un Autonomous AI Research Agent. Si può fare molto di più per rendere questo Agente un ricercatore di prim’ordine.

Quindi, sentiti libero di suggerire e, se possibile, collaborare con me per sviluppare ulteriormente questo progetto.

Grazie per la lettura.

Crediti per i set di dati utilizzati nell’articolo precedente, insieme alle informazioni sulla licenza.

  1. Traduzione completa a cura di K. M. Ganguli: disponibile nel pubblico dominio.
  2. Laura Gibbs Tiny Tales: si tratta di una rielaborazione del Mahabharata utilizzando duecento episodi, ognuno dei quali è lungo 100 parole. Sto utilizzando il suo lavoro qui con il suo permesso.
  3. Kaggle data repo di Tilak: tutti i 18 Parvas del Mahabharata in formato testo per NLP. Condiviso con licenza di pubblico dominio da Tilak.