{ "cells": [ { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [], "source": [ "from sklearn.manifold import TSNE\n", "import yaml\n", "import matplotlib.pyplot as plt\n", "import numpy as np\n", "import sys\n", "import os\n", "\n", "sys.path.append(os.path.abspath('..'))\n", "from prompt import PromptEngine" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "/data/zhelonghuang/miniconda3/lib/python3.11/site-packages/tqdm/auto.py:21: TqdmWarning: IProgress not found. Please update jupyter and ipywidgets. See https://ipywidgets.readthedocs.io/en/stable/user_install.html\n", " from .autonotebook import tqdm as notebook_tqdm\n", "/data/zhelonghuang/miniconda3/lib/python3.11/site-packages/huggingface_hub/file_download.py:1132: FutureWarning: `resume_download` is deprecated and will be removed in version 1.0.0. Downloads always resume when possible. If you want to force a new download, use `force_download=True`.\n", " warnings.warn(\n" ] } ], "source": [ "# from BCEmbedding import EmbeddingModel\n", "from langchain_community.embeddings import HuggingFaceEmbeddings\n", "sentences = ['python 是什么', '请介绍一下 python']\n", "# model = EmbeddingModel(model_name_or_path=\"maidalun1020/bce-embedding-base_v1\")\n", "model = HuggingFaceEmbeddings(model_name='maidalun1020/bce-embedding-base_v1')" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [], "source": [ "embeddings = model.embed_documents(sentences)" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(['请问 property.json 如何配置?',\n", " '我的自动补全无法使用,是不是有bug?',\n", " '帮我上传一下这份数据',\n", " 'surface了解一下?',\n", " '大佬们,为啥我的digital ide启动之后所有功能都没启动捏?我配置了property文件,然后插件的vivado路经和modelsim路经都加上了',\n", " '这群要被chisel夺舍了吗',\n", " 'Metals一开直接报错',\n", " '话说digital-ide打开大的verilog卡死了',\n", " '请问一下,第一次点击对文件仿真可以出波形文件,再次点击的时候就会提示unknown module type了。是哪个配置没配置好?',\n", " '怎么调整是哪个版本的vivado来构建工程呢',\n", " '咱们这个插件win7的vscode是不是只能用很早之前的版本',\n", " '帮我将这份数据保存到服务器上',\n", " '他这个意思是 单个功耗很低 但是功耗低那肯定性能就寄 频率肯定不高 靠人多'],\n", " [1, 2, 3, 4, 1, 4, 4, 2, 1, 1, 1, 3, 4])" ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ "engine = PromptEngine('../config/story.yml')\n", "\n", "sentences = []\n", "labels = []\n", "for story in engine.stories:\n", " sentences.append(story.message)\n", " labels.append(engine.intent2id[story.intent])\n", "sentences, labels" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(13, 768)" ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" } ], "source": [ "embedding = model.embed_documents(sentences)\n", "embedding = np.array(embedding)\n", "embedding.shape" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [], "source": [ "tsne = TSNE(n_components=2, perplexity=3)\n", "plots = tsne.fit_transform(embedding)" ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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NWqUOHz4sNi4cWPEe7/Wmj9/vrjjjjtE165dRVZWlli/fr2orKz0H79ef/11cfz4cZGdnS1uvfVWsWXLFrFly5aI9x3iingDra7ly5c3eg178ODBArh0e1djjh075l/Hk08+KQ4dOiRcLpeoqqoSf//730V2dnbE9+1a9x2AuPHGG8XatWuF0+kUlZWVYv78+UKW5YD1DB48WOzYsUPU19eLw4cPi4kTJ0Z83662PvjggyafIzBhwgSxZ88ecfHiRXHhwgVRWloacGtftNaPfvQjUVJSIs6fPy9cLpfYs2ePePrpp/1nzRqqT58+YtOmTaKurk6cOnVKzJ49O+K9X0tNnDixyTkssf6dN9Rjjz0mjh8/Lurr60Vpaam4/fbbI95TsKspDf+e+v73vy82btwoqqqqRF1dnTh48KDIz8+PieeofPTRR6K8vFzU19eLU6dOiY8++ihg3o3FYhGvvfaaOHfunLh48aL49NNPA4J6LFbc//0fIiIiIsNpM89RISIioujDoEJERESGxaBCREREhsWgQkRERIbFoEJERESGxaBCREREhsWgQkRERIbFoEJERESGxaBCREREhsWgQkRERIbFoEJERESGxaBCREREhvX/AxNJWBoOZD3PAAAAAElFTkSuQmCC", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "labels = np.array(labels)\n", "for label in set(labels):\n", " mask = labels == label\n", " cor_plots = plots[mask]\n", " plt.scatter(cor_plots[:, 0], cor_plots[:, 1], s=50, alpha=0.9, label=label)\n", "plt.legend()" ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
LogisticRegression()
In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook.
On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.
" ], "text/plain": [ "LogisticRegression()" ] }, "execution_count": 17, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from sklearn.linear_model import LogisticRegression\n", "log_model = LogisticRegression()\n", "log_model.fit(embedding, labels)" ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([4])" ] }, "execution_count": 18, "metadata": {}, "output_type": "execute_result" } ], "source": [ "test_sentence = ['咖啡喝不了,喝了胃不舒服']\n", "test_embedding = model.embed_documents(test_sentence)\n", "log_model.predict(test_embedding)" ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "['../embedding_mapping.sklearn']" ] }, "execution_count": 19, "metadata": {}, "output_type": "execute_result" } ], "source": [ "import joblib\n", "joblib.dump(log_model, '../embedding_mapping.sklearn')" ] }, { "cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [], "source": [ "log_model = joblib.load('../model/embedding_mapping.sklearn')" ] }, { "cell_type": "code", "execution_count": 21, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([4])" ] }, "execution_count": 21, "metadata": {}, "output_type": "execute_result" } ], "source": [ "test_sentence = ['咖啡喝不了,喝了胃不舒服']\n", "test_embedding = model.embed_documents(test_sentence)\n", "log_model.predict(test_embedding)" ] } ], "metadata": { "kernelspec": { "display_name": "base", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.11.5" } }, "nbformat": 4, "nbformat_minor": 2 }