/ / Utilizzando la libreria di compressione per stimare la complessità delle informazioni di una frase inglese? - pitone, scala, compressione, teoria dell'informazione

Utilizzando la libreria di compressione per stimare la complessità delle informazioni di una frase inglese? - python, scala, compressione, teoria dell'informazione

Sto cercando di scrivere un algoritmo in grado di funzionare"l'imprevisto" o la "complessità delle informazioni" di una frase. Più specificamente, sto cercando di ordinare una serie di frasi in modo che le prime meno complesse vengano prima.

Il mio pensiero era che potevo usare una compressionelibreria, come zlib ?, "pre-addestralo" su un ampio corpus di testo nella stessa lingua (chiamalo "Corpus") e poi aggiungi a quel corpus di testo le diverse frasi.

Cioè potrei definire la misura della complessità peruna frase per quanti più byte è necessario per comprimere l'intero corpus con quella frase allegata, rispetto all'intero corpus con una frase diversa aggiunta. (Meno byte extra, più è prevedibile o "prevista" quella frase, e quindi minore è la complessità). Ha senso?

Il problema è cercare di trovare la libreria giusta che mi permetta di farlo, preferibilmente da Python.

Potrei farlo aggiungendo letteralmente frasia un corpus di grandi dimensioni e chiedendo a una libreria di compressione di comprimere l'intero shebang, ma se possibile, preferirei piuttosto fermare l'elaborazione della libreria di compressione alla fine del corpus, scattare un'istantanea del relativo "stato" di compressione, e quindi, con tutto quello "stato" disponibile, prova a comprimere la frase finale (vorrei quindi tornare all'istantanea dello stato alla fine del corpus e provare una frase diversa).

Qualcuno può aiutarmi con una libreria di compressione che potrebbe essere adatta a questa esigenza? (Qualcosa che mi permette di "congelare" il suo stato dopo "pre-allenamento".)

Preferirei usare una libreria che posso chiamare da Python o Scala. Ancora meglio se è puro pitone (o scala pura)

risposte:

1 per risposta № 1

Tutto ciò che farà è dirti se ille parole nella frase e forse le frasi nella frase si trovano nel dizionario che hai fornito. Non vedo come sia la complessità. Più come livello di grado. E ci sono strumenti migliori per questo. Ad ogni modo, risponderò alla tua domanda.

Sì, è possibile preimpostare il compressore zlib adizionario. Tutto è fino a 32K byte di testo. Non è necessario eseguire zlib sul dizionario o "congelare uno stato" - è sufficiente iniziare a comprimere i nuovi dati, ma gli si consente di guardare indietro nel dizionario per trovare stringhe corrispondenti. Tuttavia, 32K non è molto. Quel formato di deflate di "zlib" risulterà indietro e non è possibile caricare gran parte della lingua inglese in 32 KB di byte.

LZMA2 consente anche un dizionario predefinito, ma lo fapuò essere molto più grande, fino a 4 GB. Esiste un binding Python per la libreria LZMA2, ma potrebbe essere necessario estenderlo per fornire la funzione di preimpostazione del dizionario.