词干提取和词形还原是将单词变体减少为一种基本形式的文本预处理技术。
研究人员对人工智能是否具有推理能力展开了争论,这场争论已经延伸到计算语言学。聊天机器人和深度学习模型只能处理语言形式?还是可以理解语义?2无论人们对这一问题的看法如何,机器学习模型都必须经过训练,才能将不同的单词识别为一个基础词的形态变体。甚至根据形态而不是语义来处理单词。通过将派生词形式简化为一个词干,词干提取和词形还原有助于信息检索系统和深度学习模型将形态相关的词等同起来。
对于许多文本挖掘任务,包括文本分类、聚类、索引编制等,词干提取和词形还原通过降低机器学习算法维度和对形态相关单词进行分组来帮助提高准确性。算法维度的降低可以提高 NLP 中统计模型的准确性和精度,例如主题模型和词向量模型。3
词干提取和词形还原用作文本挖掘管道中的一个阶段,它将原始文本数据转换为可供机器处理的结构化格式。词干提取和词形还原都从变格的词形中去除词缀,只留下根形式。4这些过程相当于删除词标记开头和结尾的字符。然后传递得到的词根或基础词以进行进一步处理。除了这种基本相似性之外,词干提取和词形还原在如何将单词的不同形式简化为一种常见的基本形式方面存在关键差异。
尽管词干提取算法确实有一些通用的运算模式,但它们之间的差异很大。词干提取器通过对预定义的常见后缀列表运行输入单词标记来消除单词后缀。然后,如果单词不违反与该后缀相关的任何规则或条件,词干提取器就会从单词中删除所有找到的后缀字符串。某些词干提取器(例如,Lovins 词干提取器)通过一组额外的规则运行生成的词干位,以纠正格式错误的词根。
其中使用最广泛的算法是 Porter 词干提取算法,以及其更新版本 Snowball 词干提取器。为了更好地理解词干提取,我们可以通过 Snowball 词干提取器运行 Shakespeare 的《哈姆雷特》中的以下段落:“There is nothing either good or bad but thinking makes it so.”
Python 自然语言工具包 (NLTK) 包含适用于 Snowball 和 Porter 词干提取器的内置函数。在使用 NLTK 对《哈姆雷特》引文进行标记化处理后,我们可以使用以下代码将标记化文本传递给 Snowball 词干提取器:
from nltk.stem.snowball import SnowballStemmer from nltk.tokenize import word_tokenize stemmer = SnowballStemmer("english", True) text = "There is nothing either good or bad but thinking makes it so." words = word_tokenize(text) stemmed_words = [stemmer.stem(word) for word in words] print("Original:", text) print("Tokenized:", words) print("Stemmed:", stemmed_words)
代码输出:
Original: There is nothing either good or bad but thinking makes it so. Tokenized: ['There', 'is', 'nothing', 'either', 'good', 'or', 'bad', 'but', 'thinking', 'makes', 'it', 'so', '.'] Stemmed: ['there', 'is', 'noth', 'either', 'good', 'or', 'bad', 'but', 'think', 'make', 'it', 'so', '.']
与其他词干提取器相比,Snowball 和 Porter 词干提取器算法采用更加数学化的方法来消除后缀。可以说,词干提取器根据规则列表运行每个单词标记,这些规则根据标记中的元音和辅音组的数量指定要删除的后缀字符串。5当然,由于英语遵循一般而非绝对的词法规则,词干提取算法的系统标准会返回错误,如 noth。
词干提取器中删除了 -ing,这是表示现在进行时的常用词尾。然而,在《哈姆雷特》的引用中,删除 -ing 会错误地产生词干 noth。这可能会阻后续的语言分析将 nothing 与相似的名词相关联,例如 anything 和 something。此外,词干提取器还保留了不规则动词 is。Snowball 词干提取器同样保留了 to be 的其他变位,例如 was 和 are,未进行词干提取。这可能会阻止模型正确关联给定动词的不规则变位。
文献通常将词干提取定义为从单词中剥离词缀以获得词干字符串的过程,将词形还原定义为将形态变体简化为一种词典基本形式的更大过程。6词干提取和词形还原之间的实际区别在于,词干提取仅从单词标记的末尾删除常见后缀,而词形还原可确保输出的单词是可以在词典中找到的单词的现有规范化形式(例如,词元)。7
因为词形还原旨在输出字典基本形式,所以它需要比词干提取更强大的形态分析。词性 (POS) 标记是词形还原的关键步骤。POS 本质上为每个单词标记分配表示其在句子中的句法功能。Python NLTK 提供了 Word Net 词形还原算法的函数,我们可以通过该函数对《哈姆雷特》段落进行词形还原:
from nltk.stem import WordNetLemmatizer from nltk.corpus import wordnet from nltk import word_tokenize, pos_tag def get_wordnet_pos(tag): if tag.startswith('J'): return wordnet.ADJ elif tag.startswith('V'): return wordnet.VERB elif tag.startswith('N'): return wordnet.NOUN elif tag.startswith('R'): return wordnet.ADV else: return wordnet.NOUN def lemmatize_passage(text): words = word_tokenize(text) pos_tags = pos_tag(words) lemmatizer = WordNetLemmatizer() lemmatized_words = [lemmatizer.lemmatize(word, get_wordnet_pos(tag)) for word, tag in pos_tags] lemmatized_sentence = ' '.join(lemmatized_words) return lemmatized_sentence text = "There is nothing either good or bad but thinking makes it so." result = lemmatize_passage(text) print("Original:", text) print("Tokenized:", word_tokenize(text)) print("Lemmatized:", result)
代码返回:
Original: There is nothing either good or bad but thinking makes it so. Tokenized: ['There', 'is', 'nothing', 'either', 'good', 'or', 'bad', 'but', 'thinking', 'makes', 'it', 'so', '.'] Lemmatized: There be nothing either good or bad but think make it so .
WordNetLemmatizer 与 Snowball 词干提取器非常相似,它将动词变位简化为基本形式,例如,从 thinking 到 think,从 makes 到 make。但是,与 Snowball 词干提取算法不同的是,该词形还原器将 nothing 标识为名词,并适当地保留其 -ing 结尾不变,同时将 is 进一步更改为基本形式 be。通过这种方式,可以更恰当地合并不规则动词形式。
词干提取和词形还原主要支持英语文本数据的规范化。这两种文本规范化技术还支持其他几种罗马化语言,例如法语、德语和西班牙语。Snowball 词干提取器还支持其他语言,例如俄语。针对其他语言(尤其是阿拉伯语)的词干提取和词形还原算法开发是近期正在进行的研究领域。阿拉伯语尤其具有挑战性,因为它具有粘着形态、正字法变异和词汇歧义等特征。8总之,这些因素使得从形态变体中识别基本词形的系统方法变得困难,至少与英语单词相比是如此。
除了这个一般限制之外,词干提取和词形还原也有各自的缺点。正如《哈姆雷特》的例子所示,词干提取是一种相对启发式的、基于规则的字符串删除过程。词干提取过度和词干提取不足是两种常见的错误。前者是两个语义不同的单词还原为同一词根(例如,news 变为 new);词干提取不足是指两个语义相关的单词没有还原为同一词根(例如,knavish 和 knave 分别还原为 knavish 和 knave)。 9此外,词干提取只会从单词中去除后缀,因此不能像词形还原那样解释不规则的动词形式或前缀。当然,词干提取相对简单易行,而词形还原的计算成本和时间可能更高,具体取决于所处理数据的大小。
IBM® Granite 是我们开放式、性能优异、值得信赖的 AI 模型系列,专门为企业量身定制,并经过优化,可以帮助您扩展 AI 应用。深入了解语言、代码、时间序列和防护措施选项。
了解自然语言处理如何帮助您与计算机更自然地对话。
我们对 2,000 家组织进行了调查,旨在了解他们的 AI 计划,以发现哪些方法有效、哪些方法无效,以及如何才能取得领先。
深入了解 IBM 开发人员网站,访问博客、文章、时事通讯,并了解更多有关 IBM 嵌入式 AI 的信息。
学习基本概念并通过亲手实验、课程、指导项目、试用等方式培养您的技能。
1 Nitin Indurkhya 和 Fred Damerau, 自然语言处理手册,第 2 版 ,CRC Press,2010年。
2 Zhaofeng Wu、Linlu Qiu、Alexis Ross、Ekin Akyürek、Boyuan Chen、Bailin Wang、Najoung Kim、Jacob Andreas、Yoon Kim,“推理还是背诵?通过反事实任务探索语言模型的能力和局限性”,2023 年, https://arxiv.org/abs/2307.02477。Gati Aher、 Rosa Arriaga、 Adam Kalai,“使用大型语言模型模拟多人并复制人体研究”, 第 40 届国际机器学习大会论文集, PMLR,第 202 卷,2023 年,第 337-371 页, https://proceedings.mlr.press/v202/aher23a.html。Emily Bender 和 Alexander Koller,“迈向 NLU:数据时代的意义、形式和理解”,第 58 届计算语言学协会年会论文集,2020 年,第 5185-5198 页, 10.18653/v1/2020.acl-main.463。
3 Gary Miner、Dursun Delen、John Elder、Andrew Fast、Thomas Hill 和 Robert A. Nisbet,《非结构化文本数据应用的实用文本挖掘和统计分析》,Academic Press,2012 年。
4 Christopher Manning 和 Hinrich Schütze, 《统计自然语言处理基础》,麻省理工学院出版社,1999 年。
5 Martin Porter,“后缀剥离算法”, 程序:电子图书馆和信息系统,第 14 卷,第 3 期,1980 年,第 130-137 页, https://www.emerald.com/insight/content/doi/10.1108/eb046814/full/html。Martin Porter,“Snowgate:一种用于词干算法的语言”,2001 年, https://snowallstem.org/texts/introduction.html。
6 Nitin Indurkhya 和 Fred Damerau, 自然语言处理手册,第 2 版 ,CRC Press,2010 年。Christopher Manning 和 Hinrich Schütze, 统计自然语言处理基础,麻省理工学院出版社,1999 年。
7 Janez Brank、Dunja Mladenic 和 Marko Grobelnik,“文本挖掘中的特征构造”,《机器学习与数据挖掘百科全书》,Springer,2017 年。
8 Abed Alhakim Freihat、Gábor Bella、Mourad Abbas、Hamdy Mubarak 和 Fausto Giunchiglia,“ALP:阿拉伯语言管道”,《自然语言和语音处理分析与应用》,2022 年,第 67-99 页,https://link .springer.com/chapter/10.1007/978-3-031-11035-1_4。Abdul Jabbar、Sajid Iqbal、Manzoor Ilahi Tamimy、Shafiq Hussain 和 Adnan Akhunzada,“文本词干提取算法的经验评估和研究”,《人工智能评论》,第53 卷,2020 年,第 5559–5588 页,https://link.springer.com/article/10.1007/s10462-020-09828-3。Abed Alhakim Freihat、Mourad Abbas、G'abor Bella、Fausto Giunchiglia,“寻求阿拉伯语词形还原的最佳解决方案”,Procedia Computer Science,第 142 卷,2018 年,第 132-140 页,https://www.sciencedirect.com/science/article/pii/S1877050918321707?via%3Dihub。
9 Chris Paice,“词干提取”, 数据库系统百科全书,Springer,2020 年。