3.自然语言

1. 自然语言概述

1.1. 分词

    一般用于中文语言,中文需要对原始语料进行分词,分词过后对每个词执行词性标注(名词、动词、形容词等),近似于关键词过滤,只保留您想要的词性以及词。

1.2. 词根还原/词干提取

    英文不需要做分词,需要做词根还原:

  • PorterStemmer:直接还原成原型,但是有时候会还原成词根(人不易懂)。

  • WordNetLemmatizer:比较好用的另外一种还原工具,比较接近于还原成原型而不是词根。

    英文同样需要使用词性标注。

1.2. 应用

1.2.1. 文字云

    又称为“词云”:对网络出现频率比较高的关键词给予视觉上的突出显示,它是关键词的另一种可视化呈现方式。

1.2.2. 文件分类

    对文本集按一定的分类体系或标准进行自动分类标记过程。

1.2.3. 情感分析

    正负情绪分析

  • 情感分析输入

    • 评价文本

  • 情感分析输出

    • 观点持有者

    • 评价对象

    • 评价观点

    情感辞典是比较特殊的一个总的数据字典。

1.2.4. 文件聚类

    根据议题进行文件内容的聚类处理(聚类算法)。

1.2.5. 文章摘要

    句子和文章的结构化表示法:

  • Bag Of Words(BoW)

  • Word Embedding(语义模型)

    两种方法计算

  • 简单相似度计算

  • 使用图论

1.2. 自然语言平台

2. 分词和词性标注

    不分词的做法:N-Gram

  • Uni-Gram:南 京 市 长 江 大 桥

  • Bi-Gram:南京 京市 市长 长江 江大 大桥

  • Tri-Gram:南京市 京市长 市长江 长江大 江大桥

  • 4-Gram:南京市长 京市长江 市长江大 长江大桥

    优点:不需要进行中文分词,当N够大时,所有正确的分词均会出现于N-Gram;缺点:大多数撷取出来的词是没有语法及语意上的意义,噪声过多,无法与许多资源结合,大大影响后续分析。

2.1. 中文分词

中文自然语言处理中特有的一个问题。

    在中文中,词才是能够单独出现并且自由运用的最小单位。因此,句法和语意的研究与分析都必须以词尾基础去发展,一般而言,将输入句子的字符串顺序转换成词语顺序的过程就叫做分词。

    利用计算机识别出文本中词汇的过程

难点

  • 歧义

    • 交叉歧义(多种切分交值在一起)

    • 组合歧义(不同情况下切分不同)

    • 真歧义(几种切分都可行)

    • 新词层出不穷

      • 命名实体:自己定义的词加入到分词系统,自动分词正确率低。

      • 定量词:使用规则

      • 重叠词:使用规则

  • 普通词和新词互用

  • 普通词与新词交织在一起

2.2. 分类

  • 以构词规则出发的法则式分词

    • 全切分

    • FMM、BMM、BiMM

  • 利用语料库归纳统计数据统计式分词法

    • N-Gram概率模型

    • HMM概率模型

HMM不需要依赖词典

法则式

  • 优点

    • 程序简单易行,开发周期短

    • 没有任何复杂计算,分词速度快

  • 缺点

    • 歧义的处理太简单

    • 不能识别新词

    • 分词精度无法满足实际需要

统计式

    利用已经切好词的学习样本建立模型,再利用模型对预测结果进行间接推理。

马可夫假设:

  1. 当前状态出现的概率仅同过去有限的历史状态有关,而与其他状态无关。

  2. 具体到分词任务,就是文本中第i个词出现的概率仅仅依赖于它前面的i-1个词,而与其他词无关。

  • 优点

    • 能够处理大多数常用词带来的歧义问题(>= 95%

  • 缺点

    • 不能处理新词以及新词带来的歧义问题

    • 需要很大的训练语料

    • 分词速度相对较慢

2.2.1. 法则式:全切分

    全切分:获得文本所有可能的切分结果

2.2.2. 法则式:FMM/BMM

    把句子从左向右(从右向左)扫描一遍,遇到字典里有的最长词就标识出来,遇到不认识的字符串就分割成单字词。

2.2.3. 法则式:BiMM

    将FMM和BMM得到的分词结果进行比较:

  • 如果FMM和BMM词数不同,则取词数较少的结果

  • 如果FMM和BMM词数相同,且结果相同,返回任一一个结果

  • 如果FMM和BMM词数相同,且结果不同,返回单字较少的那个结果

2.2.4. 统计式:N-Gram概率模型

  1. 第一步:全切分

  2. 第二步:Viterbi动态规划,找到贯穿句子的路径并计算每条路径概率

  3. 第三步:选择概率最大的路径为切分结果

2阶马可夫、3阶马可夫、……,遇到歧义才会进行Viterbi动态规划运算,和词典中的词配合计算各自路径的概率。

2.2.5. 统计式:HMM概率模型

  • 每个字只能是4个构词位置中的其中一个

    • B:词首(Begin)

    • M:词中(Middle)

    • E:词尾(End)

    • S:单字词

  • 模型训练的结果也是HMM结果的格式

发射概率/移转概率,BBB,EM不合理,这种移转概率为0。

2.2.6. 效能评估

正确分词:伊拉克 已 连续 第四天 将 原油 倾入 波斯湾(8个词) 分词结果:伊拉克 已 连续 第四天 将 倾入 波斯 (10个词)

  • 查准率(Precision):10个对了6个,0.6

  • 查全率(Recall):8个对了6个,0.75

  • F1:0.67

2.3. 词性标注

    Part-of-Speech Tagging

    中文词汇:名词、动词、形容词、数词、量词、代词、介词、副词、连词、感叹词、助词、拟声词等

  • 难点:具有两个或两个以上词性的词,即兼类词

    • 基于规则的算法

    • 基于概率的算法

    • 规则和统计相结合的算法

    HMM概率模型同时处理:分词和词性标注

Jiaba(结巴)

  • 定义了40种词性

关键词提取

    根据保留的词直接从结果中提取,过滤某些不必要的词。

  • 保留某种词性的词

  • 保留出现次数>=某个阈值的词(所有文章中出现总次数)

3. 文本挖掘

  • 基本信息检索技术

    • 全文扫描、签名文件、逐项反转、控制字汇、关键词索引

  • 进阶信息检索技术

    • 向量空间模型

3.1. 应用

  • 结构与非结构化数据,某些词的出现和它后来结果的关联性。

  • 关键词萃取

  • 互动处理(5H1W,六何法)

4. 信息检索(IR)

    结构化数据分析:数据挖掘处理流程

  1. 数据库汇入指令

  2. 数据库选择、筛选指令:Data Warehouse

  3. 数据超市:Data Mart

  4. 数据挖掘:Data Mining

    文本挖掘处理流程:

  1. 爬虫程序:Internet & Social Network

  2. 信息检索IR

  3. 目标文本数据

  4. 自然语言处理:Natural Language Processing

  5. 非结构化数据预处理:Unstructure to Structure Data

  6. 挖掘

    细化:

  1. 文本分析单元的撷取和标注

    1. 分词

    2. 词性标注

  2. 文本特征选取和表示

    1. 关键词撷取

    2. 非结构转结构

      1. 词袋模型

      2. Word2Vec(词嵌入)

      3. Glove(词嵌入)

  3. 文本挖掘应用

    1. 文字云

    2. 文本分类

    3. 情绪分析

    4. 文本聚类

    5. 文本摘要

    所有做法:

  • 全文扫描

  • 逐项反转

  • 签名文件

  • 向量空间模型

  • 概率式检索模型(Probabilistic Retrieval Model)

  • 神经网络模型(Neural Network Model)

4.1. 全文扫描(Full-Text Scanning)

    又称为逐字比对法,将待查的字符串直接和文件字符串快速比对,文件不多且异动频繁时十分有用,它是不需要建索引的。

  • 优点:

    • 简化数据库中数据的增删和更新工作

    • 不需额外的空间来存储索引

  • 缺点:

    • 检索反应时间缓慢

关键词(Keyword)

  • 文件语意的抽取层次是以什么为单位

    • 字、词、词组、概率(Single Term or Phrase Term)或N-Gram

  • 人工:品质高,属于控制字汇(Controlled Vocabulary)

  • 自动:成本低,属于非控制字汇(Non-Controlled Vocabulary)

非控制字汇的数量为控制字汇的100倍以上,提供了更弹性化和多元化的检索方式。

非控制字汇

  • 自动构建关键词方法采用Inverse Document Frequency(IDF)的方式行

    • IDF=log2(Nn)IDF = \log_2(\frac{N}{n}),N是有多少篇文章,n是某个词出现在多少篇文章中

  • IDF表示信息量,它的大小可得知一个词的重要程度

    • IDF越大代表这个词越重要,也越是关键词

    • IDF越小代表这个词索引价值越低

    • IDF=log21=0IDF = \log_21 = 0表示完全没有检索价值:每一篇文章都出现,没什么关键价值,如果在一篇文章中多次出现才是关键词

被过滤掉的词称之为停用词(Stop Words),不再关注或者索性直接删除。

建立步骤

  1. 读取文献

  2. 分词(中文)

  3. 利用Suffix String将Word重整到最基本原型(Stem Word)(英文)

  4. 计算每个Word的IDF

  5. 利用一个阈值(Threshold),选出代表文献的关键词以及IDF,产生Stop Word

4.2. 逐项反转(Inversion of Terms)

    逐项反转法一般称为Inverted File,它是利用繁复的索引来提高检索效率,文件搜索时仅比对索引,不比对内容。

  • 词汇档(Term File)

    • 关键词:区分关键词和关键词索引

    • 同义词指标(Synonym Pointer)

    • 反转档指标(Inverted File Pointer)

只比对索引,不比对内容信息,反转指标记录了文字的位置。

    以“字”为单位称为逐字反转(Inversion of Characters),以“词”为反转单位称为逐词反转(Inversion of Words),这种做法需要很大的索引空间(比原文多出50% ~ 300%,但查询速度很快,也容易和同义词结合,有利于同义词的处理。

4.3. 签名文件(Signature File)

    签名文件是逐项反转全文扫描综合,签名利用重迭编码(Superimposed Coding)技巧,将文件转换成一固定长度的签名(Signature)加速字符串比对——文件中每一出现的词会有一定长的数字编码为其词签名(Word Signature),而文件签名(Document Signature)是所有词签名的重迭编码。

    两段式搜寻方法,比对流程:

  1. 将查询编码成查询签名(Query Signature)

  2. 第一阶段搜寻(Filter Out Most of the Undesired Documents),将查询签名和所有文件签名一一比对。

  3. 第二阶段搜索:Full Test Scanning全文检索

  4. 产生查询结果

    索引空间:全文扫描 < 签名文件 < 逐项反转法(大);速度:全文扫描法 < 签名文件 < 逐项反转法(快)。

4.4. 向量空间模型(Vector Space Model)

    它和词袋模型基本是同一个模型,它将每一个文件(Document)以及查询(Query)表示成N维空间坐标上的点,每一个维度代表一个关键词,在它维度上的值是根据关键词的TF * 关键词的IDF得到,通过点和点之间的距离(相似度)计算来找出和查询相近似的文件。

    计算相似度使用余弦距离(cosθ\cos \theta)来计算两个向量的相似度,直接做内积(又称点积),范围在0 ~ 1之间,接近1相似度越大,0是向量垂直,相似度越低。

「间」关键词提取

1. TF/DF/IDF提取

    权重:Weight = TF * IDF

  • Weight值越大代表词越重要,也是想要的关键词

  • Weight值越小代表词索引价值越低

    TF衡量一个词在文档中出现的频率,出现频率越高代表词越重要,IDF逆文件频率则表示此在文档中的分布状况,TF×IDFTF \times IDF越大,这个词称为一个关键词的概率就越大。用比例而不使用原始计数:

TF=词在文档中出现次数文档总词数TF = \frac{词在文档中出现次数}{文档总词数}

IDF=log10(文档总数包含该词的文档数)IDF = \log_{10}(\frac{文档总数}{包含该词的文档数})

    风险词的RCF(取代IDF的)

RCF=log2(winP+0.1PwinN+0.1N)RCF = \log_2(\frac{\frac{|w in P| + 0.1}{|P|}}{\frac{| w in N| + 0.1}{|N|}})

  • winP|w in P|:词汇w出现在异常公司P的数量

  • winN|w in N|:词汇w出现在正常公司N的数量

  • P|P|全部异常公司数量

  • N|N|全部正常公司的数量

2. 根据词性标注提取

3. 根据文章结构提取

    关键词特点

  • 在特定语料中频繁出现,其他语料中出现次数比较少

  • 针对总分总结构的文本(新闻),出现在文章首部和尾部位置的词语成为关键词的可能性远大于只出现在文章中部的词语

  • 在文本中反复出现且附近有其他关键词出现,该词为关键词的概率大。

4. 文字云

文本特征总结:

  1. 根据领域专家的知识挑选具有影响力的特征。

  2. 用数学的方法从原始特征中挑选出一些最具分类信息的特征,这种方法是一种比较精确的方法,人为因素干扰比较少,尤其适合于文本自动分类挖掘系统的应用。

  3. 如特征项太过稀疏,或多词一意等状况,可用映射或变换的方法把原始特征变换成较少的新特征。

5. 非结构化转结构化

5.1. 词袋:BoW

    非结构转结构-词的表示方法

  1. 离散表示法Discrete Representation:一个维度只表达一个Word的信息,一个Word信息由一个维度表达(One-Hot Encoding)

  2. 分散表示Distributed Representation:描述语言的向量是定长的(Fix Length),一个语义信息可能由多个维度共同决定,一个维度也可能决定着多方面的信息。

    所有的关键词都表示一个维度,词袋模型的核心:一个词代表一个维度(近似于向量空间模型)。

    特征:

  • One-Hot Encoding缺点是假设所有Word相互独立,导致向量维度太大(太稀疏)。

  • Glove & Word2Vec的词向量(Word Vector)比较稠密(Dense),大大缩短向量长度。

  • Distributed Representation的词向量的方法也叫做词嵌入(Word Embedding),将Word的语义信息嵌入Fix-Length的向量中。

5.2. 无监督词嵌入:Glove

  • PCA

  • 矩阵分解

    • SVD

    • Glove

5.2.1. PCA

    原始数据映射到低维度空间过后依旧保持原始的变异,降维过后会由一个稀疏矩阵变成一个稠密的,PCA是维度降低过后的通盘考虑,也可以将PCA看作是词嵌入模型。

5.2.2. SVD

    矩阵分解SVD降维(推荐系统)。

Mm×n=Vn×k×Dk×k×Vk×n1M_{m \times n} = V_{n \times k} \times D_{k \times k} \times V^{-1}_{k \times n}

  • D:特征值

  • V:特征向量

    这种矩阵分解必须是方阵,使用奇异值分解可解决这个问题。奇异值类似主成分,取TOP K个奇异值就可以表示绝大部分信息:

Datam×n=Um×k×Sk×k×Rk×nData_{m \times n} = U_{m \times k} \times S_{k \times k} \times R_{k \times n}

    SVD的缺点:如果矩阵不完整,出现undefined,那么SVD无法处理不完整矩阵,所以出现了处理不完整的矩阵分解(PU分解)。

M=P×UTM'=P \times U^T

原来有值地方计算回来接近,无值的地方乘回来过后有值了。

5.2.3. Glove

    Glove是史丹福大学发表的一种Word Embedding词嵌入方法。先要有一个词的贡献矩阵,列出所有的词的语料基本信息。(上下文维度 - 关键词维度)根据原始句子计算词贡献矩阵(词上下文协方差矩阵),关键词顺序就是词在文章中原始顺序。

    执行PCA提取五个特征(稀疏矩阵转换成稠密矩阵),然后计算距离,同义词部分会是同义词、相关词

  • 距离近可能是同义词、相关词

  • 如果距离很远有可能会变得怪怪的,就是不一样的

    所以这种模型是带有语义的模型,分类会变得更准确。

5.3. 有监督词嵌入:Word2Vec

    BP神经网络模型(它的背后原理),神经元包含两部分:1)组合函数;2)激活函数(sigmod函数)。

σ(z)=11+ez\sigma(z) = \frac{1}{1 + e^{-z}}

    XOR问题:神经网络领域很著名的问题(线性不可分的问题),隐藏层到输出层就可以单纯看成逻辑回归。输入层到隐藏层的目的:坐标转换以及降低维度。

    该模型有两个子模型:Skip-Gram,CBOW。

5.3.1. Skip-Gram

    训练数据集是两两一对,训练样本举例:

    神经网络有三层:输入、输出、输出,隐藏层通常300维,输入和输出都是One-Hot结果:

  • 隐藏层:只有组合函数,没有激活函数

  • 输出层:使用Softmax Classifier

    输入和输出都是用One-Hot Vector,输入是词本身,输出是上下文,输出的结果相加的概率是1.0,每一个yy值小于0,示例输出:

  • 输入到隐藏:10000×30010000 \times 300

  • 隐藏到输出:300×10000300 \times 10000

5.3.2. CBOW

    CBOW和Skip-Gram是互逆的:

    左右顺序相反,左边输入是Context Matrix,然后右边是Embedding Matrix,多个Context词取平均值,作为隐藏层的输出,上下文到当前词的计算

最后更新于