2、NLP文本预处理技术:词干提取和词形还原

一、说明

在上一篇文章中,我们解释了文本预处理的重要性,并解释了一些文本预处理技术。在本文中,我们将介绍词干提取和词形还原主题。
词干提取和词形还原是两种文本预处理技术,用于将单词还原为其基本形式或词根形式。这些技术的主要目标是减少文本文档中唯一单词的数量,使其更易于分析和理解。

它们广泛用于搜索引擎和标记。搜索引擎使用词干来索引单词。因此,搜索引擎可能只存储其词根,而不是存储单词的所有形式。通过这种方式,词干提取可以减少索引的大小并提高检索准确性。

让我们深入学习一下它们吧!

二、词干提取和词形还原

词干提取涉及从单词中删除后缀以获得其基本形式,而词形还原涉及将单词转换为其形态基本形式。

与词形还原相比,词干提取是一种更简单 、**更快速的技术。**它使用一组规则或算法来删除后缀并获得单词的基本形式。然而,词干提取有时会产生无效的基本形式,在这种情况下,它也可能导致歧义。

另一方面,词形还原是一种更复杂的技术,它使用词汇和形态分析来确定单词的基本形式。词形还原比词干提取更 且更复杂。它生成可以在字典中找到的有效基本形式,使其比词干提取更准确。

当单词的含义对分析不重要 时,首选词干提取。例如:垃圾邮件检测

当单词的含义对于分析很重要 时,建议进行词形还原。例如:问题解答

三、Porter & Zemberek词干提取

Porter词干提取算法是最常见的词干提取算法之一,其主要目的是删除和替换众所周知的英语单词后缀。

如果您想用土耳其语进行操作,在土耳其语中查找词根的最常见算法被称为" Zemberek "。Zemberek 是一个自然语言处理库,可以根据土耳其语的语言结构和词法分离词根和后缀。

尽管波特词干算法是针对英语文本开发的,但它可以适应不同的语言。然而,使用专门针对不同语言(例如土耳其语)设计的自然语言处理工具和算法更为有效,因为它们并不能完全适应该语言的特点。

Zemberek 在理解和处理土耳其语丰富的形态结构方面更加成功,因此在土耳其语文本上给出了更好的结果。因此,更常见的是选择 Zemberek 等特定于语言的工具来进行土耳其语的语言处理和寻根任务。

我将在另一篇文章中更详细地介绍"Zemberek"主题。

让我们看看波特词干算法是如何工作的:

ba 复制代码
from nltk.stem.porter import PorterStemmer

stemmer = PorterStemmer()
 
def stem_words(text):
    word_tokens = text.split()
    stems = [stemmer.stem(word) for word in word_tokens]
    return stems
 
text = 'text preprocessing techniques for natural language processing by Aysel Aydin'
stem_words(text)

输出:

ba 复制代码
['text',
 'preprocess',
 'techniqu',
 'for',
 'natur',
 'languag',
 'process',
 'by',
 'aysel',
 'aydin']

现在让我们考虑"词形还原"的主题

在我们的词形还原示例中,我们将使用一种流行的词形还原器,称为WordNet词形还原器。

WordNet 是英语单词关联数据库,也是英语词形还原的有用资源。然而,土耳其语中没有与此源直接等效的工具,Zemberek 等特定于语言的工具更适合土耳其语文本的词形化。

正如我上面提到的,我将在另一篇文章中更详细地讨论"Zemberek"主题。

让我们编码并应用词形还原。

ba 复制代码
from nltk.stem import WordNetLemmatizer

lemmatizer = WordNetLemmatizer()

def lemmatize_word(text):
    word_tokens = text.split()
    lemmas = [lemmatizer.lemmatize(word, pos ='v') for word in word_tokens]
    return lemmas
 
text = 'text preprocessing techniques for natural language processing by Aysel Aydin'
lemmatize_word(text)

输出:

ba 复制代码
['text',
 'preprocessing',
 'techniques',
 'for',
 'natural',
 'language',
 'process',
 'by',
 'Aysel',
 'Aydin']

四、总结

总而言之,词干提取和词形还原是帮助我们进行自然语言处理的文本预处理的方法。它们都旨在将词形变化减少到共同的基本词根,但各自采取不同的方法来做到这一点。

在某些情况下,词干提取可能比词形还原产生更好的结果,而在其他情况下,词形还原可能更准确。因此,在选择文本规范化技术时,必须权衡简单性、速度和准确性之间的权衡。

相关推荐
李少兄16 小时前
HTML 表单控件
前端·microsoft·html
学习笔记10117 小时前
第十五章认识Ajax(六)
前端·javascript·ajax
消失的旧时光-194317 小时前
Flutter 异步编程:Future 与 Stream 深度解析
android·前端·flutter
曹牧17 小时前
C# 中的 DateTime.Now.ToString() 方法支持多种预定义的格式字符
前端·c#
勿在浮沙筑高台17 小时前
海龟交易系统R
前端·人工智能·r语言
歪歪10017 小时前
C#如何在数据可视化工具中进行数据筛选?
开发语言·前端·信息可视化·前端框架·c#·visual studio
Captaincc18 小时前
AI 能帮你写代码,但把代码变成软件,还是得靠人
前端·后端·程序员
吃饺子不吃馅20 小时前
如何设计一个 Canvas 事件系统?
前端·canvas·图形学
theOtherSky20 小时前
element+vue3 table上下左右键切换input和select
javascript·vue.js·elementui·1024程序员节
Baklib梅梅20 小时前
无头内容管理系统:打造灵活高效的多渠道内容架构
前端·ruby on rails·前端框架·ruby