文本型数据预处理+代码

处理文本数据通常涉及多个步骤,包括文本清洗、分词、去除停用词等,是NLP的基础工作。

1、文本清洗

文本清洗包括去除特殊字符、转换为小写、处理缩写等。
标准化则可能包括拼写纠正和词形还原。

import re  # 正则
import nltk # 自然语言处理包
from nltk.tokenize import word_tokenize
from nltk.corpus import stopwords
from nltk.stem import WordNetLemmatizer

# 数据包加载成功
nltk.download('XXX')

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

 # 去除特殊字符和数字
text = re.sub(r'[^a-zA-Z\s]', '', text)   
# 分词
tokens = word_tokenize(text)
    
# 去除停用词
stop_words = set(stopwords.words('english'))
tokens = [token for token in tokens if token not in stop_words]
    
# 词形还原
lemmatizer = WordNetLemmatizer()
tokens = [lemmatizer.lemmatize(token) for token in tokens]
text = ' '.join(tokens)

2、词袋模型(Bag of Words)和和TF-IDF(Term Frequency-Inverse Document Frequency)

词袋模型和TF-IDF是文本分析中常用的两种方法,用于将文本数据转换为数值形式,以便进行机器学习建模。

2.1 词袋模型

词袋模型是一种简单的文本表示方法,它将文本转换为一个长向量,其中每个维度对应一个唯一的单词,向量的值表示该单词在文本中出现的频率。

代码示例

from sklearn.feature_extraction.text import CountVectorizer

# 示例文本
texts = [
    "The quick brown fox jumps over the lazy dog",
    "I love watching the quick brown fox",
    "The dog was lazy and the fox was quick"
]

# 创建词袋模型
vectorizer = CountVectorizer()
X = vectorizer.fit_transform(texts)

# 查看特征名称
print(vectorizer.get_feature_names_out())

# 查看词袋模型矩阵
print(X.toarray())

2.2 TF-IDF

TF-IDF 是一种改进的词袋模型,它不仅考虑单词在单个文档中的频率(TF),还考虑单词在整个文档集合中的稀有程度(IDF)。TF-IDF 值越高,表示单词在文档中越重要。

代码示例

from sklearn.feature_extraction.text import TfidfVectorizer

# 示例文本
texts = [
    "The quick brown fox jumps over the lazy dog",
    "I love watching the quick brown fox",
    "The dog was lazy and the fox was quick"
]

# 创建TF-IDF模型
vectorizer = TfidfVectorizer()
X = vectorizer.fit_transform(texts)

# 查看特征名称
print(vectorizer.get_feature_names_out())

# 查看TF-IDF矩阵
print(X.toarray())
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • """1.个性化消息: 将用户的姓名存到一个变量中,并向该用户显示一条消息。显示的消息应非常简单,如“Hello ...
    她即我命阅读 8,690评论 0 5
  • 为了让我有一个更快速、更精彩、更辉煌的成长,我将开始这段刻骨铭心的自我蜕变之旅!从今天开始,我将每天坚持阅...
    李薇帆阅读 6,268评论 1 4
  • 似乎最近一直都在路上,每次出来走的时候感受都会很不一样。 1、感恩一直遇到好心人,很幸运。在路上总是...
    时间里的花Lily阅读 5,401评论 1 3
  • 1、expected an indented block 冒号后面是要写上一定的内容的(新手容易遗忘这一点); 缩...
    庵下桃花仙阅读 3,715评论 0 1
  • 一、工具箱(多种工具共用一个快捷键的可同时按【Shift】加此快捷键选取)矩形、椭圆选框工具 【M】移动工具 【V...
    墨雅丫阅读 3,669评论 0 0

友情链接更多精彩内容