NLP 任务中有哪些巧妙的 idea?

文章目录

  • 1. 分布式假设(Distributional Hypothesis)
  • 2. 词袋模型(Bag-of-Words)
  • 3. 潜在语义分析(Latent Semantic Analysis)
  • 4. 概率主题模型(Probabilistic Topic Models )
  • 5. 基于BMES的中文分词或基于BIO的NER/Chunking
  • 6. 基于PageRank的TextRank

转载来源:https://www.zhihu.com/question/356132676/answer/901244271
作者:邱锡鹏

这个问题很有趣!看了下目前的回答都是深度学习之后的,我就回答几个深度学习之前的吧:)
先从语义表示说起吧,个人觉得都是简单并且巧妙的想法(但其背后的理论不一定简单)。

1. 分布式假设(Distributional Hypothesis)

“Linguistic items with similar distributions have similar meanings.” 参考

直白点就是,一个词的语义可以用它的上下文表示。

对NLP来说,个人觉得分布式假设是来自语言学的最有价值的“理论”之一。

2. 词袋模型(Bag-of-Words)

将一篇文档看作是一个词的集合,不考虑语法,甚至是词序信息也都抛弃了。

BoW模型解决了用机器学习来做NLP的一个痛点问题:怎样把一个变成的文本序列转换为定长的向量。

相关扩展:N-gram,TF-IDF等3. 潜在语义分析(Latent Semantic Analysis)

3. 潜在语义分析(Latent Semantic Analysis)

基于上面的分布式假设和词袋模型,我们可以构建一个词-文档矩阵(term-document matrix) XX 。这个矩阵 XX 很有意思,每一列为一个文档的表示(BoW向量),每一行为一个词的语义表示(分布式假设,其中上下文是以文档为基本单位)。这样我们就可以用 XTXX^{T}X 表示文档和文档之间的关系,用 XXTXX^{T} 表示词与词之间的关系。这个矩阵还可以进行SVD分解,得到词和文档的稠密向量表示,可以发现潜在的语义信息(比如主题等)。
alt

4. 概率主题模型(Probabilistic Topic Models )

概率主题模型比词袋模型多引入了一个“主题(Topic)”作为隐变量。词和文档的之间关联变成了:文档->主题->词。这个想法合情合理,听上去就更好。如果你觉得哪里不好,又可以魔改。概率主题模型的数学基础(概率有向图模型)十分漂亮,并且基于吉布斯采样的推断简单到不可思议,甚至不需要图模型的知识就可以理解。PTM是前深度学习时代NLP领域的一个大宝矿(Shui Keng)!
alt

5. 基于BMES的中文分词或基于BIO的NER/Chunking

BMES 是Begin/Middle/End/Single的缩写,代表所标记的字符是一个词语的开始/中间/结尾/单字词。

BIO是Begin/Inside/Outside的缩写,表示所标记的词是一个实体名的开始/内部/外部。
alt
这种标记将带有分割性质的NLP任务转换为序列标注任务,可以使用HMM、CRF等成熟的机器学习模型。

6. 基于PageRank的TextRank

PageRank本身非常巧妙了,TextRank更是巧妙地将PageRank应用到NLP中的词排序或句子排序上面,比如关键词抽取、文本摘要等.
alt

热门文章

暂无图片
编程学习 ·

vue+element-ui JYAdmin后台管理系统模板-集成方案【项目搭建篇1】

项目搭建时间:2020-06-29 本章节:讲述基于vue/cli, 项目的基础搭建。 本主题讲述了vue+element-ui JYAdmin 后台管理系统模板-集成方案,从零到一的手写搭建全过程。 该项目不仅是一个持续完善、高效简洁的后台管理系统模板,还是一套企业级后台系统开发集成方案,致力…
暂无图片
编程学习 ·

XTransfer欧美本地账户可以收哪些地区的币种?

很多人注册了XTransfer账户之后,开通了XTransfer欧美本地账户。本地收款账户有两个,一个是美元的开户行是纽约的Community Federal Savings Bank(CFSB),一个是欧元的开户行是英国的 Currency Cloud。欧美本地收款账户可以用于接收欧洲、美国的本地汇款,买家通过本地清算网…
暂无图片
编程学习 ·

window.performance.navigation.type

performance.navigation.type(该属性返回一个整数值,表示网页的加载来源,可能有以下4种情况):0:网页通过点击链接、地址栏输入、表单提交、脚本操作等方式加载,相当于常数performance.navigation.TYPE_NAVIGATE。1:网页通过“重新加载”按钮或者location.reload()方法加…
暂无图片
编程学习 ·

718 最长重复子数组- 动态规划

题目描述: 给两个整数数组 A 和 B ,返回两个数组中公共的、长度最长的子数组的长度。 示例 1: 输入: A: [1,2,3,2,1] B: [3,2,1,4,7] 输出: 3 解释: 长度最长的公共子数组是 [3, 2, 1]。 说明: 1 <= len(A), len(B) <= 1000 0 <= A[i], B[i] < 100 方法一 动态规…
暂无图片
编程学习 ·

51小项目——使用proteus搭建简易的光照度计-(1)

总述 本项目基于51单片机,实现了对光敏电阻两端电压信号的简单获取,并通过数码管显示,蜂鸣器可以根据电压信号的大小发出不同间隔的声音。 注意: 由于疫情原因限制,无法返校制作实物,故本项目仅在proteus中完成了仿真,未能完成实物制作,仿真结果可能与实物结果不符 介绍…
暂无图片
编程学习 ·

ubuntu python 升级 和pip匹配问题

ubuntu16.04,卸载系统自带的python3.5引发了一宗惨案,好在最终完美解决https://blog.csdn.net/qq_29935433/article/details/105568942?utm_medium=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase&depth_1-utm_source=distribut…
暂无图片
编程学习 ·

JDK的安装与配置

搭建java开发环境 java语言执行需要经过编译原代码,之后才可以在JVM上解释字节码车光绪,这些需要JDK的支持才能完成 开发者可以直接通过Oracle官方网站获取JDK工具。选择与自己操作系统对应版本,初学者版本不必过新。 下载完之后获得一个程序安装包,双击运行即可。 例如将J…
暂无图片
编程学习 ·

05 | 消息积压了该如何处理?

1.应用场景https://blog.csdn.net/william_n/article/details/1040254082.学习/操作2.1 阅读文档这节课我们来聊一聊关于消息积压的问题。据我了解,在使用消息队列遇到的问题中,消息积压这个问题,应该是最常遇到的问题了,并且,这个问题还不太好解决。我们都知道,消息积压…
暂无图片
编程学习 ·

https://www.cnblogs.com/hdk1993/p/5853233.html

c++文件打开方式详解 csdn编译器使用方法 欢迎使用Markdown编辑器 你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。 新的改变 我们对Markdown编辑器进行了一些功能拓展与…
暂无图片
编程学习 ·

『互联网架构』软件架构-mysql主从(二)

通俗来讲,如果对数据库的读和写都在同一个数据库服务器中操作,业务系统性能会降低。 为了提升业务系统性能,优化用户体验,可以通过做主从复制(读写分离)来减轻主数据库的负载。 而且如果主数据库宕机,可快速将业务系统切换到从数据库上,可避免数据丢失。源码:https://…
暂无图片
编程学习 ·

float类型的数据和无穷小的比较

float类型的数据和无穷小的比较 coding 时,偶尔需要对浮点型数据进行比较,尤其是判断两个浮点型数据是否一致时,需要把两个浮点数之差的绝对值和float.Epsilon比较 其中 float.Epsilon是大于零的最小浮点数(大约为1.401298E-45) 以判断浮点数只能为 1 -1 和 0 为例 //和 1 -…
暂无图片
编程学习 ·

从JIT到类加载再到实现原理解式Lambda编译慢的问题二

从JIT到类加载再到实现原理解式Lambda编译慢的问题二 问题回顾 描述的话不多说,直接上图:看到输出结果了吗?为什么第一次和第二次的时间相差如此之多?咱们一起琢磨琢磨,也可以先去看看结论再回过头看分析 注:并非仅第二次快,而是除了第一次,之后的每一次都很快 给与猜想…
暂无图片
编程学习 ·

web前端应该怎么学?

互联网+的火爆,让互联网行业快速的扩张。越来越多的人想通过学习的途径进入这个行业,java开发、WEB前端开发、UI设计等专业受到大众追捧。小编这次主要介绍一下WEB前端开发,为想要学习web前端开发的人指点迷津,能更加有效的去学习web前端开发。 web前端开发需掌握的知识 【…
暂无图片
编程学习 ·

freemarker入门

1.1 网页静态化的好处1.减轻数据库压力2.访问速度提升3.有利于SEO(搜索引擎优化)1.2 什么是FreemarkerFreeMarker 是一个用 Java 语言编写的模板引擎,它基于模板来生成文本输出。FreeMarker与 Web 容器无关,即在 Web 运行时,它并不知道 Servlet 或 HTTP。它不仅可以用作表现…
暂无图片
编程学习 ·

Nacos注册中心,服务注册时加入自定义元数据,把各个服务的接口信息放入服务元数据里

最近在做分布式细粒度权限控制,业务需要使用各个服务的接口及权限信息进行权限的校验。 这里把各个接口的权限级别分为三种:公开权限:所有的客户端都能直接访问,不参与Token校验(不需要登录)、不参与权限校验 内部公开权限:需要登录参与Token校验,不需要进行授权校验,…
暂无图片
编程学习 ·

兔子数列递归算法实现的一些补充

兔子数列递归算法实现的一些补充 本文整理了一些兔子数列更多递归算法的实现,如【缓存递归】,【尾递归】等。但是性能都受栈空间大小的限制,并不是最佳的实现算法。兔子数列动态规划实现,请点此链接查看package algorithm;public class Fibonacci {public static int[] fib…