Python 中的文本预处理技术详解

文本预处理概述

文本处理是自然语言处理(NLP)的核心组成部分。它帮助我们清洗原始文本数据,并将其转换为适合进行分析和机器学习的格式。

  • 包括大小写转换、分词和去除噪声
  • 处理标点符号、停用词和多余的空格
  • 提高模型的准确性和一致性
  • 通常使用 Python 和 NLP 库来完成

!<a href="https://media.geeksforgeeks.org/wp-content/uploads/20250924153111948541/textprocessing.webp">textprocessingText Preprocessing

下面介绍一些在 Python 中常用的文本预处理技术。

1. 将文本转换为小写

我们将文本转换为小写,以减少文本数据的词汇表大小,从而让模型更容易学习。

Python


CODEBLOCK_419d3121

Output

hey, did you know that the summer break is coming? amazing right !! it‘s only 5 more days !!

2. 移除数字

我们可以选择移除数字,或者将数字转换为其文本表示形式。要移除数字,我们可以使用正则表达式。

Python


CODEBLOCK_5e11e53c

Output

There are  balls in this bag, and  in the other one.

3. 将数字转换为单词

我们也可以将数字转换为单词。这可以通过使用 inflect 库来实现。

Python


CODEBLOCK_dd323fa6

Output

> There are three balls in this bag and twelve in the other one.

4. 移除标点符号

我们移除标点符号,以免同一个单词因标点不同而被视为不同的形式。例如,如果不移除标点,"been."、"been," 和 "been!" 将被区别对待。

Python


CODEBLOCK_07f0aab7

Output

Hey did you know that the summer break is coming Amazing right  Its only 5 more days

5. 移除多余的空白字符

我们可以使用 INLINECODE7a3fdc68 和 INLINECODE5708ac1d 函数来移除字符串中的所有多余空格。

Python


CODEBLOCK_97ec4e16

Output

we don‘t need the given questions

6. 移除停用词

停用词是指那些对句子语义贡献不大的词,因此可以将它们移除。NLTK 库包含了一套停用词列表,我们可以使用这些词来从文本中去除停用词。下面是 NLTK 中可用的停用词列表的一部分。

!image

Python


CODEBLOCK_011320eb

Output

> [‘sample‘, ‘sentence‘, ‘going‘, ‘remove‘, ‘stopwords‘, ‘.‘]

7. 词干提取

词干提取是获取单词词根形式的过程。词干是附加了词缀(如 -ed, -ize, -de, -s 等)的部分。通过去除单词的前缀或后缀来创建词干。
Examples:

> books –> book

> looked –> look

> denied –> deni

> flies –> fli

词干提取主要有三种算法:Porter Stemmer、Snowball Stemmer 和 Lancaster Stemmer。其中 Porter Stemmer 是最常用的。

Python


CODEBLOCK_a8a1eee7

Output

> [‘data‘, ‘scienc‘, ‘use‘, ‘scientif‘, ‘method‘, ‘algorithm‘, ‘and‘, ‘mani‘, ‘type‘, ‘of‘, ‘process‘]

8. 词形还原

词形还原是一种 NLP 技术,旨在将单词还原为其词典中的基本形式。这有助于文本分析和搜索任务,因为它允许我们比较具有不同形式但语义相关的单词。

Python


CODEBLOCK_32bf0489

Output

> [‘The‘, ‘study‘, ‘of‘, ‘data‘, ‘science‘, ‘are‘, ‘study‘, ‘data‘, ‘.‘]

9. 词性标注 (POS Tagging)

词性标注是根据定义和上下文将单词分配到特定词性(如名词、动词、形容词等)的过程。NLTK 库提供了方便的函数来实现这一点。

Python


CODEBLOCK_6501e013

Output

> [(‘Data‘, ‘NNS‘), (‘science‘, ‘NN‘), (‘is‘, ‘VBZ‘), (‘fun‘, ‘NN‘), (‘.‘, ‘.‘)]

10. 分块

分块是找出名词短语的过程。我们可以使用词性标注的结果来进行分块。我们可以定义自己的语法规则来识别短语。

Python


CODEBLOCK_b02f8879

Output

> (S

> Apple/NNP

> is/VBZ

> looking/VBG

> at/IN

> buying/VBG

> (GPE U.K./NNP)

> startup/NN

> for/IN

> $/$

> 1/CD

> billion/CD

> ./.)

11. 命名实体识别 (NER)

命名实体识别是识别文本中特定类别(如人名、地名、组织名等)实体的过程。NLTK 提供了一个预训练的分类器来进行识别。

Python


CODEBLOCK_63e9c476

Output

> (S

> (PERSON Elon/NNP Musk/NNP)

> is/VBZ

> the/DT

> CEO/NNP

> of/IN

> (ORGANIZATION SpaceX/NNP)

> ./.)

12. 处理缩写词

处理缩写词(如 "don‘t", "I‘m")是文本预处理中重要的一步。我们可以使用字典映射或专门的库来将它们展开为完整形式("do not", "I am"),这有助于后续的词干提取或语义分析。

Python


CODEBLOCK_48a98b3f

Output

I do not think it is working.

13. 拼写纠错

拼写纠错能将错误的拼写转换为正确的拼写(例如 "cmputr" -> "computer")。我们可以使用 textblob 库来实现这一功能。

Python


CODEBLOCK_a54eccb7

Output

I love data science

14. 词袋模型

词袋模型是一种将文本转换为数字向量的常用方法。它统计文本中每个词的出现频率,忽略语法和词序,但保留多义性。

Python


CODEBLOCK_533e094e

Output

[‘and‘ ‘document‘ ‘first‘ ‘is‘ ‘one‘ ‘second‘ ‘the‘ ‘third‘ ‘this‘]
[[0 1 1 1 0 0 1 0 1]
 [0 2 0 1 0 1 1 0 1]
 [1 0 0 1 1 0 1 1 1]
 [0 1 1 1 0 0 1 0 1]]
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。如需转载,请注明文章出处豆丁博客和来源网址。https://shluqu.cn/37444.html
点赞
0.00 平均评分 (0% 分数) - 0