codecamp

AI智能 分词、词干提取和词形还原的概念

在本节中,我们将理解什么是分词、词干提取和词形还原。

分词(Tokenization)

它可以被定义为将给定文本(即字符序列)分解成称为词元(tokens)的较小单元的过程。词元可以是单词、数字或标点符号。它也被称为单词分割(word segmentation)。以下是分词的简单示例:

输入 – Mango, banana, pineapple and apple all are fruits.(芒果、香蕉、菠萝和苹果都是水果。)

输出

分词过程可以通过定位单词边界来完成。一个单词的结尾和新单词的开始称为单词边界。单词的书写系统和排版结构会影响这些边界。

在 Python NLTK 模块中,我们有与分词相关的不同包,我们可以使用它们根据需求将文本分成词元。其中一些包如下:

sent_tokenize 包

顾名思义,这个包将把输入文本分成句子。我们可以使用以下 Python 代码导入这个包:

from nltk.tokenize import sent_tokenize

word_tokenize 包

这个包将输入文本分成单词。我们可以使用以下 Python 代码导入这个包:

from nltk.tokenize import word_tokenize

WordPunctTokenizer 包

这个包将输入文本分成单词以及标点符号。我们可以使用以下 Python 代码导入这个包:

from nltk.tokenize import WordPuncttokenizer

词干提取(Stemming)

在处理单词时,由于语法原因,我们会遇到很多变体。这里的变体概念意味着我们必须处理同一单词的不同形式,如 democracy(民主)、democratic(民主的)、democratization(民主化)。对于机器学习项目来说,机器理解这些不同单词具有相同的基本形式是非常重要的。这样,在分析文本时提取单词的基本形式将会非常有用。

我们可以通过词干提取来实现这一点。通过这种方式,我们可以说词干提取是一种启发式过程,通过切掉单词的末尾来提取单词的基本形式。

在 Python NLTK 模块中,我们有与词干提取相关的不同包。这些包可以用来获取单词的基本形式。这些包使用算法。其中一些包如下:

PorterStemmer 包

这个 Python 包使用 Porter 算法来提取基本形式。我们可以使用以下 Python 代码导入这个包:

from nltk.stem.porter import PorterStemmer

例如,如果我们向这个词干提取器输入单词 'writing'(写),经过词干提取后我们将得到单词 'write'

LancasterStemmer 包

这个 Python 包将使用 Lancaster 算法来提取基本形式。我们可以使用以下 Python 代码导入这个包:

from nltk.stem.lancaster import LancasterStemmer

例如,如果我们向这个词干提取器输入单词 'writing'(写),经过词干提取后我们将得到单词 'writ'

SnowballStemmer 包

这个 Python 包将使用 Snowball 算法来提取基本形式。我们可以使用以下 Python 代码导入这个包:

from nltk.stem.snowball import SnowballStemmer

例如,如果我们向这个词干提取器输入单词 'writing'(写),经过词干提取后我们将得到单词 'write'

所有这些算法都有不同的严格程度。如果我们比较这三个词干提取器,Porter 词干提取器是最不严格的,Lancaster 是最严格的。Snowball 词干提取器在速度和严格程度方面都是不错的选择。

词形还原(Lemmatization)

我们也可以通过词形还原来提取单词的基本形式。它基本上是通过使用词汇表形态分析来完成这项任务的,通常旨在只去除屈折词尾。任何单词的这种基本形式称为词元(lemma)

词干提取和词形还原的主要区别在于词汇表和形态分析的使用。另一个区别是,词干提取通常会将派生相关的单词合并,而词形还原通常只合并一个词元的不同屈折形式。例如,如果我们提供单词 saw 作为输入单词,词干提取可能会返回单词 's',但词形还原会根据该词元是用作动词还是名词,尝试返回单词 seesaw

在 Python NLTK 模块中,我们有以下与词形还原过程相关的包,我们可以使用它来获取单词的基本形式:

WordNetLemmatizer 包

这个 Python 包将根据单词是用作名词还是动词来提取单词的基本形式。我们可以使用以下 Python 代码导入这个包:

from nltk.stem import WordNetLemmatizer
AI人工智能 下载 NLTK 的数据
AI人工智能 分块(Chunking):将数据分成块
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

AI人工智能监督学习(回归)

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }