Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

datamap visulisation does not work. #1956

Open
Hansyvea opened this issue Apr 29, 2024 · 6 comments
Open

datamap visulisation does not work. #1956

Hansyvea opened this issue Apr 29, 2024 · 6 comments

Comments

@Hansyvea
Copy link

other visualisation works except for this. It suggests BERTopic does not have this method.

@semmyk-research
Copy link

semmyk-research commented Apr 29, 2024

@Hansyvea Could you provide your error and sample code?
Your #1955 does not provide details either.

@semmyk-research
Copy link

PS: I had a similar error on Colab last week.
I presume you might be referring to this error or similar
# "Data map plotting is unavailable unless datamapplot is installed."
# datamapplot not installed

What works for me: Ensure you install and load datamapplot

## Install DataMapPlots: Below for Colab or if working inline within Notebook
!pip install datamapplot

## load library
    import datamapplot

You should be able to execute
topic_model.visualize_document_datamap(docs, reduced_embeddings=reduced_embeddings)
## where reduced_embedding is already derived from your umap fit_transformed.

Should BERTopic datamap not work, you can attempt working with datamap directly.
In my case, I called create_plot directly:
PS: I also had a go at datamapplot.create_interactive_plot() with success.

datamapplot.create_plot(
    reduced_embeddings05,
    docs_info.Name,
...
...)

## where docs_info.Name or ocs_info['Name'] comes from topic_model_.get_document_info

@MaartenGr
Copy link
Owner

Also, make sure that you install BERTopic v0.16.1 (or higher when it releases) since it was supported first in v0.16.1. If BERTopic suggests that it does not have this function, then it is either what was previously stated or simply install the latest version.

@emilbakke
Copy link

I also have issues getting datamapplot to work. Here is my code:

import datamapplot
print(bertopic.__version__)
0.16.1

topic_model.visualize_document_datamap(docs, embeddings=embeddings, title='', width=1200, height=1200,)

Error output:

---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
/work/infomedia/sim_analysis.ipynb Cell 410 line 1
----> <a href='vscode-notebook-cell://app-5046147-0.cloud.sdu.dk/work/infomedia/sim_analysis.ipynb#Z1405sdnNjb2RlLXJlbW90ZQ%3D%3D?line=0'>1</a> topic_model.visualize_document_datamap(docs, embeddings=embeddings, title='', width=1200, height=1200,)

File [~/.local/lib/python3.10/site-packages/bertopic/_bertopic.py:2431](https://vscode-remote+app-002d5046147-002d0-002ecloud-002esdu-002edk.vscode-resource.vscode-cdn.net/work/infomedia/~/.local/lib/python3.10/site-packages/bertopic/_bertopic.py:2431), in BERTopic.visualize_document_datamap(self, docs, topics, embeddings, reduced_embeddings, custom_labels, title, sub_title, width, height, **datamap_kwds)
   <a href='~/.local/lib/python3.10/site-packages/bertopic/_bertopic.py:2429'>2429</a> check_is_fitted(self)
   <a href='~/.local/lib/python3.10/site-packages/bertopic/_bertopic.py:2430'>2430</a> check_documents_type(docs)
-> <a href='~/.local/lib/python3.10/site-packages/bertopic/_bertopic.py:2431'>2431</a> return plotting.visualize_document_datamap(self,
   <a href='~/.local/lib/python3.10/site-packages/bertopic/_bertopic.py:2432'>2432</a>                                            docs,
   <a href='~/.local/lib/python3.10/site-packages/bertopic/_bertopic.py:2433'>2433</a>                                            topics,
   <a href='~/.local/lib/python3.10/site-packages/bertopic/_bertopic.py:2434'>2434</a>                                            embeddings,
   <a href='~/.local/lib/python3.10/site-packages/bertopic/_bertopic.py:2435'>2435</a>                                            reduced_embeddings,
   <a href='~/.local/lib/python3.10/site-packages/bertopic/_bertopic.py:2436'>2436</a>                                            custom_labels,
   <a href='~/.local/lib/python3.10/site-packages/bertopic/_bertopic.py:2437'>2437</a>                                            title,
   <a href='~/.local/lib/python3.10/site-packages/bertopic/_bertopic.py:2438'>2438</a>                                            sub_title,
   <a href='~/.local/lib/python3.10/site-packages/bertopic/_bertopic.py:2439'>2439</a>                                            width,
   <a href='~/.local/lib/python3.10/site-packages/bertopic/_bertopic.py:2440'>2440</a>                                            height,
   <a href='~/.local/lib/python3.10/site-packages/bertopic/_bertopic.py:2441'>2441</a>                                            **datamap_kwds)

File [~/.local/lib/python3.10/site-packages/bertopic/plotting/_datamap.py:142](https://vscode-remote+app-002d5046147-002d0-002ecloud-002esdu-002edk.vscode-resource.vscode-cdn.net/work/infomedia/~/.local/lib/python3.10/site-packages/bertopic/plotting/_datamap.py:142), in visualize_document_datamap(topic_model, docs, topics, embeddings, reduced_embeddings, custom_labels, title, sub_title, width, height, **datamap_kwds)
    <a href='~/.local/lib/python3.10/site-packages/bertopic/plotting/_datamap.py:139'>139</a> # Map in topic names and plot
    <a href='~/.local/lib/python3.10/site-packages/bertopic/plotting/_datamap.py:140'>140</a> named_topic_per_doc = pd.Series(topic_per_doc).map(topic_name_mapping).values
--> <a href='~/.local/lib/python3.10/site-packages/bertopic/plotting/_datamap.py:142'>142</a> figure, axes = datamapplot.create_plot(
    <a href='~/.local/lib/python3.10/site-packages/bertopic/plotting/_datamap.py:143'>143</a>     embeddings_2d,
...
    <a href='~/.local/lib/python3.10/site-packages/bertopic/plotting/_datamap.py:149'>149</a>     **datamap_kwds,
    <a href='~/.local/lib/python3.10/site-packages/bertopic/plotting/_datamap.py:150'>150</a> )
    <a href='~/.local/lib/python3.10/site-packages/bertopic/plotting/_datamap.py:152'>152</a> return figure

NameError: name 'datamapplot' is not defined

@MaartenGr
Copy link
Owner

@emilbakke Assuming datamapplot was correctly installed, it might be that you need to restart the notebook and try again. Not sure, but it might be that the try/except clause of the datamapplot import was already finished before installing datamapplot but that's a guess since I don't know the exact process.

@emilbakke
Copy link

@emilbakke Assuming datamapplot was correctly installed, it might be that you need to restart the notebook and try again. Not sure, but it might be that the try/except clause of the datamapplot import was already finished before installing datamapplot but that's a guess since I don't know the exact process.

You are absolutely correct, solved it. The good old reboot. Thanks!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants