An interactive Streamlit web app for visualizing and analyzing conceptual relationships within and across paragraphs of text. Tapestra uses NLP, graph theory, and physics-based visualization to help users explore the structure and flow of ideas in their writing.
Try the live app here!
-
Paragraph-by-Paragraph Concept Graphs:
- Enter or edit paragraphs and generate directed concept graphs based on sentence similarity and importance.
- Interactive physics controls (spring length, spring constant, gravity, central gravity) for each paragraph’s graph.
-
Combined Concept Graph:
- Combine all key nodes from all paragraphs into a single graph.
- Separate physics controls for the combined graph.
- Download any graph as an HTML file.
-
Optimal Reading Path:
- Table showing optimal reading sequences based on graph structure.
-
Modern UI:
- Responsive, wide layout with custom CSS.
- All controls and graphs are always visible and interactive.
-
Dark Theme:
- Clean, dark-themed interface for readability and focus.
- Python 3.8 or higher
- See
requirements.txtfor dependencies
pip install -r requirements.txtstreamlit run app.py- In the left column, type or paste your paragraph.
- Click "Generate Graph" to visualize the concept graph for that paragraph.
- A node wise Reading Direction will be generated to ease reading.
- Node numbers are displayed in he start of node labels in the graph
- Use the sliders in the rightmost column to adjust the appearance and layout of the graph:
- Spring Length: Controls the gap between nodes.
- Spring Constant: Adjusts flexibility.
- Gravitational Constant: Controls clustering.
- Central Gravity: Pulls nodes toward the center.
- Click "Add Paragraph" to insert another text box and repeat the process.
- Click "Article Covered: Combine Information" upon entering all paragraph to generate a combined concept graph of all key sentences of the passage.
- Use the left column to adjust physics controls for the combined graph.
- An Article Walkthough in directed graph fashion will be displayed
- Download the combined graph as HTML.
- Interact with the graphs directly in the app.
- Download any graph for offline viewing or sharing.
- Visualizing logical flow in essays, articles, or research papers
- Exploring conceptual connections in academic writing
- Teaching or learning about graph-based text analysis
- Optimizing the structure of technical or scientific documents
Contributions are welcome!
- Fork this repo and submit a pull request.
- Please open an issue for bugs, suggestions, or feature requests.
- Follows PEP8 and Streamlit best practices.
- Modular, readable code for easy extension.
- Test locally with a variety of text inputs and paragraph counts.
- Check graph interactivity and download features.
- Found a bug or want to suggest a feature?
Open an issue or submit a pull request! - For questions or functioning related queries, mail me: Aadityaamlan Panda
- Built with Streamlit
- NLP by NLTK, scikit-learn
- Graphs by NetworkX and PyVis
This project is licensed under the MIT License. See LICENSE for details.
- Streamlit Docs: Creating and Sharing Apps
- Streamlit Deployment Guide
- Awesome Streamlit Project Templates
- GeeksforGeeks: NLTK Tutorial
Enjoy exploring your ideas visually!

