python人工智能 TF-IDF NLP 特征提取 : 用 TF-IDF 实现一个 NLP 特征提取 任务,代码方案分享
程序背景与用途:
这个程序旨在使用TF-IDF(Term Frequency-Inverse Document Frequency)算法实现自然语言处理(NLP)中的特征提取任务。TF-IDF是一种常用的文本特征提取方法,它可以通过计算文档中每个词的重要性来量化文本的特征。在本程序中,我们将使用TF-IDF算法提取文本数据中的关键词,并计算它们的权重。
代码结构:
- 数据预处理:我们将首先对原始文本数据进行预处理,包括文本清洗、分词和去除停用词等操作。
- 构建词典:接下来,我们将构建一个词典,将文本数据中的所有词语收集起来,并为每个词语分配一个唯一的索引。
- 计算TF:然后,我们将计算每个文档中每个词语的词频(TF)值。
- 计算IDF:接着,我们将计算每个词语的逆文档频率(IDF)值。
- 计算TF-IDF:最后,我们将使用TF和IDF的值计算每个文档中每个词语的TF-IDF权重。
以下是一个示例代码,用于实现TF-IDF特征提取任务:
import numpy as np
from sklearn.feature_extraction.text import TfidfVectorizer
# 原始文本数据
documents = [
"I love coding",
"Machine learning is fascinating",
"Python is my favorite programming language",
"I enjoy building intelligent systems"
]
# 数据预处理
# 这里简化处理,直接使用空格进行分词,并不进行停用词去除等操作
preprocessed_documents = [doc.lower() for doc in documents]
# 构建词典
vectorizer = TfidfVectorizer()
X = vectorizer.fit_transform(preprocessed_documents)
# 获取词语列表
words = vectorizer.get_feature_names()
# 打印词典
print("Vocabulary:")
for idx, word in enumerate(words):
print(f"{idx}: {word}")
# 计算TF-IDF
tfidf_matrix = X.toarray()
# 打印TF-IDF权重
print("TF-IDF Matrix:")
for doc_idx, doc in enumerate(tfidf_matrix):
print(f"Document {doc_idx}:")
for word_idx, weight in enumerate(doc):
print(f"\t{words[word_idx]}: {weight}")
代码解释:
- 导入所需的库,包括numpy和sklearn中的TfidfVectorizer。
- 定义原始文本数据。这里提供了一个简单的示例,包含四个文档。
- 对原始文本数据进行预处理,将文本转换为小写,并进行分词(这里简化处理,直接使用空格进行分词)。
- 创建TfidfVectorizer对象,用于构建词典并计算TF-IDF。
- 使用fit_transform方法将预处理后的文本数据转换为TF-IDF矩阵X。
- 使用get_feature_names方法获取词语列表,即词典中的所有词语。
- 打印词典,输出每个词语及其对应的索引。
- 将TF-IDF矩阵转换为二维数组tfidf_matrix。
- 打印TF-IDF权重,输出每个文档中每个词语的权重。
这样,我们就通过TF-IDF算法成功提取了文本数据的特征,并计算了每个词语的权重。
NLP 自然语言处理 词袋模型 如何实现(Bag-of-Words)?基本原理是什么?相比于传统智能技术它有哪些优缺点?有哪些开源技术框架支持?哪些编程语言可以支持开发?基本开发流程分享(图文详解1)