Strumenti Utente

Strumenti Sito


matematica:asd:asd_21:progetto_21

Differenze

Queste sono le differenze tra la revisione selezionata e la versione attuale della pagina.

Link a questa pagina di confronto

Entrambe le parti precedenti la revisioneRevisione precedente
Prossima revisione
Revisione precedente
matematica:asd:asd_21:progetto_21 [05/05/2022 alle 10:28 (2 anni fa)] Roberto Grossimatematica:asd:asd_21:progetto_21 [13/06/2022 alle 13:50 (2 anni fa)] (versione attuale) Roberto Grossi
Linea 5: Linea 5:
  
 Il progetto richiede di individuare insiemi di K parole valide per questo gioco, utilizzando i testi di alcune pagine prese da Wikipedia e "ripulite" dalla formattazione. È richiesto di modellare tale problema utilizzando un grafo non orientato G = (V,E), dove V rappresenta le parole distinte che si trovano nelle varie pagine di Wikipedia e ciascun arco (u,v) in E indica che le due parole corrispondenti a u e v appaiono consecutivamente (in alternativa, sufficientemente vicine) in almeno una di tali pagine.  Il progetto richiede di individuare insiemi di K parole valide per questo gioco, utilizzando i testi di alcune pagine prese da Wikipedia e "ripulite" dalla formattazione. È richiesto di modellare tale problema utilizzando un grafo non orientato G = (V,E), dove V rappresenta le parole distinte che si trovano nelle varie pagine di Wikipedia e ciascun arco (u,v) in E indica che le due parole corrispondenti a u e v appaiono consecutivamente (in alternativa, sufficientemente vicine) in almeno una di tali pagine. 
 +
 +
 +Riassumendo: l'input sono le pagine wikipedia e un intero K; l'output sono un certo numero di linee (per esempio una decina), dove ciascuna linea contiene K + 1 parole separate da uno spazio (le prime K parole sono scelte come indicato sopra, e la (K+1)-esima è la parola W univocamente associata a quest'ultime).
  
 Sono lasciate allo studente delle scelte: Sono lasciate allo studente delle scelte:
   * se ignorare le "stop word" come articoli, preposizioni, verbi ausiliari, ecc.;   * se ignorare le "stop word" come articoli, preposizioni, verbi ausiliari, ecc.;
   * se vedere G come grafo pesato o meno (per esempio in quante pagine occorrono le coppie di parole);   * se vedere G come grafo pesato o meno (per esempio in quante pagine occorrono le coppie di parole);
-  * se annotare i nodi e gli archi di G con ulteriori informazioni (qualora fossero necessarie).+  * se annotare i nodi e gli archi di G con ulteriori informazioni (qualora fossero necessarie); 
 +  * il criterio di rilevanza con cui scegliere le linee di output (infatti potrebbero esserci molte potenziali soluzioni da cui pescare).
  
 Il progetto si basa su file presi dal mondo reale e prevede di effettuare un'analisi sperimentale dei dati per validare se le scelte di K parole fornite abbiano senso o meno: Il progetto si basa su file presi dal mondo reale e prevede di effettuare un'analisi sperimentale dei dati per validare se le scelte di K parole fornite abbiano senso o meno:
Linea 19: Linea 23:
   * ''od -c'' è utile per vedere il contenuto di un file testuale, carattere per carattere, inclusi i caratteri non stampabili; vedi [[https://www.geeksforgeeks.org/od-command-linux-example/]]   * ''od -c'' è utile per vedere il contenuto di un file testuale, carattere per carattere, inclusi i caratteri non stampabili; vedi [[https://www.geeksforgeeks.org/od-command-linux-example/]]
   * ''mmap'' è utile per accedere a un file testuale come se fosse un gigantesco array di caratteri; vedi [[matematica:asd:asd_21:mmap]] e [[http://man7.org/linux/man-pages/man2/mmap.2.html]]   * ''mmap'' è utile per accedere a un file testuale come se fosse un gigantesco array di caratteri; vedi [[matematica:asd:asd_21:mmap]] e [[http://man7.org/linux/man-pages/man2/mmap.2.html]]
 +  * ''getline'' in C++ è un'altra funzione molto utile per fare il parsing del testo; vedi [[https://www.geeksforgeeks.org/getline-string-c/]]
 +  * Per leggere i nomi dei file presenti in una directory, il cui path è nella variabile ''home'', ci sono vari modi. Per esempio, il seguente dovrebbe funzionare sui vari sistemi operativi (codice da compilare con ''g++ -std=c++17'' o comando equivalente):
 +<code>
 +#include <iostream>
 +#include <string>
 +#include <filesystem>
 +
 +using namespace std;
 +namespace fs = std::filesystem;
 +
 +int main() {
 +  string home = ".";  // directory corrente, oppure mettere il path esteso della directory con i file
 +  for (const auto& entry : fs::directory_iterator(home))
 +        std::cout << entry.path() << std::endl;
 +  return 0;
 +}
 +</code>
 +
 +
matematica/asd/asd_21/progetto_21.1651746536.txt.gz · Ultima modifica: 05/05/2022 alle 10:28 (2 anni fa) da Roberto Grossi

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki