The app consists of two parts:
- app.py is a Dash powered app to visualise and compare Wikipedia page links networks.
- fetch_data.py is a simple command line app to call the Wikimedia API. The app comes with a preloaded data set, but fetch_data.py can be used to add additional topics to this data set.
This is a prototype app and under active development. Please note that it was the very first python script I wrote and was used as a learning project. Comments, feature suggestions or bug reports are welcome.
As the project is currently still under active development, the only way to run the app is to clone the repository.
- Clone repository.
- Resolve dependencies.
- Run from your local directory.
The app uses the Wikimedia API to download Wikipedia page info, links and language links. Regarding API, see the Wikimedia API websites:
The app uses NetworkX to rank nodes and classify network communities. Eigenvector centrality measures are used for ranking nodes, and greedy modularity maximization to find network communities. Regarding these algorithms, see the networkX website:
- https://networkx.org/documentation/stable/reference/algorithms/generated/networkx.algorithms.centrality.eigenvector_centrality.html?highlight=eigenvector%20centrality
- https://networkx.org/documentation/stable/_modules/networkx/algorithms/community/modularity_max.html
The app uses Dash for visualisation of network graph and statistics. The graph visualisation in dash draws on Cytoscape. For more information, please see the Dash website:
Full list of dependencies:
- requests==2.22.0
- dash_table==4.12.0
- networkx==2.5
- dash==1.21.0
- dash_html_components==1.1.4
- dash_core_components==1.17.1
- dash_bootstrap_components==0.12.2
- pandas==1.2.3
- dash_cytoscape==0.2.0
Description | Visual |
---|---|
The workflow of the Dash app is as follows: |
- Optimise visualisation of graph and statistics. Large graphs slowdown the app, optimisation is highest priority.
- Stability improvements are necessary.
- Improve user interaction: currently interaction between different elements in the app is one directional (selecting a node in graph, to get table with data). A node should also be selectable in a table to be highlighted in graph.
- Compare Network graphs of one page in two (or more) language side by side, also using isomorphism measures.
- Imrprove use of network algorithms and explanation sociological relevance.
- Improve installation process.