Natural Language Processing 简明教程
Natural Language Processing - Introduction
语言是一种沟通方式,借助它我们能够说话、阅读和写作。例如,我们用自然语言(确切地说,用文字)思考、做决定、制定计划等等。然而,在 AI 时代,我们面临的一个重大问题是,我们是否能够以类似的方式与计算机进行沟通。换句话说,人类是否可以用自己的自然语言与计算机沟通?对于我们来说,开发 NLP 应用程序是一项挑战,因为计算机需要结构化数据,但人类语言本质上是无结构且常常歧义的。
从这个意义上讲,我们可以说自然语言处理 (NLP) 是计算机科学,特别是人工智能 (AI) 的子领域,其关注的是使计算机能够理解和处理人类语言。从技术上讲,NLP 的主要任务是对计算机进行编程,以便其分析和处理大量自然语言数据。
History of NLP
我们将 NLP 的历史划分为了四个阶段。各个阶段有不同的关注点和风格。
First Phase (Machine Translation Phase) - Late 1940s to late 1960s
该阶段所做的工作主要集中在机器翻译 (MT)。这个阶段是一个充满热情和乐观主义的时期。
现在让我们看看第一阶段有什么内容:
-
NLP 研究起始于 1950 年代初期,在 Booth & Richens 调查以及 Weaver 于 1949 年撰写的关于机器翻译的备忘录之后。
-
1954 年,在乔治城-IBM 实验中演示了从俄语到英语的自动翻译小实验。
-
同年,创办了期刊 MT(机器翻译)。
-
第一次国际机器翻译 (MT) 会议于 1952 年举行,第二次于 1956 年举行。
-
1961 年,在泰丁顿语言机器翻译和应用语言分析国际会议上展示的工作是这一阶段的高点。
Second Phase (AI Influenced Phase) – Late 1960s to late 1970s
在这个阶段,所做的工作主要与世界知识以及它在构造和操纵意义表征中的作用有关。这就是为什么这个阶段也被称为人工智能风味阶段。
该阶段包括以下内容:
-
1961 年初,开始解决寻址和构建数据或知识库的问题。这项工作受人工智能的影响。
-
同年,还开发了棒球问答系统。该系统的输入有限,涉及的语言处理很简单。
-
明斯基 (1968) 描述了一个更高级的系统。与棒球问答系统相比,这一系统得到了认可,并满足了在解释和响应语言输入时对知识库推理的需求。
Study of Human Languages
语言是人类生活的一个至关重要的组成部分,也是我们行为的最基本方面。我们主要可以以两种形式体验到它——书面和口语。在书面形式中,它是一种将我们的知识从一代传递到下一代的方式。在口语形式中,它是人类在日常行为中相互协调的主要媒介。语言在各个学术学科中都得到研究。每个学科都有自己的一套问题和解决这些问题的方案。
考虑下表来理解这一点:
Discipline |
Problems |
Tools |
Linguists |
如何用单词形成词组和句子?什么限制了句子的可能含义? |
关于正确性和含义的直觉。结构的数学模型。例如,模型理论语义学、形式语言理论。 |
Psycholinguists |
人类如何识别句子的结构?如何识别单词的含义?理解何时发生? |
主要用于衡量人类表现的实验技术。观察的统计分析。 |
Philosophers |
单词和句子如何获得含义?单词如何识别对象?什么是含义? |
使用直觉的自然语言论证。数学模型,如逻辑和模型理论。 |
Computational Linguists |
我们如何识別句子的结构?如何对知识和推理进行建模?我们如何使用语言来完成特定的任务? |
算法数据结构表示和推理的形式模型。诸如搜索和表示方法之类的 AI 技术。 |
Ambiguity and Uncertainty in Language
模糊性通常用于自然语言处理中,可以指能够以不止一种方式被理解的能力。简单来说,我们可以说模糊性是能够以不止一种方式被理解的能力。自然语言非常模棱两可。NLP 具有以下类型的模糊性−
Syntactic Ambiguity
当句子以不同方式进行解析时,就会出现这种类型的模糊性。例如,句子“这个人用望远镜看到了那个女孩”。模糊的是,这个人看到女孩拿着望远镜,还是他通过望远镜看到了她。
NLP - Linguistic Resources
在本章中,我们将了解自然语言处理中的语言资源。
Elements of Corpus Design
语言是无限的,但语料库必须是有限的。为了使语料库大小有限,我们需要对广泛的文本类型进行抽样和按比例包含,以确保良好的语料库设计。
现在让我们了解语料库设计的一些重要元素−
Corpus Representativeness
代表性是语料库设计的一个决定性特征。两位伟大研究人员——Leech 和 Biber 的以下定义将帮助我们理解语料库代表性−
-
According to Leech (1991), “语料库被认为代表了它应该代表的语言变体,如果基于其内容的调查结果可以推广到所述语言变体”。
-
According to Biber (1993), “代表性是指样本包含总体中完整变异范围的程度”。
通过这种方式,我们可以得出结论,语料库的代表性由以下两个因素决定:
-
Balance − 语料库中包含的体裁范围
-
Sampling − 如何选择每个体裁的段落。
Corpus Balance
语料库设计的另一个非常重要的元素是语料库平衡——语料库中包含的体裁范围。我们已经研究过,一般语料库的代表性取决于语料库平衡度如何。平衡的语料库涵盖广泛的文本类别,这些类别被认为是语言的代表。我们没有可靠的科学方法来衡量平衡度,但最好的估计和直觉在这方面起作用。换句话说,我们可以说,可接受的平衡度仅由其预期用途决定。
Sampling
语料库设计的另一个重要元素是抽样。语料库代表性和平衡性与抽样密切相关。这就是为什么我们可以说抽样在语料库构建中是不可避免的。
-
根据 Biber(1993) ,“在构建语料库时,首先要考虑的是总体设计:例如,包含的文本类型、文本数量、特定文本的选择、文本内部文本样本的选择以及文本样本的长度。这些每一个都涉及抽样决策,无论是有意识的还是无意识的。”
在获取代表性样本时,我们需要考虑以下内容:
-
Sampling unit − 它指的是需要样本的单位。例如,对于书面文本,抽样单位可能是报纸、期刊或书籍。
-
Sampling frame − 所有抽样单位的列表称为抽样框。
-
Population − 可以将其称为所有抽样单位的集合。它是根据语言生产、语言接受或作为产品的语言定义的。
Corpus Size
语料库设计的另一个重要元素是它的规模。语料库应该多大?这个问题没有具体答案。语料库的规模取决于其预期用途以及以下一些实际考虑因素:
-
用户预期的查询类型。
-
用户研究数据的 methodology。
-
数据源的可用性。
随着技术的进步,语料库的规模也在增加。以下比较表将帮助您了解语料库规模的工作原理:
Year |
Name of the Corpus |
Size (in words) |
1960s - 70s |
Brown and LOB |
1 Million words |
1980s |
The Birmingham corpora |
20 Million words |
1990s |
The British National corpus |
100 Million words |
Early 21st century |
英语语料库 |
650 Million words |
在我们后面的章节中,我们将看一些语料库的示例。
TreeBank Corpus
它可以定义为对句法或语义句子结构进行注释的语言解析文本语料库。Geoffrey Leech创造了术语“树库”,它表示表示语法分析的最常用方法是通过树形结构。通常,树库是在语料库的基础上创建的,该语料库已经用词性标签进行了注释。
PropBank Corpus
PropBank 更具体地称为“命题库”,它是一个语料库,其中附注了动词命题及其参数。该语料库是以动词为导向的资源;此处的注释更紧密地与句法级别相关。Martha Palmer 及科罗拉多大学博尔德分校语言学系共同开发了它。我们可以使用术语 PropBank 作为普通名词,指代任何已用命题及其参数进行注释的语料库。
在自然语言处理 (NLP) 中,PropBank 项目发挥了非常重要的作用。它有助于语义角色标记。
NLP - Word Level Analysis
在本章中,我们将理解自然语言处理中的世界级分析。
Regular Expressions
正则表达式 (RE) 是一种指定文本搜索字符串的语言。RE 帮助我们使用模式中保存的专门语法匹配或查找其他字符串或一组字符串。正则表达式用来在 UNIX 和 MS WORD 中以相同的方式搜索文本。我们有各种使用多个 RE 功能的搜索引擎。
Properties of Regular Expressions
以下是 RE 的一些重要属性:
-
美国的数学家史蒂芬·科尔·克莱尼将正则表达式语言形式化。
-
RE 是特殊语言中的公式,它可用于指定简单的字符串类,即一连串的符号。换句话说,我们可以说 RE 是用于表征一组字符串的代数符号。
-
正则表达式需要两样东西,一个是希望搜索的模式,另一个是从其中需要搜索的文本语料库。
在数学上,正则表达式可以定义如下:
-
ε 是正则表达式,它表示语言具有空字符串。
-
φ 是正则表达式,它表示是空语言。
-
如果 X 和 Y 是正则表达式,那么 X, Y X.Y(Concatenation of XY) X+Y (Union of X and Y) X , Y*(X 和 Y 的克莱尼闭包)*
也是正则表达式。
-
如果字符串是从以上规则中派生出来的,那么它也将是一个正则表达式。
Examples of Regular Expressions
下表列出了几个正则表达式的例子 −
Regular Expressions |
Regular Set |
(0 + 10*) |
{0, 1, 10, 100, 1000, 10000, … } |
(0*10*) |
{1, 01, 10, 010, 0010, …} |
(0 + ε)(1 + ε) |
{ε, 0, 1, 01} |
(a+b)* |
它是一组任意长度的 a 和 b 的字符串,还包括空字符串,即 {ε, a, b, aa , ab , bb , ba, aaa…….} |
(a+b)*abb |
它是一组以字符串 abb 结尾的 a 和 b 的字符串,即 {abb, aabb, babb, aaabb, ababb, …………..} |
(11)* |
它是一组包含偶数个 1 的字符串,还包括空字符串,即 {ε, 11, 1111, 111111, ……….} |
(aa)*(bb)*b |
它是一组字符串,由偶数个 a 后跟奇数个 b 组成,即 {b, aab, aabbb, aabbbbb, aaaab, aaaabbb, …………..} |
(aa + ab + ba + bb)* |
它是由 a 和 b 组成的偶数长度的字符串,可以通过连接字符串 aa、ab、ba 和 bb(包括 null)的任意组合获得,即 {aa, ab, ba, bb, aaab, aaba, …………..} |
Finite State Automata
自动机一词源自希腊语单词“αὐτόματα”,意为“自动”,它是“自动机”的复数形式,可以将其定义为一种抽象的自推进计算设备,它自动执行预定的操作序列。
具有有限状态数的自动机称为有限自动机 (FA) 或有限状态自动机 (FSA)。
在数学上,自动机可以用 5 元组 (Q, Σ, δ, q0, F) 表示,其中 −
-
Q 是有限的状态集。
-
Σ 是有限的符号集,称作自动机的字母表。
-
δ 是过渡函数
-
q0 是任何输入将从其中进行处理的初始状态(q0 ∈ Q)。
-
F 是 Q 的终态/状态集(F ⊆ Q)。
Relation between Finite Automata, Regular Grammars and Regular Expressions
以下几点将使我们清楚地了解有限自动机、正规语法和正规表达式之间的关系:
-
正如我们所知,有限状态自动机是计算工作的理论基础,而正规表达式是描述它们的一种方式。
-
我们可以说任何正规表达式都可以作为 FSA 来实现,而任何 FSA 都可以用正规表达式来描述。
-
另一方面,正规表达式是描述一种称为正规语言的语言的一种方式。因此,我们可以说正规语言可以在 FSA 和正规表达式的帮助下描述。
-
正规语法是一种可以是右正规或左正规的形式语法,是描述正规语言的另一种方式。
下图显示了有限自动机、正规表达式和正规语法是描述正规语言的等效方式。
Types of Finite State Automation (FSA)
有限状态自动化有两種類型。让我们来看看這些類型是什么。
Deterministic Finite automation (DFA)
可以将其定义为有限自动化类型,其中,对于每个输入符号,我们可以确定机器将移动到的状态。它具有有限数量的状态,这就是机器被称为确定性有限自动机 (DFA) 的原因。
在数学上,DFA 可以表示为 5 元组 (Q, Σ, δ, q0, F),其中:
-
Q 是有限的状态集。
-
Σ 是有限的符号集,称作自动机的字母表。
-
δ 是转换函数,其中 δ:Q × Σ → Q。
-
q0 是任何输入将从其中进行处理的初始状态(q0 ∈ Q)。
-
F 是 Q 的终态/状态集(F ⊆ Q)。
在图形上,DFA 可以通过称为状态图的有向图表示,其中:
-
状态由 @{ s0} 表示。
-
转换由标记的 @{ s1} 表示。
-
初始状态由 @{ s2} 表示。
-
最终状态由 double circle 表示。
Example of DFA
假设 DFA 为
-
Q = {a, b, c},
-
Σ = {0, 1},
-
q0 = {a},
-
F = {c},
-
转换函数 δ 在表中按如下方式显示 −
Current State |
输入 0 时的下一状态 |
输入 1 时的下一状态 |
A |
a |
B |
B |
b |
A |
C |
c |
C |
该 DFA 的图形表示如下 −
Non-deterministic Finite Automation (NDFA)
它可以定义为对于每个输入符号,我们不能确定机器将移动到的状态的有限自动化类型,即机器可以移动到任何状态的组合。它具有有限数量的状态,这就是机器被称为非确定性有限自动机 (NDFA) 的原因。
从数学上讲,NDFA 可以用 5 元组 (Q, Σ, δ, q0, F) 来表示,其中 −
-
Q 是有限的状态集。
-
Σ 是有限的符号集,称作自动机的字母表。
-
δ :-是转换函数,其中 δ: Q × Σ → 2 Q。
-
q0 :-是从那里处理任何输入的初始状态 (q0 ∈ Q)。
-
F :-是 Q 的一组最终状态 (F ⊆ Q)。
相反,在图形上(与 DFA 相同),NDFA 可以用称为状态图的有向图来表示,其中 −
-
状态由 @{ s0} 表示。
-
转换由标记的 @{ s1} 表示。
-
初始状态由 @{ s2} 表示。
-
最终状态由双 circle 表示。
Morphological Parsing
形态解析这个术语与词素的解析有关。我们可以将形态解析定义为识别某个单词分解为较小的有意义单位(称为词素)的问题,从而为它产生某种语言结构。例如,我们可以把单词 foxes 分解为两个词,fox 和 -es。我们可以看到,单词 foxes 由两个词素组成,一个是 fox,另一个是 -es。
从另一个意义上,我们可以说形态学是 −
-
The formation of words.
-
单词的起源。
-
单词的语法形式。
-
词缀和后缀在单词形成中的使用。
-
如何形成语言的词性 (PoS)。
Natural Language Processing - Syntactic Analysis
句法分析或解析或语法分析是 NLP 的第三个阶段。此阶段的目的是提取确切的含义,或者可以说从文本中提取字典含义。语法分析根据正式语法规则检查文本的意义。例如,语义分析器会拒绝“热冰淇淋”之类的句子。
从这个意义上讲,句法分析或解析可以被定义为分析自然语言中的符号串符合形式语法规则的过程。词 ‘parsing’ 来源于拉丁语 ‘pars’ ,意为 ‘part’ 。
Concept of Parser
它用于实现解析任务。它可以定义为专门用于获取输入数据(文本)并根据形式语法检查正确语法后给出输入的结构表示的软件组件。它还构建了一个通常采用解析树、抽象语法树或其他层次结构形式的数据结构。
解析的主要作用包括:
-
报告任何语法错误。
-
从常发错误中恢复后,可以继续处理程序的余下部分。
-
To create parse tree.
-
To create symbol table.
-
产生中间表示 (IR)。
Concept of Parse Tree
可以将它定义为导出的图形描述。导出的开始符号用作解析树的根。在每个解析树中,叶节点是终结符,内部节点是非终结符。解析树的属性是:中序遍历将产生原始输入字符串。
Concept of Grammar
语法对于描述构造良好的程序的句法结构至关重要。从文学意义上来说,它们表示自然语言对话的语法规则。语言学自英语、印地语等自然语言诞生以来,就尝试定义语法。
形式语言理论也适用于计算机科学领域,主要在编程语言和数据结构中。例如,在“C”语言中,精确的语法规则说明了如何通过列表和语句来创建函数。
Noam Chomsky 在 1956 年给出了语法的数学模型,该模型可有效书写计算机语言。
在数学上,语法 G 可以正式写为一个 4 元组 (N, T, S, P),其中 −
-
N 或 VN = 非终结符符号集合,即变量。
-
T 或 ∑ = 终结符符号集合。
-
S = 开始符号,其中 S ∈ N
-
P 表示终结符和非终结符的产生式。它具有形式 α → β,其中 α 和 β 是 VN ∪ ∑ 上的字符串,并且 α 的至少一个符号属于 VN
Natural Language Processing - Semantic Analysis
语义分析的目的是从文本中提取确切的含义,或者你可以说词典含义。语义分析器的作用是检查文本的含义。
我们已经知道词法分析也处理单词的含义,那么词法分析和语义分析有什么不同呢?词法分析基于较小的标记,但另一方面,语义分析则关注较大的块。这就是为什么语义分析可以分为以下两部分:
Studying the combination of individual words
在第二部分中,单个单词将被组合起来为句子提供含义。
语义分析最重要的任务是获得句子的恰当含义。例如,分析句子“在这句话中,说话者正谈论罗摩勋爵或一个叫罗摩的人。”这就是为什么语义分析器获得句子恰当含义的工作非常重要。
Difference between Polysemy and Homonymy
多义词和同音异义词都具有相同的语法或拼写。它们之间的主要区别在于,在多义词中,单词的含义是相关的,而在同音异义词中,单词的含义是不相关的。例如,如果我们谈论同一个单词“Bank”,我们可以写出“金融机构”或“河岸”的含义。在这种情况下,这将是同音异义词的例子,因为这些含义彼此无关。
Meaning Representation
语义分析创建句子的含义表示。但在进入与含义表示相关的概念和方法之前,我们需要了解语义系统的构建模块。
Building Blocks of Semantic System
在词语表示或词语含义的表示中,以下构建模块发挥着重要作用:
-
Entities - 它表示个体,例如特定的人、地点等,例如,哈里亚纳邦。印度,罗摩都是实体。
-
Concepts - 它表示个体的通用类别,例如人、城市等。
-
Relations - 它表示实体和概念之间的关系。例如,罗摩是一个人。
-
Predicates - 它表示谓语结构。例如,语义角色和格语法是谓词的示例。
现在,我们可以理解语义表征展示了如何将语义系统的构建模块放在一起。换句话说,它展示了如何将实体、概念、关系和谓词组合在一起,以描述一种情况。它还能够推理语义世界。
Approaches to Meaning Representations
语义分析使用以下方法来表征意义——
-
一阶谓词逻辑 (FOPL)
-
Semantic Nets
-
Frames
-
Conceptual dependency (CD)
-
Rule-based architecture
-
Case Grammar
-
Conceptual Graphs
NLP - Word Sense Disambiguation
我们知道,根据其在句子中的使用上下文,单词具有不同的含义。如果我们谈论人类语言,那么它们也是模棱两可的,因为许多单词可以根据其出现的上下文中以多种方式解释。
在自然语言处理 (NLP) 中,词义消歧可能被定义为确定单词的哪种含义因在特定上下文中使用该单词而被激活的能力。词法歧义、句法或语义歧义是任何 NLP 系统面临的第一个问题之一。具有高准确率的词性 (POS) 标记器可以解决单词的句法歧义。另一方面,解决语义歧义的问题称为 WSD(词义消歧)。解决语义歧义比解决句法歧义更难。
例如,考虑单词 “bass” 的不同含义的两个示例 −
-
我可以听到低音
-
他喜欢吃烤鲈鱼。
bass 词的出现清楚地表明了不同的含义。在第一句话中,这意味着 frequency ,在第二句话中,这意味着 fish 。因此,如果通过WSD消除歧义,则可以将正确含义分配给以上句子,如下所示:
-
我可以听到低音/频率声音。
-
他喜欢吃烤鲈鱼/鱼。
Approaches and Methods to Word Sense Disambiguation (WSD)
WSD的方法和分类根据单词消除歧义中使用的知识来源。
现在让我们看看WSD的四种常规方法:
Dictionary-based or Knowledge-based Methods
顾名思义,对于消除歧义,这些方法主要依赖于字典、treasure和词汇知识库。它们不使用语料库证据来消除歧义。Lesk方法是Michael Lesk在1986年引入的开创性字典方法。Lesk定义,Lesk算法基于它的是 “measure overlap between sense definitions for all words in context” 。然而,在2000年,Kilgarriff和Rosensweig给出了简化的Lesk定义,即 “measure overlap between sense definitions of word and current context” ,这进一步意味着一次识别一个单词的正确含义。这里的当前上下文是句子或段落周围单词的集合。
Supervised Methods
对于消除歧义,机器学习方法利用经过含义注释的语料库来训练。这些方法假设上下文自身可以提供足够的证据来消除含义的歧义。在这些方法中,单词知识和推理被认为是不必要的。上下文被表示为单词的一组“特征”。它还包括有关周围单词的信息。支持向量机和基于内存的学习是WSD最成功的监督学习方法。这些方法依赖于大量的经过手动含义标记的语料库,创建这些语料库非常昂贵。
Applications of Word Sense Disambiguation (WSD)
单词含义消除歧义(WSD)几乎应用于语言技术的所有应用中。
现在让我们看看WSD的范围:
Machine Translation
机器翻译或MT是WSD最明显的应用。在MT中,WSD用于对具有不同含义的不同翻译的单词进行词汇选择。MT中的含义表示为目标语言中的单词。大多数机器翻译系统不使用显式WSD模块。
Information Retrieval (IR)
信息检索(IR)可以定义为一个软件程序,用于处理来自文档存储库中的信息(特别是文本信息)的组织、存储、检索和评估。该系统基本上协助用户查找所需的信息,但不会明确返回问题的答案。WSD用于解决提供给IR系统的查询的歧义。与MT一样,当前的IR系统并不明确地使用WSD模块,他们依赖于这样一个概念:用户将在查询中输入足够多的上下文,以便仅检索相关文档。
Natural Language Discourse Processing
人工智能最困难的问题是用计算机处理自然语言,或者换句话说,自然语言处理是人工智能中最困难的问题。如果我们讨论 NLP 中的主要问题,那么 NLP 中的一个主要问题就是话语处理 − 建立关于话语如何粘在一起形成 coherent discourse 的理论和模型。事实上,语言总是包含搭配、结构化和连贯的句子组,而不是像电影那样的孤立且不相关的句子。这些连贯的句子组称为话语。
Concept of Coherence
连贯性和话语结构在许多方面是相互关联的。连贯性与好文本的属性一起,用于评估自然语言生成系统的输出质量。这里出现的问题是文本连贯意味着什么?假设我们从报纸的每一页收集一句话,那它会是话语吗?当然不是。这是因为这些句子没有表现出连贯性。连贯的话语必须具备以下特性 −
Discourse structure
关于话语的一个重要问题是话语必须具有什么样的结构。这个问题的答案取决于我们应用于话语的分割。话语分割可以定义为确定大型话语的结构类型。实施话语分割非常困难,但对以下 information retrieval, text summarization and information extraction 类型的应用程序非常重要。
Algorithms for Discourse Segmentation
在本节中,我们将学习话语分割的算法。算法如下所述 −
Text Coherence
词汇重复是找出话语结构的一种方法,但它不满足连贯话语的要求。为了实现连贯话语,我们必须特别关注连贯关系。正如我们所知,连贯关系定义了话语中言语之间的可能联系。赫布提出了以下此种关系 −
我们采用两个术语 S0 和 S1 来表示两个 (2) 个相关句子的含义 −
Building Hierarchical Discourse Structure
还可以通过连贯关系之间的层次结构考虑整个话语的连贯性。例如,以下段落可以表示为层次结构 −
-
S1 − 拉姆去银行存钱。
-
S2 − 然后他乘火车去了夏姆的布店。
-
S3 − 他想买些衣服。
-
S4 − 他没有新衣服参加派对。
-
S5 − 他还想和夏姆谈谈他的健康状况。
Reference Resolution
对任何话语中的句子进行解释是另一项重要任务,为了实现此项任务,我们需要知道讨论的是谁或什么实体。此处,解释参考是关键要素。 Reference 可以定义为表示实体或个体的语言表达。例如,在段落中,ABC 银行经理拉姆在一家商店见到了他的朋友夏姆。他去见他,拉姆、他的、他等语言表达是参考。
同样, reference resolution 可以定义为确定哪些语言表达指代哪些实体的任务。
Terminology Used in Reference Resolution
我们在引用消解中使用以下术语 −
-
Referring expression − 用于执行引用的自然语言表达称为引用表达。例如,上面使用的段落是引用表达。
-
Referent − 它是被指的实体。例如,在上一个给出的示例中,Ram 是一个指称对象。
-
Corefer − 当两个表达式用来指称同一个实体时,它们被称为共指。例如, Ram 和 he 是共指。
-
Antecedent − 该术语具有使用另一个术语的许可。例如, Ram 是引用 he 的先行词。
-
Anaphora & Anaphoric − 可能将其定义为对句中先前引入过的实体的引用。并且,引用表达式被称为指代性。
-
Discourse model − 包含了话语中被引用的实体的表示以及它们之间的关系的模型。
Part of Speech (PoS) Tagging
标记是一种分类,可定义为对标记自动分配描述。这里的描述符称为标记,可以表示一部分语音、语义信息等。
现在,如果我们谈论词性标记 (PoS),那么可以将其定义为将各个词性分配给给定单词的过程。通常称为词性标记。简而言之,我们可以说词性标记是一项用适当的词性标记句子中每个单词的任务。我们已经知道词性包括名词、动词、副词、形容词、代词、连词及其子类别。
大多数词性标记属于规则词性标记、随机词性标记和基于转换的标记。
Rule-based POS Tagging
最古老的标记技术之一是基于规则的词性标记。基于规则的标记程序使用词典或词库来获取每个单词的可能标记。如果某个单词有多个可能的标记,则基于规则的标记程序使用手写规则来识别正确的标记。还可以通过分析单词的语言特征以及其前导词和后跟词来对基于规则的标记进行歧义消除。例如,假设单词的前导词是冠词,那么该单词必须是名词。
顾名思义,基于规则的词性标记中的所有此类信息都以规则的形式编码。这些规则可以是——
-
Context-pattern rules
-
或者,作为编译成有限状态自动机的正则表达式,与词义模糊的句子表征相交。
我们还可以通过基于规则的词性标记的两级架构来理解它——
-
First stage −在第一阶段,它使用字典为每个单词分配一个潜在词性的列表。
-
Second stage −在第二阶段,它使用大量手工编写的消除歧义规则,对列表进行分类,为每个单词分配一个词性。
Properties of Rule-Based POS Tagging
基于规则的词性标注器具有以下属性−
-
这些标注器是知识驱动的标注器。
-
基于规则的词性标注中的规则是手动建立的。
-
信息以规则的形式编码。
-
我们有有限数量的规则,大约 1000 条。
-
平滑和语言建模在基于规则的标注器中被明确定义。
Stochastic POS Tagging
另一种标注技术是随机词性标注。现在,这里出现的问题是哪些模型可以是随机的。包含频率或概率(统计)的模型可以称为随机模型。任何数量的不同词性标注方法都可以称为随机标注器。
最简单的随机标注器对词性标注应用以下方法−
Properties of Stochastic POST Tagging
随机词性标注器具有以下属性−
-
此词性标注基于标注发生的概率。
-
It requires training corpus
-
语料库中不存在的单词没有概率。
-
它使用不同的测试语料库(而不是训练语料库)。
-
这是最简单的词性标注,因为它选择了与训练语料库中的单词关联的最频繁的标注。
Transformation-based Tagging
基于转换的标注也称为 Brill 标注。它是基于转换的学习 (TBL) 的一个实例,TBL 是一个用于文本的自动词性标注的基于规则的算法。TBL 允许我们以可读的形式获取语言知识,通过使用转换规则将一个状态转换为另一个状态。
它从前面解释的标注器(基于规则和随机)中汲取灵感。如果我们看到基于规则和转换标注器之间的相似性,那么像基于规则一样,它也基于规则来指定需要将哪些标注分配给哪些单词。另一方面,如果我们看到随机和转换标注器之间的相似性,那么它就像随机一样,它是一种机器学习技术,其中规则是从数据中自动推导出来的。
Working of Transformation Based Learning(TBL)
为了理解转换式标记器的作用和概念,我们需要理解基于转换式学习的作用。考虑以下理解 TBL 工作原理的步骤 −
-
Start with the solution − 通常 TBL 以解决问题的某种方式开始,并按循环进行。
-
Most beneficial transformation chosen − 在每个循环中,TBL 将选择最有利的转换。
-
Apply to the problem − 上一步中选择转换将应用于问题。
当步骤 2 中选择的转换不再增添价值或不再有转换可选时,算法将停止。这种类型的学习最适合分类任务。
Advantages of Transformation-based Learning (TBL)
TBL 的优点如下 −
-
我们学习简单的规则小集,并且这些规则足以进行标记。
-
TBL 中的开发和调试很容易,因为学习的规则易于理解。
-
TBL 中将机器学习规则和人工生成规则交织在一起,因此减少了标记的复杂性。
-
基于转换式的标记器比马尔可夫模型标记器快得多。
Disadvantages of Transformation-based Learning (TBL)
TBL 的缺点如下 −
-
基于转换式的学习 (TBL) 不提供标记概率。
-
TBL 中的培训时间很长,尤其是在大型语料库中。
Hidden Markov Model
HMM 模型可以定义为双嵌入随机模型,其中基础随机过程是隐藏的。只有通过生成观察序列的另一组随机过程才能观察到这个隐藏的随机过程。
Example
例如,进行了一系列隐藏掷硬币的实验,我们只看到由正面和反面组成的观察序列。过程的实际细节(使用了多少枚硬币,选择这些硬币的顺序)对我们来说是隐藏的。通过观察这组正面和反面的序列,我们可以建立多个 HMM 来解释这个序列。以下是针对此问题的一种形式的隐马尔可夫模型 −
我们假设 HMM 中有两个状态,每个状态对应于选择不同的偏置硬币。下矩阵给出了状态转换概率 −
A = \begin{bmatrix}a11 & a12 \\a21 & a22 \end{bmatrix}
在此,
-
aij = 从 i 到 j 从一个状态转移到另一个状态的概率。
-
a11 + a12 = 1,a21 + a22 = 1
-
P1 = 第一枚硬币出现正面的概率,即第一枚硬币的偏差。
-
P2 = 第二枚硬币出现正面的概率,即第二枚硬币的偏差。
我们还可以创建一个隐马尔可夫模型,假设有 3 枚或更多硬币。
这样,我们就可以通过以下元素表征隐马尔可夫模型:
-
N,模型中状态的数量(在上面的示例中,N = 2,只有两种状态)。
-
M,可以在上面示例中每个状态中出现的不同观测值的数目(M = 2,即 H 或 T)。
-
A,状态转换概率分布——上面的示例中的矩阵 A。
-
P,每个状态中可观测符号的概率分布(在我们的示例中,为 P1 和 P2)。
-
I,初始状态分布。
Use of HMM for POS Tagging
词性标注过程是找到最可能生成给定单词序列的标签序列的过程。我们可以通过使用隐马尔可夫模型 (HMM) 建模此词性标注过程,其中 tags 是生成 observable output, (即 words )的 hidden states 。
在数学上,在词性标注中,我们始终有兴趣找到一个标签序列 ©,以最大化:
P (C|W)
其中,
C = C1、C2、C3… CT
W = W1、W2、W3、WT
另一方面,事实是,我们需要大量的统计数据才能合理估计此类序列。然而,为了简化问题,我们可以应用一些数学变换以及一些假设。
使用隐马尔可夫模型进行词性标注是贝叶斯推理的一个特例。因此,我们将首先使用贝叶斯规则重新表述该问题,贝叶斯规则指出上述条件概率等于:
(PROB (C1,…, CT) * PROB (W1,…, WT | C1,…, CT)) / PROB (W1,…, WT)
我们可以在所有这些情况下消除分母,因为我们有兴趣找到最大化上述值的序列 C。这不会影响我们的答案。现在,我们的问题简化为找到最大化以下内容的序列 C:
PROB (C1,…, CT) * PROB (W1,…, WT | C1,…, CT) (1)
即使减少上述表达式中的问题,仍需要大量数据。我们可以对上述表达式中的两个概率做出合理的独立性假设来克服该问题。
First Assumption
标签的概率取决于前一个(双语模型)或前两个(三语模型)或前 n 个标签(n 元模型),从数学角度可以解释如下 −
PROB (C1,…, CT) = Πi=1..T PROB (Ci|Ci-n+1…Ci-1) (n-gram model)
PROB (C1,…, CT) = Πi=1..T PROB (Ci|Ci-1) (bigram model)
句子的开端可以通过假定每个标签的初始概率来解释。
PROB (C1|C0) = PROB initial (C1)
Second Assumption
上式(1)中的第二个概率可以通过假设单词出现在独立于前一类或后一类中的单词的类别中来近似,从数学角度可以解释如下 −
PROB (W1,…, WT | C1,…, CT) = Πi=1..T PROB (Wi|Ci)
现在,基于以上两个假设,我们的目标简化为寻找一个使函数最大化的序列 C
Πi=1…T PROB(Ci|Ci-1) * PROB(Wi|Ci)
现在出现的问题是,将问题转换成上述形式是否真的对我们有帮助。答案是肯定的。如果我们有一个带标签的大语料库,则上述公式中的两个概率可以计算为 −
PROB (Ci=VERB|Ci-1=NOUN) = (# of instances where Verb follows Noun) / (# of instances where Noun appears) (2)
PROB (Wi|Ci) = (# of instances where Wi appears in Ci) /(# of instances where Ci appears) (3)
Natural Language Processing - Inception
在本章中,我们将讨论自然语言处理中的自然语言始源。首先,让我们了解什么是自然语言语法。
Natural Language Grammar
对语言学来说,语言就是一组任意的声乐标志。我们可以说语言是有创造性的、受规则制约的、与生俱来的,同时又是普遍的。另一方面,它也是人性的。语言的性质因人而异。对语言的性质有很多误解。这就是理解模棱两可的术语 ‘grammar’ 的含义非常重要的原因。在语言学中,语法术语可以定义为语言运行所依据的规则或原理。广义上来说,我们可以将语法分为两类−
Components of Language
研究语言时将其划分为相互关联的成分,这些成分是语言调查中约定俗成的、任意的划分。对这些成分的解释如下−
Phonology
语言的第一个成分是音系学。它是对某一特定语言的语音进行的研究。这个词的起源可以追溯到希腊语,其中“phone”意为声音或语音。语音学是音系学的一个分支,它从语音的产生、感知或物理属性的角度研究人类语言的语音。国际音标 (IPA) 是一种在语音学研究中以规则的方式表示人声的工具。在国际音标中,每个书面符号只表示一个语音,反之亦然。
Morphology
这是语言的第二个部分。它是对某一特定语言中单词的结构和分类的研究。这个词的起源来自希腊语,其中“morphe”一词意为“形式”。形态学考虑语言中词语形成的原理。换句话说,声音如何组合成有意义的单位,如前缀、后缀和词根。它还考虑了如何将单词归类为词性。
Lexeme
在语言学中,与某个单词所采用的形式集合相对应的形态分析抽象单位被称为词素。词素在句子中的用法由其语法范畴决定。词素可以是单个单词,也可以是多单词。例如,单词 talk 是单个词素的例子,它可能具有很多语法变体,如 talks、talked 和 talking。多词素可以由多个正字法词语组成。例如,speak up、pull through 等都是多词素的例子。
Grammatical Categories
语法范畴可以定义为语言语法内单元或特征的一类。这些单元是语言的组成部分,并具有共同的特征集合。语法范畴也称为语法特征。
语法范畴的清单如下所述−
Person
另一个简单的语法范畴是人称。在此之下,识别出以下三个术语−
-
1st person − 说出话的人称为第一人称。
-
2nd person − 说话人或被说话的人称为第二人称。
-
3rd person − 我们正在议论的人或事物称为第三人称。
Case
它是语法中最难的范畴之一。它可以被定义为名词短语 (NP) 功能的指示,或名词短语与句子中的动词或其他名词短语之间的关系。我们有以下三个在人称和疑问代词中表达的格:
-
Nominative case − 它是主语功能。例如,“我、我们、你、他、她、它、他们”和“谁”是主格。
-
Genitive case − 它是所有格功能。例如,“我的/我的、我们的/我们的、他的、她的/她的、它的、他们的/他们的、谁的”是所有格。
-
Objective case − 它是宾语功能。例如,“我、我们、你、他、她、他们、谁”是宾格。
Degree
这个语法范畴与形容词和副词有关。它有以下三个术语:
-
Positive degree − 它表示一种品质。例如,“大、快、美”是比较级。
-
Comparative degree − 它表示两个项目中其中一个项目的更大程度或程度。例如,“更大、更快、更美”是比较级。
-
Superlative degree − 它表示三个或更多个项目中其中一个项目的最高程度或程度。例如,“最大、最快、最美”是最高级。
Definiteness and Indefiniteness
这两个概念都非常简单。正如我们所知,确定性表示一个指称者,该指称者是说话者或听众所知道、熟悉或可识别的。相反,不确定性表示一个不为人所知或不熟悉的指称者。这个概念可以在冠词与名词的共现中理解:
-
definite article − the
-
indefinite article − a/an
Tense
这个语法范畴与动词有关,可以定义为动作时间语言指示。现在时建立了一种关系,因为它表示事件发生的时间与说话时刻的关系。从广义上讲,它有以下三种类型:
-
Present tense − 表示动作发生在现在。例如,“Ram 努力工作”。
-
Past tense − 表示动作发生在现在之前。例如,“下雨了”。
-
Future tense − 表示动作发生在现在之后。例如,“它将下雨”。
Aspect
这个语法范畴可以定义为对事件的看法。它可以有以下类型:
-
Perfective aspect − 该视图被视为一个完整且完整的方面。例如,英语中的简单过去时 yesterday I met my friend, 在语态上是完成时的,因为它将事件视为完整且完整的。
-
Imperfective aspect − 该视图被视为正在进行且不完整的方面。例如,英语中表示现在进行时的 present participle 时态 I am working on this problem, 在语态上是不完成时态的,因为它将事件视为不完整和正在进行的。
Mood
这个语法范畴有点难以定义,但它可以简单地表示为说话者对他/她谈论内容的态度的迹象。它也是动词的语法特征。它不同于语法时态和语法语态。语态的例子是陈述语态、疑问语态、祈使语态、禁止语态、虚拟语态、可能语态、祈愿语态、现在分词和过去分词。
Agreement
它也被称为一致。当一个词从依赖于它所关联的其他词中发生改变时,就会发生这种情况。换句话说,它涉及使不同单词或词性之间的某些语法范畴的值达成一致。以下是基于其他语法范畴的一致性:
-
Agreement based on Person − 它是主语和动词之间的协调。例如,我们总是使用“I am”和“He is”,但从不使用“He am”和“I is”。
-
Agreement based on Number − 这是主语和谓语之间的一致性。在这种情况下,第一人称单数、第二人称复数等都有特定的谓语形式。例如,第一人称单数:I really am,第二人称复数:We really are,第三人称单数:The boy sings,第三人称复数:The boys sing。
-
Agreement based on Gender − 在英语中,代词和它的先行词在性别上是一致的。例如,He reached his destination. The ship reached her destination.
-
Agreement based on Case − 这种一致性不是英语的一个重要特征。例如,who came first − he or his sister?
Spoken Language Syntax
书面英语和口语语法有很多共同特征,但除此之外,它们在许多方面也有所不同。以下特征区分了口语和书面英语语法:
Disfluencies and Repair
这个引人注目的特征使得口语和书面英语语法彼此不同。它分别称为不流畅现象,统称为修复现象。不流畅包括以下用法:
-
Fillers words −有时在句子中间,我们使用一些填充词。它们被称为填充停顿词。例如有“uh”和“um”。
-
Reparandum and repair −句子中重复的词段称为待修复词。在相同的语段中,已更改的单词称为修复。考虑以下示例以理解这一个点:
Does ABC airlines offer any one-way flights uh one-way fares for 5000 rupees?
在上述句子中,单程航班是待修复词,单程航班是修复词。
NLP - Information Retrieval
信息检索 (IR) 可以定义为一个软件程序,该程序处理信息库(尤其是文本信息)中的组织、存储、检索和评估。该系统协助用户查找所需信息,但它不会明确返回问题的答案。它会通知包含所需信息的文档的存在和位置。满足用户需求的文档称为相关文档。一个完美的信息检索系统只会检索相关文档。
借助以下图表,我们可以了解信息检索 (IR) 的过程:
从上图可以明显看出,需要信息的用户必须以自然语言查询的形式制定请求。然后,IR 系统会通过以文档的形式检索所需信息的相关输出作出响应。
Classical Problem in Information Retrieval (IR) System
信息检索研究的主要目标是开发一个用于从文档库中检索信息的模型。这里,我们将讨论一个经典的问题 ad-hoc retrieval problem ,该问题与 IR 系统相关。
在即席检索中,用户必须以描述所需信息的自然语言输入查询。然后,IR 系统将返回与所需信息相关的所需文档。例如,假设我们在互联网上搜寻某样东西,它提供了符合我们要求的一些确切页面,但也可能有一些不相关的页面。这是由于即席检索问题。
Aspects of Ad-hoc Retrieval
以下是 IR 研究中涉及的即席检索的一些方面:
-
用户在相关反馈的帮助下如何改进对查询的原始表述?
-
如何实现数据库合并,即如何将来自不同文本数据库的结果合并到一个结果集中?
-
如何处理部分损坏的数据?哪种模型适合同样情况?
Information Retrieval (IR) Model
在数学上,模型在许多科学领域中使用,旨在了解现实世界中的一些现象。信息检索模型预测并解释用户将在与给定查询相关的内容中找到什么。IR 模型基本上是一种模式,它定义了检索过程的上述方面,并包括以下内容:
-
A model for documents.
-
A model for queries.
-
将查询与文档进行比较的匹配功能。
在数学上,检索模型包括:
D - 文档表示。
R - 查询表示。
F - D、Q 及其之间关系的建模框架。
R (q,di) - 根据查询对文档进行排序的相似性函数。它也称为排名。
Design features of Information retrieval (IR) systems
下面我们来了解信息检索系统的设计特征。
Inverted Index
大多数信息检索系统的主要数据结构是以倒排索引的形式存在的。我们可以将倒排索引定义为一种数据结构,针对每一个单词,列出所有包含该单词的文档以及该单词在各文档中出现的频率。这使得针对查询词搜索“命中”结果变得轻而易举。
The Boolean Model
这是最古老的信息检索 (IR) 模型。该模型基于集合论和布尔代数,其中文档为术语集,而查询是对术语的布尔表达式。布尔模型可以定义为:
-
D − 一组单词,即文档中出现的索引术语。这里,每个术语要么存在 (1),要么不存在 (0)。
-
Q − 布尔表达式,其中项是索引项而运算符是逻辑积 − AND,逻辑和 − OR 和逻辑差 − NOT
-
F − 布尔代数介于项集以及文档集如果我们谈论相关性反馈,那么在布尔信息检索模型中,相关性预测可以定义如下 −
-
R − 当且仅当文档满足查询表达式时,被预测为与查询表达式相关 −
((𝑡𝑒𝑥𝑡 ˅ 𝑖𝑛𝑓𝑜𝑟𝑚𝑎𝑡𝑖𝑜𝑛) ˄ 𝑟𝑒𝑟𝑖𝑒𝑣𝑎𝑙 ˄ ˜ 𝑡ℎ𝑒𝑜𝑟𝑦)
我们可以通过将查询项解释为文档集的明确定义来解释这个模型。
例如,查询项 “economic” 定义索引有项 “economic” 的文档集。
现在,在将项与布尔 AND 运算符组合之后结果会是什么?它会定义小于或等于任何单独项的文档集。例如,带有项 “social” 和 “economic” 的查询将产生同时索引有这两个项的文档集。换句话说,具有两种集合交集的文档集。
现在,在将项与布尔 OR 运算符组合之后结果会是什么?它会定义大于或等于任何单独项的文档集。例如,带有项 “social” 或 “economic” 的查询将产生索引有项 “social” 或 “economic” 的文档集。换句话说,具有两种集合并集的文档集。
Disadvantages of the Boolean Model
布尔模型的缺点如下 −
-
模型的相似度函数为布尔。因此,不会有部分匹配。这可能让用户烦恼。
-
在这个模型中,布尔运算符的使用比关键单词有更大的影响。
-
查询语言富有表现力,但也很复杂。
-
对检索到的文档没有排名。
Vector Space Model
由于布尔模型的上述缺点,Gerard Salton 和他的同事们提出了一个基于 Luhn 相似度准则的模型。Luhn 制定的相似度准则指出,“两个表示在给定元素及其分布上越一致,则它们表示相似信息的概率就越高。”
考虑以下重要方面,以便更多地了解向量空间模型 −
-
索引表示形式(文档)和查询被视为嵌入在高维欧几里得空间中的向量。
-
文档向量与查询向量的相似度测量通常是它们之间夹角的余弦。
Cosine Similarity Measure Formula
余弦是一种归一化点积,可以用以下公式计算:
得分\lgroup\vec{d}\vec{q}\rgroup= \frac{\sum_{k=1}^m d_{k}\:.q_{k}}{\sqrt{\sum_{k=1}^m\lgroup d_{k}\rgroup^2}m\lgroup q_{k}\rgroup^2 }
得分\lgroup \vec{d} \vec{q}\rgroup =1\:当\:d =q
得分\lgroup\vec{d}\vec{q}\rgroup=0\:当\:d\:和\:q\:不共享任何项目时
Vector Space Representation with Query and Document
查询和文档由一个二维向量空间表示。术语为 car 和 insurance 。在向量空间中有一个查询和三个文档。
作为对术语汽车和保险的响应,排名最高的文档将为文档 d2 ,因为 q 和 d2 之间的角度最小。造成这一结果的原因在于,汽车和保险这两个概念在d2中都很突出,因此具有较高的权重。另一方面, d1 和 d3 也提到了这两个术语,但在每个案例中,其中一个在文档中都不是一个中心重要的术语。
Term Weighting
术语加权表示向量空间中术余的权重。术语的权重越高,术语对余弦的影响就越大。应该为模型中更重要的术语分配更多权重。现在这里出现的问题是,我们如何对此建模。
执行此操作的一种方法是将文档中的单词作为其术语权重计数。但是,您认为这会是一种有效的方法吗?
另一种更有效的方法是使用 term frequency (tfij), document frequency (dfi) 和 collection frequency (cfi) 。
Forms of Document Frequency Weighting
现在,让我们了解文档频率加权的不同形式。形式如下所述:
Term Frequency Factor
这也称为术语频率因子,这意味着如果某个术语 t 经常出现在某个文档中,那么包含 t 的查询应检索该文档。我们可以将单词 term frequency (tfij) 和 document frequency (dfi) 组合成一个权重,如下所示:
权重 \left ( i,j \right ) =\begin{cases}(1+log(tf_{ij}))log\frac{N}{df_{i}}\:如果\:tf_{i,j}\:\geq1\\0 \:\:\:\:\:\:\:\:\:\:\:\:\:\:\:\:\:\:\:\:\:\:\:\:\:\:\:\:\:\:\:\:\:\:\:\:\: 如果\:tf_{i,j}\:=0\end{cases}
在此 N 是文档的总数。
User Query Improvement
任何信息检索系统的首要目标都必须是准确性,即根据用户要求生成相关文档。然而,这里出现的问题是我们如何通过改进用户的查询形成样式来改进输出。当然,任何 IR 系统的输出都取决于用户的查询,格式良好的查询会产生更准确的结果。用户可以在 relevance feedback 的帮助下改进自己的查询,这是任何 IR 模型的一个重要方面。
Relevance Feedback
相关反馈采集到最初因给定查询而返回的输出。此初始输出可用于收集用户信息,并了解该输出是否与执行新查询相关。反馈可分类如下:
Explicit Feedback
它可以定义为从相关性评估者获得的反馈。这些评估者还将指示从查询中检索到的文档的相关性。为了改进查询检索性能,相关反馈信息需要与原始查询插值。
系统评估者或其他用户可以通过使用以下相关性系统明确指示相关性:
-
Binary relevance system − 此相关反馈系统指示文档是针对给定查询相关 (1) 还是不相关 (0)。
-
Graded relevance system − 分级相关反馈系统根据使用数字、字母或描述的分级来指示文档针对给定查询的相关性。描述可以是“不相关”、“有点相关”、“非常相关”或“相关”。
Applications of NLP
自然语言处理 (NLP) 是一项新兴技术,它派生出我们在当下看到的各种形式的 AI,并且它在为人类和机器之间创造无缝且互动式界面中的用处将继续成为当今和未来越来越多的认知应用程序的首要任务。在这里,我们将讨论NLP的一些非常有用的应用。
Approaches to Machine Translation (MT)
让我们现在了解机器翻译的重要方法。MT 的方法如下 −
Interlingua Approach
使用 Interlingua 方法的系统将 SL 翻译成称为 Interlingua (IL) 的中间语言,然后将 IL 翻译成 TL。Interlingua 方法可以通过以下 MT 金字塔理解 −
Fighting Spam
如今最常见的问题之一是垃圾邮件。这使得垃圾邮件过滤器变得格外重要,因为它是针对此问题的第一道防线。
可以通过考虑主要的误报和漏报问题来使用 NLP 功能开发垃圾邮件过滤系统。
Existing NLP models for spam filtering
以下是用于垃圾邮件过滤的一些现有 NLP 模型 −
Automatic Summarization
在这个数字时代,最有价值的是数据,或者你可以说信息。然而,我们是否真正获得有用的以及所需数量的信息?答案是“否”,因为信息超载,我们获取知识和信息的能力远远超过理解它们的能力。我们迫切需要自动文本摘要和信息,因为互联网上的信息泛滥不会停止。
文本摘要可以定义为创建较长文本文档的简短准确摘要的技术。自动文本摘要将帮助我们在更短的时间内获得相关信息。自然语言处理 (NLP) 在开发自动文本摘要中起着重要作用。
Natural Language Processing - Python
在本章中,我们将学习使用 Python 进行语言处理。
以下功能使 Python 与其他语言不同:
-
Python is interpreted − 在运行 Python 程序之前,无需对其进行编译,因为解释器在运行时处理 Python。
-
Interactive − 我们可以直接与解释器交互来编写 Python 程序。
-
Object-oriented − Python 本质上是面向对象的,它使用程序设计中的此技术将代码封装在对象中,因此用这种语言可以更轻松地编写程序。
-
Beginner can easily learn − Python 也被称为初学者语言,因为它非常容易理解,并且支持开发广泛的应用程序。
Prerequisites
Python 3 的最新版本是 Python 3.7.1,可用于 Windows、Mac OS 和大多数 Linux OS。
-
对于 Windows,我们可以转到链接 www.python.org/downloads/windows/ 下载并安装 Python。
-
对于 Mac OS,可以使用链接 www.python.org/downloads/mac-osx/ 。
-
对于 Linux,不同的 Linux 版本使用不同的软件包管理器来安装新软件包。例如,要在 Ubuntu Linux 上安装 Python 3,我们可以从终端使用以下命令:
$sudo apt-get install python3-minimal
为更深入地学习 Python 编程,请阅读 Python 3 基本教程 – Python 3
Getting Started with NLTK
我们将使用 Python 库 NLTK(自然语言工具包)对英语文本进行文本分析。自然语言工具包 (NLTK) 是一组 Python 库,专门设计用于识别和标记在自然语言(如英语)文本中找到的词性。
Downloading NLTK’s Data
安装 NLTK 之后,另一项重要任务是下载其预设文本存储库,以便可以轻松使用它。但是,在此之前,我们需要像导入其他任何 Python 模块一样导入 NLTK。以下命令将帮助我们导入 NLTK:
import nltk
现在,使用以下命令下载 NLTK 数据:
nltk.download()
安装所有可用的 NLTK 软件包需要一些时间。
Other Necessary Packages
其他一些 Python 软件包(如 gensim 和 pattern )对于文本分析以及通过使用 NLTK 构建自然语言处理应用程序也是非常必要的。软件包可以按如下所示安装:
Stemming
由于语法原因,语言包含很多变异。语言(包括英语和其他语言)的变异在于它们具有不同的单词形式。例如,像 democracy , democratic 和 democratization 这样的单词。对于机器学习项目而言,对于机器而言非常重要的是理解上面这样的这些不同的单词具有相同的词根。这就是在分析文本时提取单词词根非常有用的原因。
词干提取是一个启发式过程,它通过切断词尾来帮助提取单词的词根。
NLTK 模块提供的用于词干提取的不同包如下 -
PorterStemmer package
这个词干提取包使用波特算法来提取单词的词根。借助以下命令,我们可以导入这个包 -
from nltk.stem.porter import PorterStemmer
例如, ‘writing’ 输入到这个词干提取器后, ‘write’ 将是输出。
Counting POS Tags–Chunking
借助切分,我们可以识别词性(POS)和短语。这是自然语言处理中的重要过程之一。正如我们了解用于创建标记的标记化过程,切分实际上是对这些标记进行标记。换句话说,我们可以说我们可以借助切分过程获取句子的结构。
Running the NLP Script
首先从导入 NLTK 包开始 −
import nltk
现在,我们需要定义句子。
在此,
-
DT is the determinant
-
VBP is the verb
-
JJ is the adjective
-
IN is the preposition
-
NN is the noun
sentence = [("a", "DT"),("clever","JJ"),("fox","NN"),("was","VBP"),
("jumping","VBP"),("over","IN"),("the","DT"),("wall","NN")]
接下来,语法应以正则表达式的形式给出。
grammar = "NP:{<DT>?<JJ>*<NN>}"
现在,我们需要为解析语法定义一个解析器。
parser_chunking = nltk.RegexpParser(grammar)
现在,解析器将按如下方式解析句子 −
parser_chunking.parse(sentence)
接下来,输出将显示在变量中,如下所示:-
Output = parser_chunking.parse(sentence)
现在,以下代码将帮助你以树的形式绘制你的输出。
output.draw()