Comments (7)
下午好!
非常感谢您的贡献和建议!
1.已验证正在解决。
2&3.已经添加完整的句尾标点符号过滤。
4.这个功能后续会添加,目前暂时不考虑,以提升性能为主。
5.在chat.server模块中有日志支持。
6.前端管理的UI及对应的增删改查等语义服务接口由于涉及到公司利益暂时没有上传,望体谅。
总之,很感谢您的建议!会将您列到项目贡献者名单。
欢迎分享交流,一起成长!
from chat.
继续提几个问题!
1,导入数据时,纯数字类型的问题或答案无法导入数据库,需要代码转str才能保存;保存时只对问题做了非空判断,未对答案进行非空判断。
2,因为代码进行分词时,对末尾语气词进行了过滤,这里我个人觉得有优化的地方,我是改为了:tone_words = "了呢吧啊啦呀";另外添加了不过滤的一些简单短语:exclude_words = ["啊", "啊啊", "啊啊啊", "啦啦", "啦啦啦", "哎呀", "吧啦", "啦呀", "啊呀", "吧啦吧啦"],避免用户输入:啊 等词,无法匹配的情况;这个根据需求定位来看吧;
3,因为代码中的矩阵阀值,相似度阀值都定的非常的高,一句话里最多差一两个词,再多就匹配不上了,准确率高,但是不符合关键词搜索的场景;因此我改了些东西请指正:有完全匹配的,随机输出一个答案,没有完全匹配的,取相似度最高的返回,这里我给相似度是0.2,目的是为了适应关键词搜索,另外矩阵阀值我改了0.5,矩阵这块的规则我不是很懂。最终验证的结果呢是让我比较满意的,当然这个改动也是根据定位来做的,毕竟按源代码的逻辑与阀值,匹配率太低了。
4,另外上面提的一个问题:类似“我喜欢你”,“你喜欢我”类型的两句话,代码中计算相似度得分是1.0,不知道现在是什么情况。
有点啰嗦了,有时间指正下了!
from chat.
早上好!
1.是的,设定了问题答案都是字符类型的。您可以修改源代码。在chat.graph.add_nlucell中前两行
assert name is not None, "name must be string."
assert content is not None, "content must be string."
2.这个建议非常好。我这边暂时主要考虑语音对话的情况,所以对文本输入考虑的少,非常感谢!
3.这个也是可以改的,在1.0.7.dev110版本中已经将阈值设为了函数的参数,可以自由设定。当大于最高阈值时直接返回,当在最低阈值和最高阈值之间时返回相似度最高的,低于最低阈值时才随机回答。因为不同的情况下对于匹配精度要求不一样,例如有些需求就要求精确匹配,那就只能调高,有的要求尽量多回答,那就略低。根据你的需要。
目前算法是:(大于最高阈值直接返回) + (最低最高之间返回最大相似度的)
示例定义:def extract_synonym(self, question, subgraph, threshold=0.60, athreshold=0.92):
具体查看源码
4.这个是匹配算法本身的问题,对词序影响考虑不全,所以接下来也要把词序算法加进去。
关于您之前的建议,已经在 chat.semantic.synonym_cut 的
函数注释中添加:Contributor: zheyang0715(https://github.com/zheyang0715)
后续会在文档中更新。
谢谢!
from chat.
补充:
相似度阀值都定的非常的高:主要是对于语义计算chat.qa.extract_synonym
而关键词匹配已有:chat.qa.extract_keysentence 和 chat.qa.extract_keysentence_first 来获取满足包含关键词的句子中相似度最高的
另外还有拼音模糊匹配:chat.qa.extract_pinyin 作为上述两个步骤之后的方案
综合就是:可以使用 1.语义匹配->2.关键词匹配->3.拼音匹配 3步整合来最大限度的拿到答案。当然也可以根据需要选取任何一个。
from chat.
您好,非常感谢您的回答,代码更新较快没有跟上……,您这边方便提供一些示例数据吗?因为对于之前的结构我只需要提供(query问题,content答案,topic话题)三个值即可使用,现在的话添加了场景关系等等,稍微有点糊涂,另外keywords字段是手动定义的关键字吗?我只发现tag是代码生成的向量值,如果您能提供一些比较完整的示例数据在代码里供测试使用的话,万分感谢。
from chat.
晚上好!
现在的结构只要问题答案也能正常使用。多参数的是与场景有关的。具体可以加微信聊。
wechat: yingluoqingli
from chat.
hi, 关于语义标签相似度计算, 能说明一下其动机吗(或者出处), 比如为什么要将n转化为弧度值?
对应代码为semantic2.sim_tag(tag1, tag2)
math.cos(n * math.pi / 180) * ((n - d + 1) / n) * s3
from chat.
Related Issues (20)
- 代码可以运行了,但场景不会用,没有详细说明介绍 HOT 8
- 请确认下,是不是BUG? HOT 1
- 一个场景下只有一条问答数据的话,输入“下一步”,报异常。 HOT 1
- 为什么topK=1,默认值为20 HOT 6
- Propose Logo HOT 11
- cannot import name 'NodeSelector' HOT 2
- 关于运行test_client.py HOT 1
- 我是安装版的Neo4j,请问怎么使用Neo4j Desktop连接已经初始化好的nlu.db文件夹
- 另一个开源项目,实现聊天机器人
- buttom按钮是怎么实现
- 目标计算机积极拒绝 HOT 2
- 关于server.py
- 安装报错 HOT 1
- Database 'nlu.db' is unavailable. HOT 1
- 项目资料 HOT 1
- can not install py2neo HOT 1
- py2neo==3.1.2 problem
- 版本过于老化问题,寻求帮助
- 安装失败的问题 HOT 1
- 关于语义相似度的算法motivation HOT 3
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from chat.