【基础】文本预处理技术:分词、停用词过滤与词性标注
发布时间: 2024-06-25 05:46:14 阅读量: 110 订阅数: 118
![【基础】文本预处理技术:分词、停用词过滤与词性标注](https://img-blog.csdnimg.cn/2123f147e3e842dca9de262b23086418.png)
# 1. 文本预处理概述
文本预处理是自然语言处理(NLP)中至关重要的一步,它为后续的NLP任务做好准备,提高处理效率和准确性。文本预处理涉及一系列技术,包括分词、停用词过滤、词性标注等,旨在将原始文本转换为适合机器处理的格式。
# 2. 分词技术
分词是文本预处理中的一项重要技术,其目的是将连续的文本序列分割成有意义的词或词组,为后续的文本处理任务提供基础。分词技术主要分为基于规则的分词和基于统计的分词两大类。
### 2.1 基于规则的分词
基于规则的分词是根据预先定义的规则对文本进行分割。规则可以是正则表达式或词典。
#### 2.1.1 正则表达式分词
正则表达式分词使用正则表达式来匹配文本中的词或词组。正则表达式是一种强大的模式匹配语言,可以灵活地定义复杂的匹配规则。
```python
import re
text = "自然语言处理是人工智能的一个分支"
pattern = r"[\u4e00-\u9fa5]+"
result = re.findall(pattern, text)
print(result)
```
**代码逻辑逐行解读:**
1. `import re`:导入 Python 的正则表达式库。
2. `text = "自然语言处理是人工智能的一个分支"`:定义要分词的文本。
3. `pattern = r"[\u4e00-\u9fa5]+"`:定义正则表达式模式,匹配中文汉字。
4. `result = re.findall(pattern, text)`:使用 `findall()` 函数匹配文本中的所有符合模式的子串。
5. `print(result)`:打印分词结果。
**参数说明:**
* `pattern`:正则表达式模式。
* `text`:要分词的文本。
#### 2.1.2 词典分词
词典分词使用预先构建的词典来分割文本。词典中包含了大量的词语及其词性信息。
```python
import jieba
text = "自然语言处理是人工智能的一个分支"
result = jieba.cut(text)
print('/'.join(result))
```
**代码逻辑逐行解读:**
1. `import jieba`:导入 Python 的结巴分词库。
2. `text = "自然语言处理是人工智能的一个分支"`:定义要分词的文本。
3. `result = jieba.cut(text)`:使用 `cut()` 函数对文本进行分词。
4. `print('/'.join(result))`:打印分词结果,以 `/` 分隔。
**参数说明:**
* `text`:要分词的文本。
### 2.2 基于统计的分词
基于统计的分词使用统计模型来识别文本中的词或词组。统计模型可以是 N-gram 模型或隐马尔可夫模型。
#### 2.2.1 N-gram模型
N-gram 模型将文本序列划分为连续的 N 个字符或词语的子序列,并计算每个子序列出现的频率。频率较高的子序列更有可能是词或词组。
```python
from nltk.util import ngrams
text = "自然语言处理是人工智能的一个分支"
n = 2
result = list(ngrams(text, n))
print(result)
```
**代码逻辑逐行解读:**
1. `from nltk.util import ngrams`:导入 N-gram 函数。
2. `text = "自然语言处理是人工智能的一个分支"`:定义要分词的文本。
3. `n = 2`:设置 N-gram 的大小为 2。
4. `result = list(ngrams(text, n))`:使用 `ngrams()` 函数生成 N-gram。
5. `print(result)`:打印 N-gram 结果。
**参数说明:**
* `text`:要分词的文本。
* `n`:N-gram 的大小。
#### 2.2.2 隐马尔可夫模型
隐马尔可夫模型(HMM)将文本序列视为一个隐藏的马尔可夫链,其中每个状态代表一个词或词组。HMM 通过计算状态转移概率和观测概率来识别词或词组。
```python
import hmmlearn
text = "自然语言处理是人工智能的一个分支"
```
0
0