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']

四、总结

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

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

相关推荐
凌冰_几秒前
Ajax 入门
前端·javascript·ajax
京东零售技术15 分钟前
京东小程序JS API仓颉改造实践
前端
奋飛24 分钟前
TypeScript系列:第六篇 - 编写高质量的TS类型
javascript·typescript·ts·declare·.d.ts
老A技术联盟25 分钟前
从小白入门,基于Cursor开发一个前端小程序之Cursor 编程实践与案例分析
前端·小程序
风铃喵游28 分钟前
构建引擎: 打造小程序编译器
前端·小程序·架构
sunbyte33 分钟前
50天50个小项目 (Vue3 + Tailwindcss V4) ✨ | ThemeClock(主题时钟)
前端·javascript·css·vue.js·前端框架·tailwindcss
小飞悟42 分钟前
🎯 什么是模块化?CommonJS 和 ES6 Modules 到底有什么区别?小白也能看懂
前端·javascript·设计
浏览器API调用工程师_Taylor42 分钟前
AOP魔法:一招实现登录弹窗的全局拦截与动态处理
前端·javascript·vue.js
FogLetter43 分钟前
初识图片懒加载:让网页像"懒人"一样聪明加载
前端·javascript
微客鸟窝44 分钟前
一文搞懂NVM管理Node.js:从安装到实战全攻略
前端