增强知识图谱形成能力: 利用 AI揭示见解

智能有擎天2024-03-22 10:04:51  56

在不断发展的数据探索和知识表示领域,高级主题建模和直观数据可视化工具之间的协同作用变得至关重要。BERTopic是一个前沿的主题建模框架,DataMapPlot是一个直观的数据可视化工具,它的集成代表了知识图谱形成领域的重大进步。

BERTopic:一个动态的主题建模框架。BERTopic代表了主题建模的发展,提供了一个灵活和模块化的框架,以适应各种用户需求。它的模块化架构使用户能够根据自己的特定需求构建主题模型,有效地与语言人工智能的最新进展保持一致。BERTopic v0.16的发布引入了一些新的特性,比如Zero-Shot主题建模、模型合并以及对大型语言模型的增强支持。

DataMapPlot:流式数据可视化。作为BERTopic的补充,DataMapPlot简化了视觉上引人注目的数据地图的创建。它为用户提供了基本而强大的工具,可以毫不费力地生成标记数据地图的静态图。通过简单地标记数据集群,DataMapPlot可以自动创建具有表示价值的图表,为令人惊叹的视觉输出提供自定义选项。

BERTopic和DataMapPlot的集成提供了先进的主题建模功能和用户友好的数据可视化工具的融合,提供了一系列优势,在其中包括:

1. 整体知识表示:BERTopic灵活的主题建模与DataMapPlot简化的可视化相结合,可以实现全面的知识表示。用户可以轻松地浏览复杂的数据结构,发现复杂的关系,并可视化主题集群,从而促进对数据的更全面的理解。

2. 增强的可解释性和可访问性:将BERTopic的适应性主题建模与DataMapPlot的直观可视化相结合,有助于使复杂的数据结构更具可解释性。DataMapPlot生成的可视化表示补充了BERTopic的见解,使数据驱动的发现更容易被更广泛的受众所接受。

3. 无缝工作流集成:BERTopic和DataMapPlot之间的协同作用简化了数据科学家和研究人员的工作流程。DataMapPlot生成具有出版价值的图表的便利性补充了BERTopic的灵活性,促进了从数据建模到可视化表示的无缝过渡。

4. 可定制的可视化选项:DataMapPlot提供的用于调整视觉输出的可定制选项与BERTopic的模块化特性完全一致。这种集成允许用户定制可视化以适应特定的偏好,确保生成美观且信息丰富的数据地图。

5. 扩展的分析能力:通过将BERTopic的强大功能与DataMapPlot的可视化能力相结合,用户可以获得扩展的分析能力。这种集成使用户能够发现隐藏的模式,探索潜在的主题,并从复杂的数据集中获得有价值的见解。

实现BERTopic和DataMapPlot的集成包括利用它们的功能来创建全面的主题模型和可视化数据集群。

第一步:安装库

%%capture# BERTopic + llama-cpp-python!CMAKE_ARGS="-DLLAMA_CUBLAS=on" FORCE_CMAKE=1 pip install llama-cpp-python!pip install bertopic datasets transformers# DataMapPlot!git clone https://github.com/TutteInstitute/datamapplot.git!pip install datamapplot/.# GPU-accelerated HDBSCAN + UMAP!pip install cudf-cu12 dask-cudf-cu12 --extra-index-url=https://pypi.nvidia.com!pip install cuml-cu12 --extra-index-url=https://pypi.nvidia.com!pip install cugraph-cu12 --extra-index-url=https://pypi.nvidia.com!pip install cupy-cuda12x -f https://pip.cupy.dev/aarch64

第二步:加载数据并下载模型

from datasets import load_dataset# ArXiv ML Documentsdocs = load_dataset("CShorten/ML-ArXiv-Papers")["train"]["abstract"]!wget https://huggingface.co/TheBloke/OpenHermes-2.5-Mistral-7B-GGUF/resolve/main/openhermes-2.5-mistral-7b.Q4_K_M.gguf# !wget https://huggingface.co/TheBloke/dolphin-2.7-mixtral-8x7b-GGUF/resolve/main/dolphin-2.7-mixtral-8x7b.Q3_K_M.gguf

第三步:装载模型

from llama_cpp import Llama# Use llama.cpp to load in a Quantized LLMllm = Llama(model_path="openhermes-2.5-mistral-7b.Q4_K_M.gguf", n_gpu_layers=-1, n_ctx=4096, stop=["Q:", " "])

第四步:定制BERTopic与LLM提示和混合keybert启发的表示进行比较

from bertopic.representation import KeyBERTInspired, LlamaCPPprompt = """ Q:I have a topic that contains the following documents:[DOCUMENTS]The topic is described by the following keywords: '[KEYWORDS]'.Based on the above information, can you give a short label of the topic of at most 5 words?A:"""representation_model = { "KeyBERT": KeyBERTInspired, "LLM": LlamaCPP(llm, prompt=prompt),}

第五步:BERTopic

from sentence_transformers import SentenceTransformerfrom cuml.manifold import UMAPfrom cuml.cluster import HDBSCAN# from umap import UMAP# from hdbscan import HDBSCAN# Pre-calculate embeddingsembedding_model = SentenceTransformer("BAAI/bge-small-en")embeddings = embedding_model.encode(docs, show_progress_bar=True)# Pre-reduce embeddings for visualization purposesreduced_embeddings = UMAP(n_neighbors=15, n_components=2, min_dist=0.0, metric='cosine', random_state=42).fit_transform(embeddings)#Define sub-modelsumap_model = UMAP(n_neighbors=15, n_components=5, min_dist=0.0, metric='cosine', random_state=42)hdbscan_model = HDBSCAN(min_cluster_size=400, metric='euclidean', cluster_selection_method='eom', prediction_data=True)e)

第六步:训练

from bertopic import BERTopictopic_model = BERTopic( # Sub-models embedding_model=embedding_model, umap_model=umap_model, hdbscan_model=hdbscan_model, representation_model=representation_model, # Hyperparameters top_n_words=10, verbose=True)# Train modeltopics, probs = topic_model.fit_transform(docs, embeddings)l,# Show topicstopic_model.get_topic_info

第七步:使用DataMapPlot进行可视化

import PILimport numpy as npimport requests# Prepare logobertopic_logo_response = requests.get( "https://raw.githubusercontent.com/MaartenGr/BERTopic/master/images/logo.png", stream=True, headers={'User-Agent': 'My User Agent 1.0'})bertopic_logo = np.asarray(PIL.Image.open(bertopic_logo_response.raw)),import datamapplotimport re# Create a label for each documentllm_labels = [re.sub(r'W+', ' ', label[0][0].split(" ")[0].replace('"', '')) for label in topic_model.get_topics(full=True)["LLM"].values]llm_labels = [label if label else "Unlabelled" for label in llm_labels]all_labels = [llm_labels[topic+topic_model._outliers] if topic != -1 else "Unlabelled" for topic in topics]# Run the visualizationdatamapplot.create_plot( reduced_embeddings, all_labels, label_font_size=11, title="ArXiv - BERTopic", sub_title="Topics labeled with `openhermes-2.5-mistral-7b`", label_wrap_width=20, use_medoids=True, logo=bertopic_logo, logo_width=0.16)6)

BERTopic是一个强大的工具,它利用BERT嵌入的能力来揭示文本数据中的主题结构。它生成具有语义上下文的主题的能力有助于更深入地理解大型文本语料库中的底层模式。

作为BERTopic的补充,DataMapPlot作为视觉辅助工具出现,通过基于地图的界面提供这些主题的直观表示。通过提供主题及其关系的空间排列,DataMapPlot增强了BERTopic结果的可解释性,使用户能够更有效地探索和理解复杂的文本结构。

这些工具为主题建模和可视化提供了一个健壮的框架,以满足研究人员、分析师和从业者从文本数据中寻求有意义的见解的需求。它们的协同作用增强了主题建模的可访问性和可用性,有助于在各个领域做出更明智的决策和发现知识。

转载此文是出于传递更多信息目的。若来源标注错误或侵犯了您的合法权益,请与本站联系,我们将及时更正、删除、谢谢。
https://www.414w.com/read/16192.html
0
最新回复(0)