当我们看到一串数字时:
123 456 7890
1989-10-01
12:35
121212.23
12'23''
当我们看到一串数字时:
123 456 7890
1989-10-01
12:35
121212.23
12'23''
把一句话按照句法逻辑组织成一棵树,由人来做这件事是可行的,但是由机器来实现是不可思议的,然而算法世界就是这么神奇,把一个十分复杂的过程抽象成仅仅几步操作,甚至不足10行代码,就能让机器完成需要耗费人脑几十亿脑细胞的工作,本文我们来见识一下神奇的句法分析树生成算法
先来解释一下句法分析。
句法分析分为句法结构分析和依存关系分析。
句法结构分析也就是短语结构分析,比如提取出句子中的名词短语、动词短语等,最关键的是人可以通过经验来判断的短语结构,那么怎么由机器来判断呢?
样子如下:
我们在中文中经常会有各种缩写。
我觉得本缩写词库可以有几层:
(1)基本词库。缩写词固定
根据 key 获取 value,或者反过来。
(2)英文词库
拓展词库,可以获取对应的英文缩写。
(3)训练
根据缩写词+原始词的词性等进行训练,初期可以采用简单的方式。
后期学习更好的算法,可以进行替换。
中文系统词库
中文自定义词库
基本的映射关系处理
其实个人比较希望学会实现自动文本生成,目前的 level 还很低,所以这次做一个概览。
但是我不满足于只会使用,我希望可以懂得背后的数学原理,可以用任何一种语言去实现。
AI写诗?? AI创作小说?? 近年来人们时常听到这类新闻,听上去很不可思议,那么今天我们来一探究竟,这种功能是如何通过深度学习来实现的。
通常文本生成的基本策略是借助语言模型,这是一种基于概率的模型,可根据输入数据预测下一个最有可能出现的词,而文本作为一种序列数据 (sequence data),词与词之间存在上下文关系,所以使用循环神经网络 (RNN) 基本上是标配,这样的模型被称为神经语言模型 (neural language model)。
可以看作分类问题。一个词W有K个含义,对W消歧 就是确定W在特定句子中究竟使用了哪一个含义,即把W分到K类中的一个。
分类的依据则是和W邻近的词,即W的上下文C。
歧义可以分为两类:一类是词的语义有多种,如“bank”,可以是银行,也可以是河岸;另一类是词本身的词性也是多样的,如predicate,既能作为名字,也能作为动词。
对于前者,可能需要与W相隔较远的其他词参与消歧,而对于后者,往往通过邻近的词汇就能确定W的词性了。
s = argmax p(Sk|c)
, Sk 是W可能包含的语义,C是歧义词的上下文,而s是 使该概率最大的语义,即消歧后确定的语义。