热点事件聚类思路以及实现-HanLP实现关键词提取

方案总结:

现在的工单热点关键词是调用大模型生成的

还借助大模型二次调用来把所生成的热点进行归类

创建一个,热点事件库即提取过后的工单热点

将这些热点扔给大模型给直接判断是不是一类。

或者就用算法生成向量,每次来新热点时,判断与老热点的相似度,若相似度在某某比例,则如高于80%,则归为一类,让数量加1,其余就新建一个热点即添加进数据库,如此重复,我觉得缺点是这个80%这个阈值不好确定。

数据聚类的大体实现过程:

查阅资料聚类大体过程应该就是,

1.数据预处理:利用各种方式将元数据可以是工单或者是,已经提取过的热点数据,经过一系列的处理方法(jieba分词,去除停用词等),生成可以初步使用的数据。

2.调用某种算法,查询相似或者频次最高的数据,中间还有各个词的权重等。如

词频(TF)= 某词在文章中出现的次数/文章的总次数

逆文章频率(IDF)=log(文章总数/(包含该词包含的文章数目加一))

特征权重(TF-IDF )= 词频(TF)X 逆文章频率(IDF)

3.搜索机器学习中满足要求的算法. 经过此算法可以得到想要的结果,中间可以结合一些别的技术或者算法,如:搜索引擎技术、大数据分析能力以及机器学习平台,来进一步提升热点聚类的准确性和实时性

为了优化工单热点关键词的归类流程,我们可以考虑以下几个步骤:

  1. 建立热点事件库:首先,创建一个热点事件库,用于存储已经提取和归类的热点事件。这个数据库应该能够记录热点事件的详细信息,包括关键词、相关联的工单、热点的起始和结束时间等。
  2. 热点向量化:利用大模型对每个热点事件生成向量表示。这可以通过将热点事件的描述输入到预训练的语言模型中,获取其向量输出来实现。向量化的目的是将文本数据转换为可以进行数学运算的格式,以便后续处理。
  3. 新热点相似度判断:对于每个新出现的热点事件,同样使用大模型生成向量,并与热点事件库中的向量进行相似度比较。这可以通过计算向量之间的余弦相似度来实现。
  4. 热点归类决策:设置一个相似度阈值,比如80%,如果新热点与库中某个热点的相似度超过这个阈值,则将新热点归类到该热点事件中,并将相关联的工单数量加1。如果相似度低于阈值,则认为这是一个新的热点事件,并将其添加到热点事件库中。
  5. 热点事件更新:定期更新热点事件库,移除过时的热点,并加入新的热点事件。这可以通过监控热点事件的活跃度来实现,例如,如果某个热点事件在一段时间内没有新的工单关联,则可以认为该热点已经过时。
  6. 实时监控与反馈:建立一个实时监控系统,持续追踪热点事件的变化,并根据用户反馈和热点事件的发展趋势调整归类策略。

大模型可以视为各种算法的集成

如果不采用大模型而使用算法的话:

  1. K-means算法
    • 优点:
      • 算法简单,易于理解和实现。
      • 适合处理大型数据集,且收敛速度快。
      • 对于球形簇的聚类效果较好。
    • 缺点:
      • 需要预先指定聚类的数量(K值)。
      • 对初始聚类中心的选择敏感,可能导致不同的聚类结果。
      • 对离群点和噪声数据敏感。
      • 只能发现凸形状的簇。
  2. 层次聚类算法
    • 优点:
      • 不需要预先指定聚类数量。
      • 能够发现数据的层次结构。
      • 通过树状图(Dendrogram)可以直观地展示聚类结果。
    • 缺点:
      • 计算复杂度较高,不适合大规模数据集。
      • 一旦合并或分割了簇,就不能更改。
      • 对于距离的测量和聚类树的剪枝方法选择敏感。
  3. DBSCAN算法
    • 优点:
      • 不需要预先指定聚类数量。
      • 能够识别并处理噪声点。
      • 可以发现任意形状的簇。
      • 对于数据的输入顺序不敏感。
    • 缺点:
      • 对参数(如邻域半径和最小点数)敏感。
      • 在高维数据上效果不佳,因为“维度灾难”。
      • 对于密度不均匀的数据集,可能无法得到好的聚类结果。
  4. 谱聚类算法
    • 优点:
      • 适用于发现非球形或复杂形状的簇。
      • 能够在较低维度上表示高维数据。
      • 对于噪声和离群点不敏感。
    • 缺点:
      • 需要预先指定聚类的维度。
      • 计算复杂度较高,尤其是在计算相似度矩阵和特征值分解时。
      • 对于大规模数据集可能不够高效。
  5. 高斯混合模型(GMM)
    • 优点:
      • 能够表示各种形状的簇,包括非凸形状。
      • 提供了数据点属于各个簇的概率信息。
      • 可以使用EM算法来估计模型参数。
    • 缺点:
      • 需要预先指定簇的数量。
      • 对初始参数敏感,可能导致局部最优解。
      • 计算复杂度较高,尤其是在处理大规模数据集时。
  6. 模糊C均值(FCM)算法
    • 优点:
      • 允许一个数据点属于多个簇,具有模糊成员关系。
      • 对于数据点的隶属度进行了量化,提供了更多信息。
    • 缺点:
      • 需要预先指定簇的数量。
      • 对初始参数选择敏感。
      • 计算复杂度较高,尤其是在迭代过程中。

实践思路:

对于生成的热点,进行关键词提取,这一步考虑是用TF-IDF进行关键词提取,或者还是扔给大模型,生成关键词,

业务逻辑:

新来一个热点事件,热点提取关键词,将提取出的关键词与数据库中已存在的热点事件的关键词进行比对,若有比如一个以上关键词相同,就由大模型比对两热点,判定两者是否属于同一事件。

优化逻辑:

当event_keywords表内没有数据时,将两个事件对比生成原始事件类型,
随后读取下一个热点事件,热点提取关键词,将提取出的关键词与数据库中已存在的事件类型进行比对,若有比如一个以上关键词能模糊匹配到,就由大模型比对此事件类型下的事件,判定他们是否属于同一事件,若为同一事件,则将事件数量加1,将此事件类型,写入此事件,若不同则把大模型返回的事件类型写入event_keywords表,并标记事件数量为1,将此事件类型写入,此事件。

存疑:是否需要两个库,一个热点库,一个关键词库。中间的具体实现逻辑?

TF-IDF会将数据转换为向量,后计算TF和IDF

有几个关键词,时间,地点,发生什么事

事件类型如果用1,2,3,4这样来标识是不是一类,那我怎么去和之前的一类进行对比,是不是还是要新建一个表来存储事件类型

对于同一事件来说,有可能会出现连续的几次关键词提取导致一个时间出现好几个不同的关键词,对于这些不同的关键词应该怎么办:第一种按照上述所说的分类

提供给ai一个现有事件列表和要判断的当前事件,利用当前事件和现有事件的判断

<dependency>
  <groupId>com.hankcs.hanlp.restful</groupId>
  <artifactId>hanlp-restful</artifactId>
  <version>0.0.10</version>
</dependency>

{

"keyWord": "占道整治",

"eventName": "占道经营治理",

"status": "1"

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值