【Python机器学习】NLP分词——词干还原的挑战

要想使用自然语言处理的相关应用,第一件事就是需要一个强大的词汇表。我们要把文档或任何字符串拆分为离散的有意义的词条,这里说的词条仅限于词、标点符号和数值,但是这里使用的技术可以很容易推广到字符序列包含的任何其他有意义的单元,比如ASCII表情符号、Unicode表情符号和数学符号。

从文档中检索词条需要一些字符串处理方法,这些方法不仅仅是str.split(),处理时需要把标点符号与词分开,还需要将"we'll"这样的缩写词还原成原始词。一旦从文档中确定好要加入词汇表的词条之后,需要使用正则表达式工具来将意义相似的词合并在一起,这个过程被称为词干还原。然后我们就可以将文档表示成词袋向量。

词还可以在分成更细粒度的意义单元。词本身可以分成更小的有意义部分。诸如"re""pre"和"ing"之类的音节、前缀和后缀都有其内在含义。词的各组成部分还可以进一步分成更细粒度的意义单元。

我们要将输入串切分成词,同时我们还可以提取出连续2个、3个、4个甚至5个词条组成的次对、三元组、四元组和五元组。这些语言单位称为n-gram(n元)。连续两个词称为2-gram(bigram),连续3个词称为3-gram,以此类推。利用n-gram可以让机器不仅认识"ice"和"cream",也认识它们构成的2-gram"icecream"。

之后,所有的2-gram(和其他较短的n-gram)都将放到最后的词汇表当中,然后利用词的文档频率来估计他们的重要性。利用这种方法可以过滤掉那些函件的词对或三元组。在任何机器学习流水线中,特征提取很少能够完全保留输入数据的所有信息内容,这也是NLP的一部分:当需要调整分词器以便从具体应用的文本中提取更多或不一样的信息时,要进行学习。

在自然语言处理中,从文本中产生其数值向量实际是一个特别"有损"的特征提取过程。尽管如此,词袋 (BOW)向量从文本中保留了足够的信息内容来产生有用和有趣的机器学习模型。

为了说明特征提取困难的原因,我们可以看一个case。所谓词干还原,指的是将某个词的不同屈折变化形式统统"打包"到同一个"桶"或类别中。假定要将"ending"中的动词后缀"ing"去掉,那么就需要有一个称为"end"的词干来表示上面两个词。同时,我们将词"running"还原成"run",于是这两个词就可以同等对待,当然,上述处理过程实际上有些棘手,因为"running"中要去掉的不仅是"ing"还有一个额外的"n"。还有,对于"sing"来说,我们不能去掉"ing",否则就只剩了个"s"。

还有一些名词复数后面的"s"(比如words)和词本身(比如bus)后面就有的"s"。词当中一个个独立的字母或者词的一部分为整个词的意义提供了信息、这些字母还可能产生误导。

相关推荐
水如烟13 分钟前
孤能子视角:SEP《人工智能的认识论》EIS读法·理解——理解幻觉与解压缩幻觉:同一缺口,两份报告
人工智能
冬奇Lab30 分钟前
一天一个开源项目(第249篇):Hallmark —— 一个拒绝“AI 味”的设计 Skill,用 48 套材质主题和浏览器 Linter 约束编程助手
人工智能·开源·资讯
GlobalInfo30 分钟前
全球包装检测用3D轮廓传感器市场调研:2026年规模预计达1.87亿美元,食品医药与电商物流需求推动增长
大数据·人工智能·3d
paopaokaka_luck32 分钟前
流浪动物救助与收养系统(DeepSeek AI对话、 ECharts多维分析、救助流程衔接、领养与回访衔接、 捐赠确认与公示、志愿者协作)
java·前端·javascript·人工智能·mysql·echarts·推荐算法
AI视频工具指南41 分钟前
怎么用AI写爱情短剧?
人工智能
程序 代码狂人1 小时前
切片表与分区表的区别(数据开发面试版)
java·大数据·开发语言·数据仓库·算法
Jsundoku1 小时前
第四章 深度学习 -- 训练技巧
人工智能·深度学习
HDU-Dade1 小时前
【校招笔试真题】简要介绍 Self-Attention 的前沿算法
人工智能·算法
2501_944521591 小时前
Immer 跨端三方库仓颉适配全流程
python·eclipse·django
信誓旦旦的程序猿2 小时前
【Python量化实战宝典 #26】止损与回撤控制手册:移动止损、最大回撤(Python 可跑)
python·1024程序员节·股票数据api·股票数据api接口·股票api数据接口·股票量化数据api·股票量化数据接口