用于增强稳健性的字符 N-Gram
处理拼写错误与罕见词
用于增强稳健性的字符 N-Gram 是 CoddyKit 上的免费 NLP Academy 课时。 这是第 2 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 NLP Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 NLP Academy 课程共包含 4 节课。
词语特征很脆弱
基于词语的特征容易受到拼写错误和罕见拼写的影响。模型会把 runnning 当成一个全新的词,因此一次小小的失误就可能丢失全部信号。
深入到字符层面
我们不再使用完整的词语,而是把文本切分成较短的字母片段。这些相互重叠的片段称为字符 n-gram。
3-gram 是什么样的
对于单词 cat,字符 3-gram 就是简单的三个字母组合。它们每次向前移动一个位置,在文本中滑动,形成相互重叠的片段。
word = "happy"
grams = [word[i:i+3] for i in range(len(word)-2)]为什么能抵抗拼写错误
单词 run 和 runn 共享大部分字符 gram。因此,一个拼写错误只会改变少量特征,而不会抹去整个单词。
识别词语族
play、playing 和 player 都包含 gram pla。字符 gram 无需执行任何词干提取步骤,就能悄然关联相关词形。
非常适合混乱的文本
社交媒体、用户名和产品代码中充满了不规范的拼写。当基于词语的特征失效时,字符 gram 依然稳健。
启用字符模式
斯科特学习库只需设置一个参数即可完成这项操作。将 analyzer 设置为 char,并选择一个ngram_range,即可提取字符 gram,而不是词语。
from sklearn.feature_extraction.text import TfidfVectorizer
vec = TfidfVectorizer(analyzer="char", ngram_range=(3, 5))char_wb 尊重词语边界
char_wb analyzer 只在词语边界内部生成 gram,并为每个词添加填充。它保留了稳健性,同时避免生成跨越两个词的 gram。
vec = TfidfVectorizer(analyzer="char_wb", ngram_range=(2, 4))也适用于其他语言
对于会将词语粘连在一起或词尾变化丰富的语言,基于词语的分词器很难处理。字符 gram 可以绕开这些问题,并且对不同语言都很友好。
代价:特征更多
字符 gram 产生的特征远多于词语。额外的维度需要更多内存,因此应将范围设得紧凑一些。
最适合作为搭档
字符 gram 与词语特征结合使用时最有效,而不是用来取代词语特征。二者结合后,既能覆盖含义,也能提升稳健性。💪
快速检查
为什么字符 n-gram 能很好地处理拼写错误?
回顾
字符n-gram会把文本切分成字母片段,能够抵抗拼写错误,并关联词语族。在斯科特学习库中,将 analyzer 设置为 char,并与词语特征结合使用。✅
用 AI 导师学习 Python — 免费
在浏览器中编写并运行真实代码,获得全天候 AI 导师的即时帮助,并在网页或应用中继续学习。
- 课程
- 30
- 课程
- 120
常见问题解答
「用于增强稳健性的字符 N-Gram」课时是免费的吗?
是的 — 「用于增强稳健性的字符 N-Gram」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 NLP Academy 课程的其余内容,请升级到 CoddyKit PRO。 NLP Academy 课程共包含 4 节课。
「用于增强稳健性的字符 N-Gram」这节课中我会学到什么?
处理拼写错误与罕见词 你通过在浏览器中直接运行的动手代码来练习 NLP Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。
学习 NLP Academy 需要有经验吗?
无需任何先前经验。CoddyKit 上的 NLP Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 2 节课,共 4 节。
「用于增强稳健性的字符 N-Gram」课时需要多长时间?
大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。
我能在这节 NLP Academy 课中编写并运行代码吗?
能。每节 NLP Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。