美文网首页
语料库简单思路

语料库简单思路

作者: Stark_Dylan | 来源:发表于2017-07-16 16:09 被阅读596次

项目环境:JDK1.8,Maven3.39,IDEA
项目仓库:Github地址


把传统的一问一答的思路转变为无问答。聊天即为会话,我们认为所有的上下文都是有可能关联的,所以用概率学来处理问题。下面来看一个简单的处理流程:


img_1.png

基础库会存储所有的用户发来的内容(也会包含一部分最初我们基础的对话内容)
Tree 库中的意思是 会话ID 对应 下一条可能的数据,相同的数据可是可以的。通过随机去处理其实简单的多。

当有新的用户与机器聊天的时候,首先去 基础语料库中匹配,表中的内容大致是这样的:


img_2.png

每一行都是一行内容,在Tree表中,存储的则是对应关系:

img_3.png

qid:会话
aid:回复的内容

这些id全部是base中每一条内容的id。举例:机器人现在库中是空的,还没有学会 你好 该怎么回答,那么过程就是:

表全部为空,示例1

用户1:你好

  1. 数据库中没有匹配到任何内容
  2. 添加到 base 会话表中
  3. 添加到 butt 未知表中
  4. 由于表当前全为空,所以随机回复也是刚插入的 你好 这条数据

表全部为空,示例2

用户2:你怎么这么傻

  1. 数据库中没有匹配到任何内容
  2. 添加到 base 会话表中
  3. 添加到 butt 未知表中
  4. 由于表当前全为空,所以随机回复也是刚插入的 你怎么这么傻 这条数据

假设,用户在 示例1 之后,问了问题,你多大年纪了
(机器在不知情的状况下,认为,在 说你好之后会说你多大年纪了

  1. base 数据库中没有匹配到这个问题,插入 base 会话表中
  2. 添加到 tree中,你好 对应 你多大年纪了
  3. 添加到butt 未知表中
  4. 由于未知表中存在了 你好你多大年纪了,随机回复一条,但是你多大年纪了要除去。

假设,用户2 在示例2 之后,回答了问题,我不傻,是你傻
(机器在不知情的状况下,认为,在 说你怎么这么傻之后会说我不傻,是你傻

  1. base 库中,没有匹配到这个问题,入库
  2. 添加到tree中
  3. 添加到butt未知表中
  4. 由于未知表中依旧不知道2个问题,你好,你多大年纪了,所以随机回复一个除我不傻,是你傻话之外的问题让用户回答。

在n轮之后,可能机器人学会了很多中你好的回答,或者是你好之后用户问了什么问题:

img_4.png

我们看到,用户对于你好这个问题的回答几乎是很相近的。所以下次,如果有人来问你好,机器人就会去库中查出来,然后数量内随机,那么越多被回答的内容被随机到返回的几率也就越大。当然,其他几率比较小的问题也可能被随机到,但是这都是别人跟机器人聊天问的东西,我们把这些问题抛给其他人也不是不对。


机器人一个简单的学习途径就搭建起来了,但这仅仅是学会了这些话,机器并不懂这些话到底是什么含义,或者有没有更好的途径,那么就要借助语义识别与分词了。


我们这里的分词使用的是斯坦福大学的分词系统,分词之后,我们可以做很多的事情,比如说两句话的意思是否一致,能大致的判断出这个人是想要什么东西,做什么事情,而不是像最初那样笨笨的学习,如果在学习的过程中有个人捣乱,哪所有人也遭殃了。

假如说机器人不管说什么,他都回复:小明很笨,过不了多久,大部分用户跟机器人聊天,只要没有确切的答案,都会说小明很笨了.... 哈哈

所以,这里要做一些操作,我们再次把表分开。tree表中存放的都是我们预置的一些预料,base的功能还是存放所有的通过机器的会话,butt中依旧存放未知的语句。这时候多一样表:机器学习到的内容,t_corpus_hit,这张表我们单独存放学习到的数据,以免对原有固定或者基础答案的内容造成冲击。

这张表在入库的时候一定要把控的很严格,稍有不慎就会传播色情内容,所以基础的过滤与鉴定是要有的,这张表中我们作为命中表,如果对于一个问题的回答多个人命中之后,那么该回答作为可用回答,插入到tree中。命中的过程也就是2句话意义是否相近的过程。

加入用户说:我想吃黄焖鸡,另一个用户也说,黄焖鸡我很想吃,那么在同一个scope分词后,同样存在吃,黄焖鸡,大致的可以认为他们相近,当然这里就涉及到一些干扰的去除等等。这里后续我们会加入元祖的概念。

就像我们出生到现在,我们也在学习,什么话之后应该说什么话。未来我们把上下文加入之后,会得到一个更好的结果。

下节我们开始写代码了

相关文章

  • 语料库简单思路

    项目环境:JDK1.8,Maven3.39,IDEA项目仓库:Github地址 把传统的一问一答的思路转变为无问答...

  • 开发和评估分块器

    IOB格式和CoNLL2000语料库 语料库中的块类型貌似只有NP,VP和PP。 简单评估和基准 使用

  • 语料库检索

    第三章 语料库的基本技术 第一部分 语料库检索的目的和检索类别 简单检索 以AntCone为例 简单检索中,wor...

  • NLTK学习记录2:使用语料库和词汇资源

    内置的语料库 或者 从语料库中提取文本信息 再例如Brown语料库 内置语料库基本函数 载入本地语料库 条件频率分...

  • pyhanlp文本分类与情感分析

    语料库 本文语料库特指文本分类语料库,对应IDataSet接口。而文本分类语料库包含两个概念:文档和类目。一个文档...

  • IR homework 1: 构建布尔检索系统

    ir homework 1: 构建布尔检索系统 思路 语料库预处理 去除非中文汉字符号,包括:标点符号、英文、数字...

  • Python爬虫与AI结合,打造诗歌接龙程序!

    介绍 本文将展示如何利用Python爬虫来实现诗歌接龙。  该项目的思路如下: 利用爬虫爬取诗歌,制作诗歌语料库;...

  • 2019-08-05

    请问语料库的作用主要是什么,如何构建领域语料库,领域语料库建好以后,如何发挥作用。如把军事语料库作为一项研究内容的...

  • Python基础教程:破解验证码技术,识别率高达百分之80!

    本文将展示如何利用Python爬虫来实现诗歌接龙。  该项目的思路如下: 利用爬虫爬取诗歌,制作诗歌语料库; 将诗...

  • #6801#

    第4章 语料库与语言知识库 语料库统计 两层含义:利用语料库对于语言的某个方面进行研究;一句语料库所反应出来的语言...

网友评论

      本文标题:语料库简单思路

      本文链接:https://www.haomeiwen.com/subject/ofntkxtx.html