codecamp

AI智能 标记化,词干化和词形化的概念

在本节中,我们将了解什么是标记化,词干化和词形化。

1. 标记化

它可以被定义为将给定文本即字符序列分成称为令牌的较小单元的过程。令牌可以是单词,数字或标点符号。 它也被称为分词。 以下是标记化的一个简单示例 -

输入 - 芒果,香蕉,菠萝和苹果都是水果。

输出 -

img

打断给定文本的过程可以通过查找单词边界来完成。 单词的结尾和新单词的开头称为单词边界。 文字的书写体系和印刷结构会影响边界。

在 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

2. 词干

在处理文字时,由于语法原因,我们遇到了很多变化。 这里的变化的概念意味着必须处理像:democracy, democraticdemocratization 等不同形式的相同词汇。机器非常需要理解这些不同的单词具有相同的基本形式。 通过这种方式,在分析文本的同时提取单词的基本形式将会很有用。

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

在Python NLTK模块中,有一些与 stemming 相关的其它包。 这些包可以用来获取单词的基本形式。 这些软件包使用算法。 一些软件包如下所示 -

PorterStemmer包

这个 Python 包使用 Porter 算法来提取基础表单。可以使用下面的 Python 代码来这个包 -

from nltk.stem.porter import PorterStemmer

例如,如果将 writing 这个词作为这个词干的输入,它们就会在词干之后得到 write 这个词。

LancasterStemmer 包

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

from nltk.stem.lancaster import LancasterStemmer

例如,如果将 writing 这个词作为这个词干的输入,它们就会在词干之后得到 write 这个词。

SnowballStemmer 包

这个 Python 包将使用雪球算法来提取基本形式。 可以使用下面的 Python 代码来导入这个包 -

from nltk.stem.snowball import SnowballStemmer

例如,如果将 writing 这个词作为这个词干的输入,它们就会在词干之后得到 write 这个词。

所有这些算法都有不同程度的严格性。 如果比较这三个词干的话,那么波特词干是最不严格的,兰卡斯特词干是最严格的。 雪球词干在速度和严格性方面都很好用。

词形还原

也可以通过词形化来提取单词的基本形式。 它基本上通过使用词汇的词汇和形态分析来完成这项任务,通常旨在仅删除变元结尾。 任何单词的这种基本形式都称为引理。

词干化和词性化的主要区别在于词汇的使用和形态分析。 另一个区别是,词干最常见的是崩溃派生相关的词汇,而词素化通常只会折拢引理的不同的折点形式。 例如,如果提供单词 saw 作为输入词,那么词干可能会返回单词 's',但词形化会尝试返回单词,看看或看到取决于使用该单词是动词还是名词。

在 Python NLTK 模块中,有以下与词形化过程有关的包,可以使用它来获取词的基本形式 -

WordNetLemmatizer 包

这个Python包将提取单词的基本形式,取决于它是用作名词还是动词。 可以使用下面的 Python 代码的来导入这个包 -

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

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

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; }