LittleWhiteOne基本设计
LittleWhite One 魔改chatterbot框架实现的新版小白~ 简介 core:核心框架,魔改版chatterbot corpus:英文和中文训练语料 nltk_data:需要用到的nltk数据集 文本相似度算法 LevenshteinDistance SpacySimilarity JaccardSimilarity Levenshtein Distance算法 中文名:莱文斯坦距
目录9 个章节
LittleWhite One
魔改chatterbot框架实现的新版小白~
简介
- core:核心框架,魔改版chatterbot
- corpus:英文和中文训练语料
- nltk_data:需要用到的nltk数据集
文本相似度算法
- LevenshteinDistance
- SpacySimilarity
- JaccardSimilarity
Levenshtein Distance算法
中文名:莱文斯坦距离 参考资料:https://en.wikipedia.org/wiki/Levenshtein_distance
Levenshtein distance是表征或度量两段字符串的差异度的概念,以单词kitten和sitting为例,定义:替换(substitution)、插入(insert)和删除(delete)三种标准编辑手段来消除这两个词之间的差异,每经过1次标准编辑手段,Levenshtein distance增计一次,则kitten需经过2次替换、1次插入新字符,来得到sitting这个单词,因此所谓的Levenshtein distance应为3。按照其定义,该距离和字符串差异度呈正比关系。
定义:
两个字符串a,b之间的莱文斯坦距离

编辑距离是NLP基本的度量文本相似度的算法,可以作为文本相似任务的重要特征之一,其可应用于诸如拼写检查、论文查重、基因序列分析等多个方面。但是其缺点也很明显,算法基于文本自身的结构去计算,并没有办法获取到语义层面的信息。
SpacySimilarity算法
SpacySimilarity属于语义相似度的计算方法。
参考资料: https://spacy.io/api/doc/#similarity
先将句子的词向量求平均,获取句子的语义表示,然后计算两个句子的语义表示的余弦相似度。
JaccardSimilarity算法
参考资料:https://en.wikipedia.org/wiki/Jaccard_index
给定两个集合A,B,Jaccard 系数定义为A与B交集的大小与A与B并集的大小的比值,定义如下:

当集合A,B都为空时,J(A,B)定义为1。
与Jaccard 系数相关的指标叫做Jaccard 距离,用于描述集合之间的不相似度。Jaccard 距离越大,样本相似度越低。公式定义如下:

todo
算法优化
- 试用另外的基于词向量的几种计算文本相似度方法 :
- 使用词向量求平均计算相似度
- 词向量tfidf加权求平均计算相似度
- 词向量加权-PCA计算相似度
- 基于深度学习的方式,计算句子的语义相似度
训练优化
- 使用新的大容量语料训练
- 接入tai套取聊天语料
- 结合LittleWhite v3的双引擎从用户对话中学习
_EOF_
LittleWhiteOne基本设计
- 本文作者:
- 程序设计实验室
- 版权声明:
- 本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
相关文章
多个约束条件下的二维装箱问题——寻找《开罗拉面店》最优布局之代码解析(一)
介绍 本代码是用C#实现的。在开始代码解析之前,先把要用到的数据贴出来: | 店铺id | 店铺宽度 | 店铺高度 | 入口位置 | | ------ | -------- | -------- | -------- | | 1 | 9 | 6 | (5,6) | | 2 | 5 | 6 | (1,6) | | 3
2021-12-18 · 算法/机器学习 · 约 1 分钟
推荐系统开发实践:Surprise库基本用法
首先是构建数据集 这里我使用了随机生成用户和项目,以及用户对项目的评价,喜欢(1)与不喜欢(0) import random import pandas import numpy as np def build_dataframe() - pandas.DataFrame: datasets = { 'userID': [], 'itemID': [],
2021-12-18 · 算法/机器学习 · 约 1 分钟
多个约束条件下的二维装箱问题——寻找《开罗拉面店》最优布局之代码解析(五)遗传算法解析
前言 遗传算法的一些思路我在开篇有提到一些,这里给出具体过程: 1、生成两个种群,分别使用BL算法和BL_plus算法; 2、开始迭代 3、调用两个种群的update_max()函数更新最优个体 4、如果两个种群中有最优解(也就是12家店铺全部铺上去了),则跳出循环,返回该个体; 5、如果达到迭代次数,则跳出循环,返回两个种群的最优个体; 6、如果达到交换迭代次数,则: 假设种群P1的最优个体适应
2021-12-18 · 算法/机器学习 · 约 1 分钟
多个约束条件下的二维装箱问题——寻找《开罗拉面店》最优布局之代码解析(三)
种群类:Population 属性 种群类首先要储存的便是上一篇中提到的原始基因;其次为了应用精英保存策略、择伏分配等,需要记录最优个体的相关信息;同时在计算交叉变异概率的时候,需要用到求平均适应值的方法,所以为了简化计算,储存每个个体的适应值是很有必要的。 /// summary /// 个体列表 /// /summary public ListIndividual ind; /// summ
2021-12-18 · 算法/机器学习 · 约 1 分钟
讨论
共 0 条加载评论中…