文本、句子、单词分词工作原理?

2025年3月17日 | 阅读 3 分钟

自然语言处理(NLP)是计算机科学的一个领域,同时也是人工智能、信息工程和人机交互的领域。该领域的重点是让计算机能够处理和分析海量的自然语言数据。这并不容易,因为理解和阅读语言的过程比乍看起来要复杂得多。

分词是将文本字符串分解为一系列词元的(token)过程。用户可以将词元视为不同的部分,例如,单词可以是一个句子中的词元,而句子可以是段落中的一个词元。

本教程的关键要素

  • 文本分句。分词
  • 单词分句 分词
  • 使用正则表达式进行句子分词
How does Tokenizing Text, Sentence, Words Works

句子分词

句子分词用于将段落中的句子进行分割。

代码 1

输出

['Hello everyone.', 'Welcome to Javatpoint.', 'We are studying NLP Tutorial']

“sent_tokenize”如何工作?

sent_tokenize 函数使用 nltk.tokenize.punkt 模块中的 PunktSentenceTokenizer 实例,该实例已经过训练,因此以标记句子开始和结束的字符和标点符号而闻名。

PunktSentenceTokenizer -

PunktSentenceTokenizer 主要用于少量数据,因为它难以处理大量数据。

代码 2

输出

['Hello everyone.', 'Welcome to Javatpoint.', 'We are studying NLP Tutorial']

分词不同语言的句子

我们可以通过使用英语以外任何其他语言的 pickle 文件来分词各种语言的句子。

代码 3

输出

['Hola a todos.',
 'Bienvenido a JavatPoint.',
 'Estamos estudiando PNL Tutorial']

词语分词

单词分词用于将句子中的单词进行分割。

代码 4

输出

['Hello',
 'everyone',
 '.',
 'Welcome',
 'to',
 'Javatpoint',
 '.',
 'We',
 'are',
 'studying',
 'NLP',
 'Tutorial']

“word_tokenize”如何工作?

word_tokenize() 函数基本上是一个包装函数,用于调用 tokenize() 函数,后者是 TreebankWordTokenizer 类的实例。

使用 TreebankWordTokenizer

代码 5

输出

['Hello',
 'everyone.',
 'Welcome',
 'to',
 'Javatpoint.',
 'We',
 'are',
 'studying',
 'NLP',
 'Tutorial']

这些分词器通过分隔标点符号和空格来操作单词。这允许用户选择如何在处理过程中处理标点符号。正如我们在上面代码的输出中看到的,它并没有去除标点符号。

PunktWordTokenizer

PunktWordTokenizer 不会将标点符号与单词分开。

代码 6

输出

['Let', "'s", 'see', 'how', 'it', "'s", 'working', '.']

WordPunctTokenizer

WordPunctTokenizer 用于将标点符号与单词分开。

代码 7

输出

['Hello',
 'everyone',
 '.',
 'Welcome',
 'to',
 'Javatpoint',
 '.',
 'We',
 'are',
 'studying',
 'NLP',
 'Tutorial']

使用正则表达式

代码 8

输出

['Hello',
 'everyone',
 'Welcome',
 'to',
 'Javatpoint',
 'We',
 'are',
 'studying',
 'NLP',
 'Tutorial']

结论

在本教程中,我们讨论了 NLTK 库中用于分词英语以及使用 pickle 方法分词不同语言的句子和单词的各种函数和模块。