自然语言处理基本任务综述


image-20230420171422863

1.多语言分词

​ 在自然语言处理中,分词(Tokenization)是指将自然语言文本中的连续字符序列划分为一个个有意义的符号(token)的过程。分词是文本预处理中的一项基础任务,它是自然语言处理中的一环,而且是非常重要的一环。

​ 在英文中,单词之间通常由空格隔开,因此英文单词的分词比较容易实现。但是,在中文等没有空格的语言中,分词就变得更加困难和复杂。中文分词需要考虑语句结构、上下文语境和词性等因素,因此很多算法都被提出来用于解决中文分词的问题。

​ 分词对于自然语言处理很重要,它是句子理解和语义分析的基础。分词能够将一段文本拆分成有意义的单元,进而为后续的文本处理打下基础。例如,在语音识别、机器翻译、信息检索、文本分类和情感分析等应用中,都需要进行分词。

例:“请输入文本”

{
    
    
  "result": [
    {
    
    
      "id": "0",
      "word": "请",
      "tags": [
        "基本词-中文"
      ]
    },
    {
    
    
      "id": "1",
      "word": "输入",
      "tags": [
        "基本词-中文",
        "产品类型修饰词"
      ]
    },
    {
    
    
      "id": "2",
      "word": "文本",
      "tags": [
        "基本词-中文",
        "产品类型修饰词"
      ]
    }
  ],
  "success": true
}

2.词性标注

​ 该能力可以为自然语言文本中的每个词汇赋予一个词性,如名词、动词、介词

例:“请输入文本”

pos:词性 word:词

{
    
    
  "result": [
    {
    
    
      "pos": "VV",
      "word": "请"
    },
    {
    
    
      "pos": "VV",
      "word": "输入"
    },
    {
    
    
      "pos": "NN",
      "word": "文本"
    }
  ],
  "success": true
}

3.命名实体识别

​ 中文命名实体识别是一种自然语言处理技术,用于从中文文本中识别出具有特定意义的实体,如人名、地名、组织机构名等。这种技术通常利用机器学习算法和语料库进行训练,并可以应用于信息提取、知识图谱构建、智能问答等多个领域。常见的中文命名实体识别工具包括Stanford NER、LTP、THULAC等。

例:“请输入文本”

{
    
    
  "result": [
    {
    
    
      "synonym": "",
      "weight": "0.100000",
      "tag": "普通词",
      "word": "请"
    },
    {
    
    
      "synonym": "",
      "weight": "0.100000",
      "tag": "普通词",
      "word": "输入"
    },
    {
    
    
      "synonym": "",
      "weight": "1.000000",
      "tag": "品类",
      "word": "文本"
    }
  ],
  "success": true
}

4.中心词提取

​ 在自然语言处理(NLP)中,中心词提取通过给每个词计算一个相关性分数来衡量每个词与句子的相关性程度,进而识别并提取出句子的中心词。

​ 这些关键词或短语可以用于文本分类、信息检索、文本摘要等任务。常见的中心词提取算法包括基于词频的方法如TF-IDF、基于图论的方法如TextRank,以及主题模型如LDA等。其中,深度学习也提供了一些新的方法和技术,如Word2Vec、BERT等预训练模型。

5.依存句法分析

​ 通过分析句子中词与词之间的依存关系,从而捕捉到词语的句法结构信息(如主谓、动宾、定中等结构关系),并使用树状结构来表示句子的句法结构信息(如主谓宾、定状补等)

百度中文依存句法分析工具DDParser重磅开源_百度大脑-CSDN博客
  • 基于规则的方法:手动编写语言学规则,捕捉词汇之间的关系。
  • 基于统计学习的方法:使用大量标注好的句子数据,通过机器学习算法自动学习依存关系模式。
  • 混合方法:结合基于规则和基于统计学习的方法,既能利用专家知识,又能充分利用大量语料库。
  • 神经网络方法:利用深度学习技术,输入是句子中的每个词及其上下文信息,输出是每个词与其它词之间的依存关系

例:“小明爱中国”

{
    
    
  "result": [
    {
    
    
      "head": 2,
      "pos": "NR",
      "id": 1,
      "label": "SBV",
      "word": "小明"
    },
    {
    
    
      "head": 0,
      "pos": "VV",
      "id": 2,
      "label": "ROOT",
      "word": "爱"
    },
    {
    
    
      "head": 2,
      "pos": "NR",
      "id": 3,
      "label": "VOB",
      "word": "中国"
    }
  ],
  "success": true
}
  • id:词语序号,从1开始
  • word:词语
  • pos:当前词语的词性
  • head:词语的核心词
  • label:依存关系类型,SBV、VOB表示不同的关系,对此不再赘述

6.文本纠错

​ 准确识别输入文本中出现的拼写错别字及其段落位置信息,并针对性给出正确的建议文本内容

  • 基于规则的方法:通过预定义的规则来检测和纠正文本中的错误,例如拼写检查器。
  • 基于统计的方法:使用语言模型和概率算法来识别和修复文本中的错误,例如n-gram模型、编辑距离算法等。
  • 基于深度学习的方法:使用神经网络等深度学习技术来训练自动纠错模型,例如seq2seq模型、BERT等。
  • 基于集成的方法:将多种方法结合起来,利用它们各自的优点来提高文本纠错的准确性和鲁棒性。

例:我今天吃苹果,明天吃香姣

{
    
    
  "result": {
    
    
    "edits": [
      {
    
    
        "confidence": 0.8385,
        "pos": 11,
        "src": "姣",
        "tgt": "蕉",
        "type": "SpellingError"
      }
    ],
    "source": "我今天吃苹果,明天吃香姣",
    "target": "我今天吃苹果,明天吃香蕉"
  },
  "success": true
}

7.文本摘要

​ 文本摘要是将一篇长文本压缩为几个关键信息点的过程。常用的文本摘要方法包括:

  1. 抽取式摘要:从原始文本中抽取最重要的句子或短语来生成摘要,不涉及对语言的理解和生成。
  2. 生成式摘要:通过对原始文本进行语义理解和生成,自动生成新的、更简洁的文本。

8.文本相似度

​ 提供不同文本之间相似度的计算,并输出一个介于0到1之间的分数,分数越大则文本之间的相似度越高。建议分数不要用于直接判断,可以作为特征,并按照范围进行分桶。

​ 常用的文本相似度方法包括:

  • 余弦相似度:通过计算两个向量之间的夹角余弦值来表示它们的相似程度。

  • 编辑距离:通过计算将一个字符串转换成另一个字符串所需的最少编辑操作数来表示它们的相似程度。

  • Jaccard 相似度:通过计算两个集合的交集与并集之比来表示它们的相似程度。

    Jaccard 相似度是一种常用于衡量文本相似性的指标,它可以基于文本中词语的集合来计算两个文本之间的相似度。其计算方式与数学中集合的 Jaccard 相似系数类似,具体定义为两个文本共同包含的词语数量除以它们所有包含的词语的数量之和。

    如果设文本 A 和 B 中涉及的词语分别为 AA 和 BB,则 Jaccard 相似度计算公式为:
    J ( A , B ) = ∣ A ∩ B ∣ ∣ A ∪ B ∣ ∗ J ∗ ( ∗ A ∗ , ∗ B ∗ ) = ∣ ∗ A ∗ ∪ ∗ B ∗ ∣ ∣ ∗ A ∗ ∩ ∗ B ∗ ∣ J(A,B) = \frac{|A \cap B|}{|A \cup B|}*J*(*A*,*B*)=∣*A*∪*B*∣∣*A*∩*B*∣ J(A,B)=ABABJ(A,B)=∣AB∣∣AB

    其中, ∩ ∩ 表示交集, ∪ ∪ 表示并集, ∣ . ∣ ∣ . ∣ 表示集合中元素的个数。 其中,\cap∩ 表示交集,\cup∪ 表示并集,|.|∣.∣ 表示集合中元素的个数。 其中,表示交集,表示并集,∣.∣.表示集合中元素的个数。

    举个例子,假设有两句话:“我喜欢吃苹果”和“他也喜欢吃苹果”,则它们的 Jaccard 相似度可以如下计算:

    • 句子 1 包含的词语集合 A = {我, 喜欢, 吃, 苹果}A={我,喜欢,吃,苹果}

    • 句子 2 包含的词语集合 B = {他, 也, 喜欢, 吃, 苹果}B={他,也,喜欢,吃,苹果}

    • AA 与 BB 的交集为 {喜欢, 吃, 苹果}{喜欢,吃,苹果}

    • AA 与 BB 的并集为 {我, 他, 喜欢, 吃, 苹果, 也}{我,他,喜欢,吃,苹果,也}

    • 因此,句子 1 和句子 2 的 Jaccard 相似度为
      3 6 = 0.563 = 0.5 \frac{3}{6} = 0.563=0.5 63=0.563=0.5

  • 词向量模型:通过将文本中的单词映射到一个向量空间中,然后基于向量之间的距离或余弦相似度来计算文本相似度。

  • 预训练语言模型:使用预先训练好的神经网络来生成文本的表示,并根据这些表示来计算文本之间的相似度。

句子A:一条红色连衣裙

句子B:一条蓝色衣服

{
    
    
  "result": [
    {
    
    
      "score": "0.16925383",
      "flag": true
    }
  ],
  "success": true
}

9.情感分析

​ 针对带有主观描述的自然语言文本,可自动判断该文本的情感正负倾向并给出相应的结果

10.文本分类

​ 对用户输入的一段文本,映射到具体的类目上。以新闻资讯领域为例,可以将一段文本分为以下几个类目:港澳台、房产、军事、社会、财经、文娱、汽车、国际、教育、健康、美食、时政、法治、旅游、体育、数码科技、健康、动漫、反腐前沿。

11.词向量

有一篇文章讲的非常好,大家可以跳转观看:自然语言处理3:词向量 - 知乎 (zhihu.com)

【白话NLP】什么是词向量 - 知乎 (zhihu.com)

猜你喜欢

转载自blog.csdn.net/henghuizan2771/article/details/130345462