📜  Python | 用NLTK进行词干分析(1)

📅  最后修改于: 2023-12-03 15:19:02.966000             🧑  作者: Mango

Python | 用 NLTK 进行词干分析

在自然语言处理中,词干是指单词的基本形式或附加在末尾的结尾。词干提取是一种常见的文本规范化处理,被用于文本挖掘和信息检索。Python 的 NLTK(自然语言工具包)可以用来进行词干分析。下面将介绍如何使用 NLTK 进行词干分析。

1. 安装 NLTK

如果您还没有安装 NLTK,请先安装它。可以使用以下命令来安装 NLTK:

pip install nltk
2. 导入必要的模块

在使用 NLTK 进行词干分析之前,首先需要导入必要的模块:

import nltk
from nltk.stem import PorterStemmer
from nltk.corpus import stopwords
  • nltk:包括用于处理自然语言的各种工具和接口的软件库。
  • PorterStemmer:这个类提供了 Porter 词干分析算法的实现。Porter 词干算法是一种常见的词干算法。
  • stopwords:停用词是指在文本分析中没有意义的常用词汇,例如“a”,“an”,“the”等。可以使用 stopwords 模块从 NLTK 下载停用词。
3. 解析文本

在进行词干分析之前,需要解析需要进行分析的文本。下面给出一个简单的例子:

text = """Hello, my name is John. I am a software engineer. 
           I love programming and I am always eager to learn new things."""
4. 文本预处理

在进行词干分析之前,需要预处理文本。这个过程包括:将文本转换为小写、删除停用词、删除标点符号等。

# 将文本转换为小写
text = text.lower()

# 删除标点符号
text = ''.join([i for i in text if i not in string.punctuation])

# 删除停用词
stop_words = set(stopwords.words('english'))
word_tokens = word_tokenize(text)
filtered_text = [word for word in word_tokens if word not in stop_words]
  • string.punctuation:包含所有标点符号的字符串。
  • word_tokenizenltk 工具的一部分,用于将文本拆分成单词。
5. 进行词干分析

现在,我们已经准备好进行词干分析了。以下是一个可以提取出文本中每个单词的词干的简单代码:

ps = PorterStemmer()
stemmed_text = [ps.stem(word) for word in filtered_text]
  • PorterStemmer:这个类提供了 Porter 词干分析算法的实现。Porter 词干算法是一种常见的词干算法。
6. 整合代码片段
import nltk
from nltk.stem import PorterStemmer
from nltk.corpus import stopwords
import string

# 解析文本
text = """Hello, my name is John. I am a software engineer. 
           I love programming and I am always eager to learn new things."""

# 将文本转换为小写
text = text.lower()

# 删除标点符号
text = ''.join([i for i in text if i not in string.punctuation])

# 删除停用词
stop_words = set(stopwords.words('english'))
word_tokens = nltk.word_tokenize(text)
filtered_text = [word for word in word_tokens if word not in stop_words]

# 进行词干分析
ps = PorterStemmer()
stemmed_text = [ps.stem(word) for word in filtered_text]

print(stemmed_text)

这个代码片段会输出以下结果:

['hello', 'name', 'john', 'softwar', 'engin', 'love', 'program', 'alway', 'eager', 'learn', 'new', 'thing']

这是每个单词的词干。