📜  自然语言处理简介

📅  最后修改于: 2022-05-13 01:58:08.874000             🧑  作者: Mango

自然语言处理简介

自然语言处理的本质在于让计算机理解自然语言。但这不是一件容易的事。计算机可以理解电子表格和数据库中的表格等结构化形式的数据,但人类语言、文本和语音构成了非结构化的数据类别,计算机很难理解它,因此需要自然语言处理。

有很多各种形式的自然语言数据,如果计算机能够理解和处理这些数据,就会变得非常容易。我们可以用不同的方式根据预期输出来训练模型。人类已经写作了数千年,有很多文学作品可供使用,如果我们能让计算机理解这一点,那就太好了。但这项任务绝非易事。有各种各样的挑战,比如理解句子的正确含义,正确的命名实体识别(NER),正确预测各个词性,共指解析(我认为最具挑战性的事情)。

计算机无法真正理解人类语言。如果我们提供足够的数据并正确训练模型,它可以根据先前提供的数据和经验区分并尝试对语音的各个部分(名词、动词、形容词、支持者等)进行分类。如果它遇到一个新词,它会尝试做出最接近的猜测,这可能会令人尴尬地错误几次。

计算机很难从句子中提取确切的含义。例如——这个男孩像振动一样散发着火焰。这男孩性格很上进,还是真的会放火?正如你在这里看到的,用电脑解析英语会很复杂。

训练模型涉及多个阶段。解决机器学习中的复杂问题意味着建立一个管道。简单来说,就是把一个复杂的问题分解成若干个小问题,为每个小问题制作模型,然后再整合这些模型。 NLP 中也做了类似的事情。我们可以将模型理解英语的过程分解为许多小块。



如果计算机能够理解圣佩德罗是中美洲伯利兹地区的一个岛屿,人口为 16, 444 并且是伯利兹的第二大城市,那就太好了。但是为了让计算机理解这一点,我们需要教计算机非常基本的书面语言概念。

因此,让我们从创建 NLP 管道开始。它有不同的步骤,最终会为我们提供所需的输出(在少数情况下可能不是这样)。

  • 第 1 步:句子分割

    在不同的句子中打破一段文本。

  • 第 2 步:单词标记化

    将句子分解为称为标记的单个单词。我们可以在遇到空间时标记它们,我们可以用这种方式训练模型。甚至标点符号也被视为单独的标记,因为它们具有一定的含义。

  • 第 3 步:预测每个标记的词性

    预测这个词是否是名词、动词、形容词、副词、代词等。这将有助于理解句子在说什么。这可以通过将标记(及其周围的单词)提供给预先训练的词性分类模型来实现。该模型输入了大量带有各种词性标记的英语单词,以便将将来遇到的相似词分类为各种词性。同样,模型并没有真正理解单词的“意义”,它只是根据以前的经验对它们进行分类。这是纯粹的统计数据。

    该过程将如下所示:

    Input : Part of speech classification model 
    Output : Town - common noun
             Is - verb 
             The - determiner
    

    同样,它将对各种令牌进行分类。

  • 第 4 步:词形还原

    用根词喂养模型。
    例如 -

    There’s a Buffalo grazing in the field. 
    There are Buffaloes grazing in the field. 

    在这里,Buffalo 和 Buffaloes 的意思相同。但是,计算机可以将它混淆为两个不同的术语,因为它什么都不知道。所以我们必须教计算机这两个术语的意思相同。我们必须告诉计算机两个句子都在谈论同一个概念。因此,我们需要找出单词的最基本形式或词根形式或引理,并相应地将其提供给模型。

    以类似的方式,我们也可以将它用于动词。 “播放”和“播放”应视为相同。

  • 第 5 步:识别停用词

    英语中有各种使用频率很高的词,如“a”、“and”、“the”等。这些词在进行统计分析时会产生很多噪音。我们可以把这些词去掉。一些 NLP 管道会将这些词归类为停用词,它们会在进行一些统计分析时被过滤掉。当然,他们需要了解各种标记之间的依赖关系才能获得句子的确切含义。停用词列表各不相同,取决于您期望的输出类型。

  • 步骤 6.1:依赖解析

    这意味着找出句子中单词之间的关系以及它们之间的关系。我们在依赖解析中创建了一个解析树,以 root 作为句子中的主要动词。如果我们在示例中谈论第一句话,那么“is”是主要动词,它将是解析树的根。我们可以用一个词根(主要动词)与之关联的每个句子构建一个解析树。我们还可以确定这两个词之间存在的关系类型。在我们的示例中,'San Pedro' 是主题,'island' 是属性。因此,可以建立“San Pedro”和“is”、“island”和“is”之间的关系。

    就像我们训练一个机器学习模型来识别语音的各个部分一样,我们可以训练一个模型来通过输入许多单词来识别单词之间的依赖关系。虽然这是一项复杂的任务。 2016 年,谷歌发布了一个新的依赖解析器 Parsey McParseface,它使用了深度学习方法。

  • 步骤 6.2:查找名词短语

    我们可以将代表相同想法的词分组。例如——它是伯利兹区的第二大城镇,也是伯利兹农村南部选区中最大的城镇。在这里,标记 'second'、'largest' 和 'town' 可以组合在一起,因为它们一起代表同一个事物 'Belize'。我们可以使用依赖解析的输出来组合这些词。是否执行此步骤完全取决于最终目标,但如果我们不想要太多关于哪些词是形容词的信息,而是专注于其他重要细节,那么这样做总是很快的。

  • 第 7 步:命名实体识别(NER)

    圣佩德罗是位于中美洲伯利兹国家 2. 伯利兹区龙涎香岛南部的一个城镇。
    在这里,NER 将单词与现实世界的位置进行映射。物理世界中实际存在的地方。我们可以使用 NLP 自动提取文档中存在的真实世界地点。

    如果上面这句话是输入,NER会这样映射:

    San Pedro - Geographic Entity
    Ambergris Caye - Geographic Entity
    Belize - Geographic Entity
    Central America - Geographic Entity

    NER 系统会寻找单词在句子中的位置,并利用其他统计模型来确定它实际上是什么类型的单词。例如 – “Washington”可以是地理位置,也可以是任何人的姓氏。一个好的 NER 系统可以识别这一点。

    典型的 NER 系统可以标记的对象种类:

    People’s names. 
    Company names. 
    Geographical locations
    Product names. 
    Date and time. 
    Amount of money. 
    Events.
  • 步骤#8:共指解析:

    圣佩德罗是中美洲伯利兹国家伯利兹区龙涎香岛南部的一个城镇。根据 2015 年年中估计,该镇人口约为 16, 444 人。它是伯利兹区第二大镇,也是伯利兹农村南部选区中最大的镇。

    在这里,我们知道句子 6 中的“it”代表 San Pedro,但对于计算机,不可能理解这两个标记是相同的,因为它在处理这两个句子时将这两个句子视为两个不同的事物。代词在英语文学中使用频率很高,计算机很难理解两者是一样的。