把文本分类任务做成一个系统

问题和具体场景

说具体方法之前先说下场景吧。

相对开放域的搜索,在有比较初步的物料后,都会选择使用检索的方式快速完成初版本的设计和上线,但是随着逐步迭代发展,要对特定品类或者意图进行更为精准的设计,此时就需要把需要精准设计的模块挑出来,例如要做好天气,要做好电影电视剧,那就要从众多分散的query中找到,此时就需要对这个模块多足够精准的分类和拒绝,从而达到精细设计的效果。

例如产品最近要做一个天气类目的模块,即在用户输入天气相关的query的时候,能给用户返回天气的卡片,带有温度、湿度、是否下雨、天气指数等,为了下游精准的展示,我们就需要用专门的分类把天气意图的query从海量的用户query中挖掘出来,在本文,我要讲的分类系统,就是指这件事。

然而,哪怕是简单的一个天气技能的识别,也不是一个简单的事情,这可不是简单的“今天天气怎么样”而已,还会有“北京明天的天气”、“明天要带伞吗”、“这周六需要穿毛衣不”之类的,可能都会属于天气(最终是否属于,要看场景和实际产品需求),这里面就有大量的复杂情况,文本分类是否能覆盖,这就不太好说了。再者,还有类似“天气之子”、“下雨了我好难过”这种可能比较边缘的识别难题,让分类就变得非常困难。

分类系统的设计

方法盘点

有关分类的方法,其实我在之前的一份总结里面有提到一些常用的分类思路,结合以搜代分的思想,我们可用的工具很多,我们需要的是把他们结合现实情况有机组合起来,从而让我们把一整个完整的分类任务给做好。首先我们还是先来盘点下我们主要的分类思想,从简单到复杂地依次排列。

  • if else规则。最简单粗暴的方式,能快速解决最直接明显的case。
  • 词典。最强的干预方法,黑白名单加上热更新能灵活处理各种情况,同时对于名词性比较强的分类效果也很好,但前提是这些名词能够挖掘得到。
  • 文本分类。应该是现在研究的主流,也是大家最容易想到的方式,这种方式的优点就是泛化能力强,在有足够数量和质量样本的情况下,我们就能构造出分类模型。
  • 搜索。通过构造搜索集,然后通过搜索的方式完成分类。这种方法很适合处理长尾的情况,同时对于多语义空间簇的情况,可能要多个文本分类才能搞定的任务搜索只需要堆一些检索query即可完成。

方法很多,现在我们需要的就是把他们有机地组合在一起,完成这一整个完整的分类系统。而在开始之前,我们还是要看看我们需要做的分类任务,都是什么类型的,所谓的因地制宜,就是要熟悉问题后给出针对性的方案。

问题分析和思考

道理都懂,为了解决问题,我们需要分析问题,但具体怎么分析,其实非常模糊,我暂时也很难给出一套很完整的方法论,但是一些思路和建议还是可以和大家谈谈,而在谈的过程中如果有什么建议欢迎提出和交流。现在来回答我这几个问题:

  • 数据:
    • 当前已有多少数据,质量怎么样。能否进一步挖掘到多少,难度咋样。
    • 是词典数据还是query类的文本数据?
    • 样本的语义空间是什么样的,大部分是否非常集中或者非常零散。
    • 覆盖应用场景的量怎么样。
  • 应用场景:
    • 性能需求和硬件需求。大模型、大辞典可能因为性能原因用不到。
    • 该分类的名词性质怎么样,是否需要足够的名词信息支撑。类似音乐、电影之类的,名词类的模型会比较难学到。
    • 需要的泛化能力如何,例如如果是口语化的,那需要的泛化能力就要比较强,泛化能力需要来源于模型,无论是分类模型还是搜索用的语义匹配模型。
    • 需要的更新频次怎么样。定时更新的频率会比较高的,更新频率高的部分用文本分类会受到限制。

上面这些问题的思考和回答,本质上就是在对应上面的每个方法,将问题和方法所对应起来,就能够设计好这些问题了。

开始设计方案!

有了上面的铺垫和思考,我们就可以开始设计方案了,首先我们思考的核心应该是,什么样的分类才更加契合我们的场景。来说几个比较突出有特色的场景,供大家理解。

电影类

任务是要区分用户是否是搜电影相关的意图,看看case基本都是“钢铁侠”、“战狼”之类的,顶多就是“我想看大圣归来”的泛化句子,而且这种句子更新的还挺频繁,新电影上映我们就要更新了,甚至会有“唐人街探案”这种电视剧、电影,甚至还有一些还有小说同名的意图,这种很不好做,最基本的方式应该就是维护一个定时更新的词典,借助这个词典做匹配就能够轻松完成文本分类。

当然的,如果有一些比较泛的需求,例如“给我来一部恐怖电影”,这种没有具体的电影名,则更加推荐使用模型来做分类了,毕竟话术比较模糊,泛化需求比较强,同时名词性质没有上面那种情况那么强了,此时这样设计会更加精细化。

知识问答类

知识问答类应该是最复杂的一种类目了,识别用户是不是在问一个“知识问题”,可以理解为用户是不是想问一些知识点,这种更适合出百度知道或者百科,这个领域非常广泛,但又十分零散,而且在一些小的方面,还可能会和意图打架,例如娱乐明星等人物介绍之类的。所以我们需要很小心地做好这套城墙。我给的方案和思路是这样的:

  • 知识问答往往会伴随知识库,知识库是非常容易使用以搜代分的。
  • 注意构造拒绝词典,开放域十分容易和其他意图出现混合,对于一些其他意图可能处理更好的query,我们要有特定的手段进行拒绝,而最好的方式就是词典。
  • 对于一些比较模糊的泛需求,可能会由于知识库覆盖率问题而无法召回,此时我们可以用一个相对比较弱,但是有高准的文本分类兜一些回来。

天气类

天气类是我自己很喜欢举例子的一类,因为这一类里覆盖了很多分类需要面对的情况,咱来聊聊。

首先比较高频的应该类似'今天天气怎么样'之类的问句,词典可能成本比较高,文本分类可以一劳永逸,毕竟变动其实不会很大,当然觉得要灵活一些,以搜代分的形式也可以,后面召回不够可以再加。

然后还会有一些特定的疑问场景,类似'北京的天气','这周末杭州会下雨吗'之类的,可以结合槽位、词典来做转化,例如转化为[city]的天气然后来分类,这样接着做更简单。

但是,这并没有完,我们还是要做一些拒绝的工作,否则类似“天气之子”,“下雨天”这种名词性质的,其实是电影之类的,我们可以用词典做一些拒绝,即匹配到了就拒绝掉,肯定是负类。

多分类和排序

在大搜等开放域的场景下,我们需要对特定细节场景进行精细化管理和优化,文本分类就是进入各个细节场景的大门,于是多分类就成了一个关键问题,上面提到的是一些案例和思路方法,这里需要给大家讲几个比较关键的技术细节。

拒绝能力

多分类场景,很多query很容易就会产生所谓的多意图,此时我们就需要选择,甚至在一些场景下我们只能出一个的时候,我们只能选一个,最简单的方式就是使用一些拒绝策略,保证特定情况下我们不能出。

拒绝是一个灵活的需求,可能需要随着瞬息万变的在线情况进行随时的更改,所以一般是使用词典的形式完成,对高频的、新热的,如果有搜索库的话,可以加到检索库里面,如果匹配到了,则直接拒绝。

另外,拒绝本身也是一个提升性能的策略,用词典、关键词之类的方式过滤掉一些“肯定不属于”的query,由于这些方式性能很高,而且绝大部分情况应该是负类的话,这种拒绝对性能的提升就是个质变了。

排序

多意图势必会出现排序问题,通常下游会有一套非常完整的排序体系,本期篇幅有限我没有完整地聊,但是这的确是非常重要的,在应对多分类的问题上,简单的拒绝可能让我们的灵活性降低,所以我们可以在分类的过程中下放一些多意图的query,而不是直接拒绝。

举个例子,明星问答和百科可能会有重合,如果是有些明星的答案在明星问答中不存在,那就可以由百科来兜,此时我们就可以在明星问答和百科中都识别为正类,排序的问题交给排序模块。

小结和思考

在开放域里,分类问题并不是就那么简单了,我们需要根据场景特点,构造完整、可靠的分类系统,来尽可能完整地实现高效、精准的分类。回顾一下,我们需要的主要是两个关键点:

  • 手里有足够多的方案选择,并且对这些方案的优缺点有足够的认识。
  • 对问题也有足够的理解,知道问题有什么特点,可以用什么方式应对这种特点。
(0)

相关推荐

  • 地理文本处理技术在高德的演进(下)

    在[上篇]里,我们介绍了地理文本处理技术在高德的整体演进,选取了几个通用query分析的点进行了介绍.下篇中,我们会选取几个地图搜索文本处理中特有的文本分析技术做出分析,包括城市分析,wherewha ...

  • 美团智能客服技术实践

    导读:客服是在用户服务体验不完美的时候,帮助体验顺畅进行下去的一种解决办法,是问题发生后的一种兜底方案.而智能客服是让大部分简单问题得以快速自助解决,让复杂问题有机会被人工高效解决.在用户服务全旅程中 ...

  • Excel数据源获取的常见错误解决办法

    嗨咯大家好,我是亮仔 今天我们来虚拟一个任务或者项目来作为制作数据可视化图表实例,逐步制作数据可视化分析报表,如果小伙伴没有基础也没关系,制作过程中用到的知识点我都会进行说明,知识点较多,制作的周期会 ...

  • 【NLP-ChatBot】我们熟悉的聊天机器人都有哪几类?

    本篇是专栏中介绍聊天机器人的第一篇,会大概介绍聊天机器人的历史.特点.分类以及技术框架,让大家对聊天机器人有一个大致的了解. 作者&编辑 | 小Dream哥 1 chatbot概述 关于对话机 ...

  • 和谁说理去!97年姑娘,竟然把财务报表分析做成了系统,亲测好用

    这跟谁说理去,我们公司刚来没俩月的97年小姑娘工资可就跟我这个工作快十年的老会计一样多了. 不过也可以理解,人家也是个有本事的姑娘,自己运用Excel把财务报表分析做成了全自动财务报表分析管理系统,还 ...

  • 投资技巧的最高境界:简单规则,长期执行,坚持做一个系统交易者

    在股市里,无论基本面掌握得多全面,还是技术面发现得多技术,而真正最后能胜出成为赚钱的少数人,决定因素还是每个人的心理面. 有时候非常准确地预测了大盘未来,也预测了个股的涨跌结果,但后来的交易结果,却又 ...

  • 主力交易员的终极感悟:坚持做一个系统交易者,建议每个周末看看

    君子谋时而动,顺势而为.顺势是我们来到投资市场听到的最多的一个词,但在实际的交易中人们却往往背驰而行,喜欢抄底摸顶,我们被内心的恐惧和贪婪所驱使,在上涨时不敢买时,却一心想卖到一个最高价,但是在实践中 ...

  • 一个人若想成功,要么组建一个团队,要么加入一个系统!

    我    桶   有位木匠砍了一一棵树把它做了三个木桶. 一个装粪,就叫粪桶,众人躲着: 一个装水,就叫水桶,众人用着: 一个装酒,就叫酒桶,众人品着! 桶是一样的, 因装的东西不同命运也就不同. - ...

  • 如何将关键词信息融入到文本分类任务

    在知乎看到这样一个问题[如何将关键词信息融入到文本分类任务],简单说一下自己的经验,供大家参考: 首先说,现在基本各组都有自己的关键词词库,构造方法也都基本上相似. 简单点的就是TF-IDF筛选,复杂 ...

  • 【e汽车】坦克是如何做成一个现象级品牌的?

    每一次的上海车展,都能带来很多不一样的东西,因为每一次的上海车展,都是概念车.新车型和新技术的集中展示,当然,最令人感兴趣的,还是每次有趣又好玩的新东西. 今年车展的最大亮点,就在坦克展台. 创新是什 ...

  • 做一个系统分为四个步骤:1:把复杂问题简...

    做一个系统分为四个步骤: 1:把复杂问题简单化. 2:把简单问题数据化. 3:把数据问题程序化. 4:把程序问题体系化. 这就是建立一个系统的的基本逻辑. 具体到行动层面,可以分为下面四步: 第一:高 ...

  • 双系统怎么删除一个,教您如何删除双系统中的一个系统

    一些喜欢捣腾电脑的用户电脑可能会安装双系统,对于不懂电脑的用户也可以跟着网上的教程一步一步安装双系统,不过有用户在安装完系统又觉得没有必要,那么如何删除卸载一个系统呢?下面,小编就来跟大家介绍删除双系 ...

  • 长短期记忆网络LSTM在时间序列预测和文本分类中的应用

    长短期记忆网络或LSTM网络是深度学习中使用的一种递归神经网络,可以成功地训练非常大的体系结构. 什么是LSTM? LSTM代表长短期记忆网络,在深度学习领域使用.它是各种循环神经网络(RNN),能够 ...