Skip to main content

Build charachter graphs from text.

Project description

tex2net

Build Status PyPI version License Python Versions

Overview

tex2net is a Python library designed to convert narrative texts into interactive network graphs that visualize character interactions. The library leverages Natural Language Processing (NLP) with spaCy, text rewriting and summarization using Transformer models (T5), network analysis with NetworkX, and interactive visualization with Pyvis and Matplotlib. This tool is perfect for researchers, data scientists, and digital humanities scholars looking to explore complex narrative structures.

Features

  • Text Preprocessing & Entity Extraction: Extract characters from text using spaCy's Named Entity Recognition.
  • Graph Construction: Build directed graphs representing character interactions, annotated with actions and sentence IDs.
  • Node Merging: Combine nodes with similar character names for consistency.
  • Text Rewriting & Summarization: Use T5 models to rephrase or summarize text, emphasizing clear character-verb-character structures.
  • Network Analysis: Compute centrality measures, detect communities, analyze temporal relationships, and more.
  • Visualization: Create both static (Matplotlib) and interactive (Pyvis) visualizations for in-depth narrative analysis.

Usage Example

Below is an example of how to use tex2net to create a character graph from sample text:

# Import functions from the tex2net package
from tex2net.graph import create_character_graph, join_similar_nodes

# Sample text data (this could be text from a novel, article, or LaTeX file)
text_data = """
Alice was discussing ideas with Bob. Later, Bob met Charlie and they collaborated on a project.
Alice was also involved in the conversation.
"""

# Create a character graph from the text data
graph = create_character_graph(text_data)

# Optionally, join similar nodes to merge duplicate character entries
joined_graph = join_similar_nodes(graph)

# Visualize the graph by generating an HTML file (using pyvis or a similar tool)
joined_graph.show("character_graph.html")

print("Graph generated and saved as character_graph.html")

More functions are instantiated in example_usage.ipynb.

Installation

Install the package via pip:

pip install tex2net

Make sure you have all the required dependencies. You can also install them using the provided requirements.txt if needed.

Contributing

Contributions are welcome! Feel free to submit pull requests or open issues to improve the functionality of this library. Please follow the code style and add tests for any new features.

License

This project is licensed under the GPL-3.0 License.


Happy storytelling and network exploring!

Citation

If you find tex2net helpful in your academic or professional work, please cite the following paper:

graphql Copy @inproceedings{aparicio2023tex2net, title={tex2net: A Package for Storytelling Using Network Models}, author={Aparicio, Joao Tiago and Arsenio, Elisabete and Henriques, Rui}, booktitle={Proceedings of the 41st ACM International Conference on Design of Communication}, pages={119--125}, year={2023} }

or

Aparicio, J. T., Arsenio, E., & Henriques, R. (2023, October). tex2net: A Package for Storytelling Using Network Models. In Proceedings of the 41st ACM International Conference on Design of Communication (pp. 119-125).

You can find the paper at ACM Digital Library: https://dl.acm.org/doi/pdf/10.1145/3615335.3623022.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

tex2net-1.0.tar.gz (22.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

tex2net-1.0-py3-none-any.whl (22.4 kB view details)

Uploaded Python 3

File details

Details for the file tex2net-1.0.tar.gz.

File metadata

  • Download URL: tex2net-1.0.tar.gz
  • Upload date:
  • Size: 22.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.8.16

File hashes

Hashes for tex2net-1.0.tar.gz
Algorithm Hash digest
SHA256 f3d3290e65a01cfd03da6c2bc125613238df49c5a64996fb86e78dc5671a70f5
MD5 39d801abe722df27ee53b00a85ae2584
BLAKE2b-256 333d9a703946afde8b29f23f0b379826a9103630b1eb27c2339443d26d04a28d

See more details on using hashes here.

File details

Details for the file tex2net-1.0-py3-none-any.whl.

File metadata

  • Download URL: tex2net-1.0-py3-none-any.whl
  • Upload date:
  • Size: 22.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.8.16

File hashes

Hashes for tex2net-1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 48be4c85b180f66a3b799af5528196a092e64aaf0a6a6dbb577723c13534eeb4
MD5 ea616f15106c4c9c0b8e637acfbc89d8
BLAKE2b-256 f33e340c70ebb2e77634c33fc6f18ec2149965e339a3df3d79487de6f57a4b7e

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page