文本分析相关技术
作为学习的记录,本文概述了文本处理所涉及的概念和一些技术,附带了一些参考链接。
1 拼写错误纠正(spell correction)
编辑距离(edit distance)
编辑距离是指一个错误的输入,转化成正确的一个单词,需要付出的代价;
一个字符串转化成另一个字符串,可以进行替换、删除、增加一个字符来进行修改。当一个字符串被检测出来可能出错了,系统推荐几个类似的单词候选,分别需要进行不同次数的修改才能得到。
不同的操作可以有不同的权值,当权值相等时有如下的例子:
input | candidates | edit distance |
---|---|---|
therr | there | 1 |
their | 1 | |
thesis | 3 | |
theirs | 2 | |
the | 2 |
可以看出来,编辑距离越小,相似度越大。
当出现像这里there和their的编辑距离都是1的时候,依赖于后续的操作进行选择。
计算编辑距离
基于动态规划的解法:
设有两个字符串
S : S 1 . . . S i . . . S m S:S_1...S_i...S_m S:S1...Si...Sm
T : T 1 . . . T j . . . T n T:T_1...T_j...T_n T:T1...Tj...Tn
取一个二维数组dp[i][j]表示S[1:i] 和T[1:j]之间的editDist。
最终的editDist(S,T)=dp[m][n]
dp[i][j]的值的更新逻辑如下:
if S i = = T j S_i==T_j Si==Tj:
dp[i][j]=dp[i-1][j-1];
if S i ! = T j S_i!=T_j Si!=