NLP笔记:文本处理

image-20231022113218368

文本标记化

  • 将字符序列转换为标记(token)序列的过程

  • 从输入字符流中生成标记的过程叫作标记化(tokenization),在这个过程中,词法分析器还会对标记进行分类

    “they lay back on the San Francisco grass and looked at the stars and their”

  • 类型:词汇表中的一个词(13种类型)

  • 标记:文本中的词(15个标记,包括例如and的重复和San Francisco被分为两个标记)

image-20231022113236747

词干提取和词形还原

词干提取和词形还原的目的就是将长相不同,但是含义相同的词统一起来,这样方便 后续的处理和分析

词干提取

词干提取是去除单词的前后缀得到词根的过程

大家常见的前后词缀有「名词的复数」、「进行式」、「过去分词」…

词形还原

词形还原是基于词典,将单词的复杂形态转变成最基础的形态。

词形还原不是简单地将前后缀去掉,而是会根据词典将单词进行转换。比如「drove」会转换为「drive」

image-20231022113252089

中文分词

正向最大匹配

image-20231022113304115

逆向最大匹配

image-20231022113342058

双向最大匹配

image-20231022113356664

结巴分词

image-20231022113407363

image-20231022113412723

最短编辑距离

如何计算两个字符串的相似度? 应用场景:拼写纠正、计算生物学(比较基因序列的相似度)、机器翻译、信息抽取、语音识别

两个字符串之间的最短编辑距离,是指从一个字符串转换为另一个字符串的最少编辑操作的次数

  • 插入Insertion
  • 删除Deletion
  • 替换Substitution

如何找到最短编辑距离

搜索从起始字符串道最终字符串的路径(编辑序列)

  1. Initial State
  2. Operators
  3. 插入
  4. 删除
  5. 替代
  6. Goal State:无论操作路径是什么,最终状态都必须相同
  7. Path Cost:我们想要最小化编辑次数(我们不记录路径,只需要找到最短的路径)

定义最短编辑距离

  • 两个字符串:
  • 长度为n的X
  • 长度为m的Y
  • 定义D(i, j)
  • 表示X的前i个字符和Y的前j个字符的最短编辑距离
  • 因此X和Y的最短编辑距离为D(n, m)

算法设计

D ( i , j ) = m i n { D ( i − 1 , j ) + 1 D ( i , j − 1 ) + 1 D ( i − 1 , j − 1 ) + { 0 i f s o u r c e [ i ] = t a r g e t [ j ] 2 i f s o u r c e [ i ] ≠ t a r g e t [ j ] D(i,j)=min \begin{cases} D(i-1,j)+1\\ D(i,j-1)+1\\ D(i-1,j-1)+ \begin{cases} 0&if source[i]=target[j]\\ 2&if source[i]\neq target[j] \end{cases} \end{cases} D(i,j)=min D(i1,j)+1D(i,j1)+1D(i1,j1)+{02ifsource[i]=target[j]ifsource[i]=target[j]

编辑距离的计算可以通过动态规划算法来实现。具体步骤如下:

  1. 创建一个二维数组,其行数和列数分别为两个字符串的长度加1
  2. 初始化第一行和第一列,使其逐步增加,表示将一个字符串变为空字符串的编辑操作次数
  3. 遍历数组的其余部分,计算每个位置的编辑距离
  • 如果当前字符相同,编辑距离与上一个位置相同
  • 否则,取上、左、左上三个位置的最小值,然后加1,表示当前位置的编辑距离
  1. 最终,右下角的元素即为两个字符串的最短编辑距离

示例:假设我们要计算字符串"kitten"和"sitting"之间的最短编辑距离。

  -   k   i   t   t   e   n
- 0   1   2   3   4   5   6
s 1   1   2   3   4   5   6
i 2   2   1   2   3   4   5
t 3   3   2   1   2   3   4
t 4   4   3   2   1   2   3
i 5   5   4   3   2   2   3
n 6   6   5   4   3   3   2
g 7   7   6   5   4   4   3

最终的编辑距离为3,需要3次编辑操作(删除’k’,替换’e’为’s’,添加’g’)将"kitten"转换为"sitting"。

image-20231022113600993

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值