专门做音箱的网站邢台地区网站建设

diannao/2026/1/26 7:30:56/文章来源:
专门做音箱的网站,邢台地区网站建设,南京网络推广建站,wordpress发布文章关键词每日推荐一篇专注于解决实际问题的外文#xff0c;精准翻译并深入解读其要点#xff0c;助力读者培养实际问题解决和代码动手的能力。 欢迎关注公众号 原文标题#xff1a;Text Clustering and Labeling Utilizing OpenAI API 原文地址#xff1a;https://medium.com/kbd… 每日推荐一篇专注于解决实际问题的外文精准翻译并深入解读其要点助力读者培养实际问题解决和代码动手的能力。 欢迎关注公众号 原文标题Text Clustering and Labeling Utilizing OpenAI API 原文地址https://medium.com/kbdhunga/text-clustering-and-labeling-utilizing-openai-api-677271e0763c Githubhttps://github.com/DhunganaKB/OpenAI-App/blob/main/Notebooks/clustering_labelling_amazon_reviews.ipynb 利用 OpenAI API 进行文本聚类和标记 由于大型语言模型LLM的出现对开放式文本进行聚类变得异常简单。LLM 在聚类方面的主要优势在于文本嵌入其产生的高维向量能有效捕捉语义相似性从而使其有别于传统方法。在各种自然语言处理NLP任务中这些向量嵌入具有重要意义可作为模型的关键输入并对其结果产生重大影响。Prompt 工程与 LLMs 和 LangChain 框架相结合进一步简化了这一过程在完成聚类阶段后即可轻松实现聚类标记。 本文将引导您了解使用 OpenAI API 和 LangChain 框架完成聚类和标记所需的三个不同步骤。 利用 OpenAI 驱动的 LLM 进行文本嵌入内嵌向量的聚类通过 LLM 和 LangChain 框架进行集群标注 1. 数据集 我们从 Kaggle 获取了数据集。您可以从这个链接获取数据集因为它是公开的。该数据集包含亚马逊上关于美食的评论。请看下面的示例数据片段。我们将主要关注 Text列该列代表客户评论。 第一步是创建 OpenAI API 密钥允许访问所有基于 OpenAI 的 LLM。如果您不熟悉如何生成 API 密钥请查看此参考资料。许多文章都阐述了如何使用基于 OpenAI 的 LLM如果你是新手你可能会发现这篇文章很有帮助。生成 API 密钥后必须将其安全地纳入我们的代码中。下面的代码片段提供了一种在我们的应用程序中嵌入 API 密钥的方法。在执行这段代码之前请记住在运行代码的位置建立一个 .env 文件并将 Open API 密钥定义为 OPENAI_API_KEY ‘xxxxxxxxxxxxxxxxxx’。 import openai from dotenv import load_dotenv, find_dotenv load_dotenv(find_dotenv(), overrideTrue)我们手头有大约 500,000 条评论将这些评论全部纳入我们的分析中不仅耗时而且由于 OpenAI 的付费 API 密钥相关的使用成本而产生费用。为了简化当前的分析我们将只集中分析该数据集中的最初 2000 条评论。对于那些有兴趣将此分析扩展到更大数据集的人本文概述的程序将保持一致。下面的代码节选旨在读取下载的 .csv 文件确保提供相对或绝对文件路径并选择前 2000 行进行详细分析。 import numpy as np import pandas as pd from sklearn.manifold import TSNE import matplotlib import matplotlib.pyplot as plt import seaborn as sns import time import osfrom sklearn.cluster import KMeans from tqdm.notebook import tqdm from sklearn.metrics import silhouette_score from langchain import LLMChain from langchain.chat_models import ChatOpenAI from langchain.embeddings.openai import OpenAIEmbeddings from langchain.prompts.chat import (ChatPromptTemplate,SystemMessagePromptTemplate,HumanMessagePromptTemplate, )openai.api_keyos.getenv(OPENAI_API_KEY)df pd.read_csv(Reviews.csv) dfdf[[Id, Score, Summary, Text]] df df.head(2000) 2. 文本嵌入 文本嵌入是对各种自然语言处理NLP任务至关重要的基本流程。它将文本无论是单词、短语还是较长的句子转化为一个紧凑的数字向量。该向量囊括了文本意义的精髓可实现高效分析。OpenAI 通过不同的模型提供直接的文本嵌入其中 text-embedding-ada-002 尤其受到青睐。需要注意的是使用 OpenAI 模型进行嵌入需要一定的成本。为方便文本嵌入我们提供了相应的代码片段建议保存结果以备将来使用。 def get_embedding(text, modeltext-embedding-ada-002):text text.replace(\n, )return openai.Embedding.create(input [text], modelmodel)[data][0][embedding]df[ada_embedding] df.Text.apply(lambda x: get_embedding(x, modeltext-embedding-ada-002))dfpd.read_csv(Reviews_with_embedding.csv)所提供的示例展示了一个向量维度为 1536 的嵌入式列。 3. K-mean聚类 完成文本嵌入后下一阶段将利用 K 均值聚类原理来确定数据集中的聚类数量。聚类的第一步是利用嵌入向量创建一个矩阵。然后我们将重点转移到确定最合适的聚类数量上。这可以通过比较Silhouette Score来实现Silhouette Score是一个评估聚类效果的指标。Silhouette Score的范围为-1 到 1得分 1 表示聚类之间的距离较远且特征明显0 表示聚类特征相似-1 表示聚类分配不当。这一过程有助于确定聚类的最佳配置。 ## Reading the previously saved file which contains emedded vector for each review: dfpd.read_csv(Reviews_with_embedding.csv) df[ada_embedding] df.ada_embedding.apply(eval).apply(np.array) # this will convert this column from string to np.array matrix np.vstack(df.ada_embedding.values)## Running K-mean clustering and def calculate_silhouette_scores(data_matrix, min_clusters3, max_clusters40):cluster_results_km pd.DataFrame(columns[k, score])for k in tqdm(range(min_clusters, max_clusters 1)):km_model KMeans(n_clustersk, initk-means, random_state42)y km_model.fit_predict(data_matrix)silhouette silhouette_score(data_matrix, y)dic{k: [k], score: [silhouette]}cluster_results_kmpd.concat([cluster_results_km, pd.DataFrame(dic)]) return cluster_results_kmdef find_optimal_cluster(cluster_results):cluster_results cluster_results.reset_index(dropTrue)optimal_cluster cluster_results[score].idxmax()optimal_cluster cluster_results[k].iloc[optimal_cluster]return optimal_clustermatrix matrixcluster_results_km calculate_silhouette_scores(matrix) num_cluster find_optimal_cluster(cluster_results_km)print(Optimal number of clusters:, num_cluster) print(cluster_results_km.loc[cluster_results_km[k] num_cluster])上图清楚地表明在 k7 时Silhouette Score最高。因此我们的数据集的理想聚类数是 7。不过这个最佳聚类数的Silhouette Score幅度并不大这表明有些聚类具有相似性。最后我们将以 k7 重新执行 k-means 聚类获取聚类标签并将这些值归入数据中。 # final k-mean clustering km_model KMeans(n_clusters num_cluster, init k-means, random_state 42) y km_model.fit_predict(matrix) df[Cluster]y4. 使用 t-SNE 进行嵌入和可视化 t-SNE 是一种非线性降维方法广泛应用于低维空间中嵌入向量的可视化。许多媒体文章都对这种方法进行了深入探讨。我建议参考这篇文章以了解简要概况。随后的代码片段可以在二维空间中实现内嵌向量的可视化并配有聚类中心点。 plt.rcParams[figure.figsize] (15, 8) tsne TSNE(n_components2, perplexity15, random_state42, initrandom, learning_rate200) vis_dims2 tsne.fit_transform(matrix)x [x for x,y in vis_dims2] y [y for x,y in vis_dims2]#palette sns.color_palette(inferno, num_cluster).as_hex() palette sns.color_palette(husl, num_cluster).as_hex()for category, color in enumerate(palette):xs np.array(x)[df.Clustercategory]ys np.array(y)[df.Clustercategory]plt.scatter(xs, ys, colorcolor, alpha0.3, s50)avg_x xs.mean()avg_y ys.mean()plt.scatter(avg_x, avg_y, marker*, colorblack, s300) plt.title(Reduced Dimension: Embeddings visualized using t-SNE, size17, fontweightbold) plt.xlabel(Axis 1,size13, fontweightbold) plt.ylabel(Axis 2,size13, fontweightbold)5. 聚类标签 根据我们目前的了解我们的数据集中存在七个不同的聚类。我们接下来的任务是理解每个集群的独特特征并为它们分配适当的标签类别。为了促进这一过程我们计划利用 LLM 和 LangChain 框架的功能。 为了确定合适的群组标题或类别我们将汇总每个群组内的评论并请 LLM 协助确定合适的标题。值得注意的是LLM 模型的标记处理能力是有限的。因此如果评论相对较短且每个群组的评论量仍在可控范围内我们就可以直接向模型提供评论。不过我们必须承认这种情况与现实世界中经常遇到的复杂情况有很大不同。 因此我们最初的方法是通过摘要浓缩每篇评论确保保留内容的精髓同时使其更加简洁。随后的代码片段将系统地逐行总结每篇评论从而在实现这一目标的过程中发挥关键作用。 def call_openai_api(messages):return openai.ChatCompletion.create(modelgpt-3.5-turbo-16k,messagesmessages,max_tokens4096,temperature1)def summarize_text(transcript):system_prompt I would like for you to assume the role of a Life Coachuser_prompt fGenerate ten words summary of the text below.Text: {transcript}messages [{role: system, content: system_prompt},{role: user, content: user_prompt}]response call_openai_api(messages)summary response[choices][0][message][content]return summary摘要的有效性在很大程度上取决于我们如何撰写提示语。在这种情况下我的目标是用简洁的摘要抓住评论的主要内容。在执行这些功能时必须注意所使用模型的速度限制。每个模型都有在一分钟内处理令牌的特定阈值。如下所示超过此标记限制将持续导致错误。 # RateLimitError: Rate limit reached for default-gpt-3.5-turbo-16k in organization org-7d1yAjMgmG3lnmgY87cMEAVy on tokens per min. Limit: 180000 / min. Current: 177927 / min. Contact us through our help center at help.openai.com if you continue to have issues. 为了防止出现此类错误我在 for 循环中执行了上述函数。我们的数据集仅包含 2000 行这是直接嵌入到脚本中的值。如果您的数据集超过 2000 行请记得相应修改以下代码。 import time df1pd.DataFrame() for i in range(20): # since we have only 2000 rows in our data setinit i*100final (i1)*100dk df.iloc[init:final]print(i, init, final)dk[summary_openai] dk[Text].map(lambda x: summarize_text(x))df1 pd.concat([df1, dk])time.sleep(60) 接下来我们将创建一个函数旨在帮助我们识别每个集群的主题。为此我将结合 ChatOpenAI 模型使用 LangChain 框架。鉴于这项任务需要大量的标记我选择了 gpt-3.5-turbo-16k 模型。 def get_prompt():system_template You are a market analyst and know all reviews from Amazon. Youre helping me write a concise topic from many reviews.human_template Using the following reviews, write a topic title that summarizes them.\n\nREVIEWS:{reviews}\n\nTOPIC TITLE:return ChatPromptTemplate(messages[SystemMessagePromptTemplate.from_template(system_template),HumanMessagePromptTemplate.from_template(human_template),],input_variables[reviews],)for c in df1.Cluster.unique():chain LLMChain(llmChatOpenAI(temperature0, model_namegpt-3.5-turbo-16k), promptget_prompt(), verboseFalse)review_str \n.join([f{review[summary_openai]}\nfor review in df1.query(fCluster {c}).to_dict(orientrecords)])result chain.run({reviews: review_str,})df1.loc[df1.Cluster c, review_topic] result这是最终完成的数据帧的外观 这里共有七个群组每个群组对应一个不同的主题。以下是当前的主题表示法 我选择了 The Impact of High-Quality Dog and Cat Food on Health and Satisfaction作为例子来研究与特定群组相关的评论。很明显这个群组中的大多数评论都关注与猫狗食品有关的问题尤其是它们对健康和幸福的影响。因此法律硕士建议的主题似乎是合乎逻辑的也是非常吻合的。 K 均值聚类可能并不总是聚类的最佳选择。我们建议探索更适合我们数据集的各种聚类技术。基于密度的聚类方法经常会产生更有利的聚类结果。对于有兴趣尝试 HDBSCAN 方法的人我建议参考这篇文章以获得指导。在为数据集尝试各种聚类方法时重要的是要注意无论采用哪种方法初始步骤嵌入和最终步骤聚类标记都将保持一致。 6. 总结 这里再仔细总结一下这篇文章 文本嵌入 openai的text-embedding-ada-002模型 K-mean聚类 sklern.cluster.KMeans Silhouette Score指标 t-SNE可视化 sklearn.manifold.TSNE 聚类主题标签 openai结合langchain 评论总结Prompt: system_prompt I would like for you to assume the role of a Life Coach user_prompt fGenerate ten words summary of the text below. Text: {transcript} 主题总结Prompt: system_template You are a market analyst and know all reviews from Amazon. Youre helping me write a concise topic from many reviews. human_template Using the following reviews, write a topic title that summarizes them.\n\nREVIEWS:{reviews}\n\nTOPIC TITLE: 查看主题是否可行

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/88042.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

制作app免费网站模板镇江网站建设和优化推广多少钱

C 六级 2024 年 03 月 1 单选题(每题 2 分,共 30 分) 第 1 题 在构建哈夫曼树时,每次应该选择( )合并。 A. 最小权值的节点 B. 最大权值的节点 C. 随机节点 D. 深度最深的节点 第 2 题 面向对象的编程思想主…

全屏网站模版重庆汉沙科技做网站怎么样

参数地址围类别97版基地址2002版基地址遥信1H------400H1H------4000H遥测701H------900H4001H------5000H遥控B01------B806001H------6100H设点B81H------C00H6201H------6400H电度C01H------C80H6401H------6600H遥测和遥信个数不设置上限,可以没有上限限制&…

网站自助建站网站模版库

目的&#xff1a;想使用add()在list集合中加入数据 原因&#xff1a;Arrays的内部类ArrayList没有重写 AbstractList的add和remove方法&#xff0c;直接使用会抛异常 String str "1,2,3,5" String[] ids str.split(","); List<String> list Array…

做染料的网站网站百科源码

第一步&#xff0c;通过下面的指令&#xff0c;修改 linux git 的配置文件&#xff1a; vi ~/.gitconfig会进入下图界面&#xff1a; 进入本地&#xff08;Windows&#xff09;中 git 的设置界面 复制 名称 和 Email 到 gitconfig 里&#xff0c;不要在末尾加 &#xff08;空…

郑州网站搭建wordpress 建站容易吗

中间件是一种软件&#xff0c;用于在不同的应用程序、系统或服务之间提供通用功能和服务。它充当应用程序之间的桥梁&#xff0c;帮助它们相互通信和交换数据。中间件简化了复杂软件系统的开发和维护&#xff0c;使不同的系统组件能够更容易地协同工作。中间件的类型很多&#…

东莞网站建设-拥有多年专业永久不收费的软件app

前置条件 已经完成 K8S安装过程十&#xff1a;Kubernetes CNI插件与CoreDNS服务部署 部署 istio 服务网格与 Ingress 服务用到了 helm 与 kubectl 这两个命令行工具&#xff0c;这个命令行工具依赖 ~/.kube/config 这个配置文件&#xff0c;目前只在 kubernetes master 节点中…

多合一网站源码网络营销ppt讲解

Problem - G - Codeforces 推荐视频题解&#xff1a;G_哔哩哔哩_bilibili 思路&#xff1a; 先不管同一个线路上的&#xff0c;就正常建边&#xff0c;这样点距都是1. 然后虚点就是该线路的每个点都连的点。 到虚点的边权是1&#xff0c;表示我们坐这趟线路。 然后这个虚点…

铁道部售票网站多少钱建设wordpress 头像 删除

Vue中的分布式路由配置与管理 随着现代Web应用程序的复杂性不断增加&#xff0c;分布式路由配置和管理成为了一个重要的主题。Vue.js作为一种流行的前端框架&#xff0c;提供了多种方法来管理Vue应用程序的路由。本文将深入探讨在Vue中如何进行分布式路由配置与管理&#xff0…

网站建设与管理做什么免费html5播放器

文章目录 0 前言1 课题背景2 效果展示3 行人检测4 行人重识别5 其他工具6 最后 0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &#x1f6a9; **基于深度学习的行人重识别算法研究与实现 ** 该项目较为新颖&#xff0c;适合作为竞赛课题方向&#xff0c…

做二手车按揭的网站做培训网站前端

1. 多态 多种形态或多种实现方法&#xff0c;C中的多态是指一种接口&#xff08;指的是父类接口&#xff09;&#xff0c;多种实现方法&#xff08;指的是每个子类所实现的方法&#xff09;&#xff0c;即通过父类接口实现调用子类的多种方法 1.1 构成多态性的条件&#xff1a;…

服务专业公司网站建设服务开发公司项目总职责

defineEmits 属性&#xff1a;用于创建自定义事件&#xff0c;接收子组件传递过来的数据。 注意&#xff1a;如果自定义事件的名称&#xff0c;和原生事件的名称一样&#xff0c;那么只会触发自定义事件。 defineEmits 仅适用于 setup 语法糖&#xff0c;其它写法请见&#x…

网站建设与制作实验报告腾讯云服务器费用

a(isnan(a(:,b)),:)[];%删除a矩阵中第b列包含NaN的行

共享备案网站wordpress站点打不开

正题之前 三玖yyds&#xff01;&#xff01;&#xff01; 题目 给定一组非负整数 nums&#xff0c;重新排列每个数的顺序&#xff08;每个数不可拆分&#xff09;使之组成一个最大的整数。 注意&#xff1a;输出结果可能非常大&#xff0c;所以你需要返回一个字符串而不是整…

优化系统是什么意思seo外链怎么发

作为福禄克官方授权经销商—明辰智航将给你一个完整的LinkIQ有线网络测试仪概述。首先&#xff0c;让我们来看看基本工具包里的内容。 我们有&#xff1a; LinkIQ本身 福禄克随身携带便捷包 快速参考指南说明书 CAT6a接线 远程ID 1用于完整的导线图测试 RJ45-to-RJ45模块…

动态发布网站和静态发布网站国内做网站建设最好的公司是

IDS Scheer中国副总裁 王磊 SAP系统刚上线时&#xff0c;系统内的权限管理往往并不引起重视。大家关注 更多的是系统能否顺畅运行、数据是否准确&#xff0c;财务帐是否能对得上等等。事实上&#xff0c;此时为了确保系统迅速转起来&#xff0c;给很多用户的权限往往是放大的。…

湘潭网站建设 r磐石网络诸暨做网站

268.丢失的数字 题目链接&#xff1a;268.丢失的数字 给定一个包含 [0, n] 中 n 个数的数组 nums &#xff0c;找出 [0, n] 这个范围内没有出现在数组中的那个数。 示例 1&#xff1a; 输入&#xff1a;nums [3,0,1] 输出&#xff1a;2 解释&#xff1a;n 3&#xff0c;因为…

北京火车站建站时间彩票类网站怎么做推广

在Flask使用数据库 我们将使用Flask-SQLAlchemy 的扩展来管理数据库。由SQLAlchemy项目提供的&#xff0c;已封装了关系对象映射&#xff08;ORM&#xff09;的一个插件。 ORMs允许数据库程序用对象的方式替代表和SQL语句。面向对象的操作被ORM转化为数据库命令。这样就意味着&…

node.js可以做网站么做淘宝那样的网站

一 背景介绍先来看一下我们熟悉的第一代 spring cloud 的组件spring cloud 现在已经是一种标准了&#xff0c;各公司可以基于它的编程模型编写自己的组件 &#xff0c;比如Netflix、阿里巴巴都有自己的一套通过spring cloud 编程模型开发的分布式服务组件 。Spring Cloud 二代组…

昆明做网站哪家网站美工如何做

目录 1.效果展示和玩法场景 2.GeneFace原理学习 3.数据集准备以及训练的过程 5.遇到的问题与解决方案 6.参考资料 一、效果展示 AI数字人进阶--GeneFace&#xff08;1&#xff09; AI数字人进阶--GeneFace&#xff08;2&#xff09; 想象一下&#xff0c;一个专为你打造的…

天津市做网站的公司有哪些贵阳奇点未来网站建设

一、简述效果&#xff1a;实现功能&#xff1a;长按Button时改变Button显示文字&#xff0c;弹出Dialog(动态更新音量)&#xff0c;动态生成录音文件&#xff0c;开始录音&#xff1b;监听手指动作&#xff0c;规定区域。录音状态下手指划出规定区域取消录音&#xff0c;删除生…