(2-3)文本预处理算法:去除停用词(Stopword Removal)

这篇具有很好参考价值的文章主要介绍了(2-3)文本预处理算法:去除停用词(Stopword Removal)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

2.3  去除停用词(Stopword Removal)

去除停用词(Stop Words)是自然语言处理中的一个常见任务,它旨在去除文本中的常见、无实际语义的词语,以便更准确地进行文本分析和处理。停用词通常包括像“a”、“an”、“the”、“in”、“on”等常见的词汇。

2.3.1  什么是停用词

停用词(Stop Words)是自然语言处理中的一类常见词汇,通常是一些在文本中频繁出现但通常被认为没有实际语义或信息价值的词汇。这些词汇通常包括常见的连接词、介词、冠词、代词和一些常见的动词等。

停用词的存在是因为它们在文本中广泛出现,但通常对文本分析和处理任务没有太多的信息价值,因为它们在不同的文本中都会出现。因此,去除这些停用词可以减少文本中的噪声,使文本处理更加准确和有效。

在现实应用中,一些常见的停用词包括:

  1. 冠词:a, an, the
  2. 介词:in, on, at, by
  3. 连接词:and, or, but
  4. 代词:I, you, he, she, it
  5. 助动词:is, am, are, have, has, do, does

停用词的具体列表可以根据不同的自然语言处理任务和语言而有所不同。去除停用词通常是文本预处理的一部分,以净化文本并减少在文本分析中的干扰。去除停用词后,文本分析算法可以更关注那些具有更高信息价值的词汇,从而提高文本处理的效率和准确性。

2.3.2  基于词汇列表的去除

最简单的去除停用词方法是使用预定义的停用词列表,将文本中包含在列表中的词汇去除。这些列表通常包括常见的连接词、介词、冠词等。例如下面是一个基于词汇列表的去除停用词例子。

实例2-13基于词汇列表的去除停用词(源码路径:daima/2/qu01.py

1首先,准备一个包含停用词的列表,例如:

stop_words = ["a", "an", "the", "in", "on", "at", "by", "and", "or", "but"]

(2)编写实例文件qu01.py,使用上面的停用词列表来去除文本中的停用词,具体实现代码如下所示。

# 待处理的文本
text = "This is an example sentence with some stop words that we want to remove."

# 将文本分词
words = text.split()

# 去除停用词
filtered_words = [word for word in words if word.lower() not in stop_words]

# 将处理后的单词列表重建为文本
filtered_text = " ".join(filtered_words)

# 显示原始文本和去除停用词后的文本
print(f"原始文本: {text}")
print(f"去除停用词后: {filtered_text}")

在上述代码中,首先定义了停用词列表 stop_words,然后将文本分词,并使用列表推导式去除其中包含在停用词列表中的词汇。最后,我们将处理后的单词列表重新组合成文本。执行后会输出

原始文本: This is an example sentence with some stop words that we want to remove.
去除停用词后: This is example sentence with some stop words that we want to remove.

2.3.3  基于词频的去除

基于词频的停用词去除方法旨在去除在文本中频率最高的词汇,因为这些词汇通常是停用词,对文本分析任务没有太多的信息价值。通常,文本中出现频率最高的词汇很可能是停用词,因此去除它们可以降低文本中的噪声。请看下面的例子,演示了使用基于词频的方法去除停用词的过程。

实例2-14使用基于词频的方法去除停用词(源码路径:daima/2/qu02.py

实例文件qu02.py的具体实现代码如下所示。

from collections import Counter

# 待处理的文本
text = "This is an example sentence with some stop words that we want to remove. This is a simple example."

# 将文本分词
words = text.split()

# 计算词汇的词频
word_freq = Counter(words)

# 按词频降序排序
sorted_word_freq = sorted(word_freq.items(), key=lambda x: x[1], reverse=True)

# 确定频率最高的词汇
most_common_words = [word for word, freq in sorted_word_freq[:5]]  # 假设保留前5个频率最高的词汇

# 去除频率最高的词汇
filtered_words = [word for word in words if word not in most_common_words]

# 将处理后的单词列表重建为文本
filtered_text = " ".join(filtered_words)

# 显示原始文本和去除停用词后的文本
print(f"原始文本: {text}")
print(f"去除停用词后: {filtered_text}")

在上述代码中,首先将文本分词并计算词汇的词频。然后,我们按词频降序排序词汇,并选择保留前5个频率最高的词汇作为停用词。最后,我们使用列表推导式去除文本中包含在停用词列表中的词汇,然后将处理后的单词列表重新组合成文本。执行后会输出

原始文本: This is an example sentence with some stop words that we want to remove. This is a simple example.
去除停用词后: with some stop words that we want to remove. a simple example.

2.3.4  TF-IDF算法去除

使用TF-IDF(Term Frequency-Inverse Document Frequency)算法来确定文本中词汇的重要性。根据TF-IDF值,可以去除在多个文档中频繁出现的词汇,因为这些词汇可能是停用词。请看下面的例子,演示了scikit-learn库使用TF-IDF算法去除停用词的过程。

实例2-15使用TF-IDF算法去除停用词(源码路径:daima/2/qu03.py

实例文件qu03.py的具体实现代码如下所示。

from sklearn.feature_extraction.text import TfidfVectorizer

# 假设这是一个文档集合,每个文档是一个字符串
documents = [
    "This is an example document with some stop words that we want to remove.",
    "Another document with stop words.",
    "One more example document.",
]

# 定义停用词列表
stop_words = ["this", "is", "an", "with", "some", "that", "we", "to", "and", "one", "more"]

# 使用TF-IDF向量化器
tfidf_vectorizer = TfidfVectorizer(stop_words=stop_words)

# 训练TF-IDF模型并进行转换
tfidf_matrix = tfidf_vectorizer.fit_transform(documents)

# 获取特征词汇
feature_names = tfidf_vectorizer.get_feature_names()

# 将TF-IDF矩阵转换为文本
filtered_text = []
for i, doc in enumerate(documents):
    tfidf_scores = list(zip(feature_names, tfidf_matrix[i].toarray()[0]))
    filtered_words = [word for word, tfidf in tfidf_scores if tfidf > 0.2]  # 通过阈值选择要保留的词汇
    filtered_text.append(" ".join(filtered_words))

# 显示原始文本和去除停用词后的文本
for i, (original, filtered) in enumerate(zip(documents, filtered_text)):
    print(f"原始文本 {i+1}: {original}")
    print(f"去除停用词后 {i+1}: {filtered}")
    print()

在上述代码中,使用scikit-learn的TF-IDF向量化器来将文档集合转化为TF-IDF特征矩阵。我们定义了一个停用词列表 stop_words,并在TF-IDF向量化器中使用它。然后,我们通过设置一个TF-IDF阈值来选择要保留的词汇,这可以根据文本特性进行调整。执行后会输出

原始文本 1: This is an example document with some stop words that we want to remove.
去除停用词后 1: document example remove stop want words

原始文本 2: Another document with stop words.
去除停用词后 2: another document stop words

原始文本 3: One more example document.
去除停用词后 3: document example

同上面的执行结果可知,已成功去除了停用词。原始文本中的停用词已被去除,留下了具有较高TF-IDF值的词汇。这个过程可以帮助减少文本中的噪声,提高文本分析的准确性。

2.3.5  机器学习方法去除

利用机器学习技术,可以训练模型来自动识别和去除停用词。这种方法需要标记文本中哪些词汇是停用词,然后使用分类器或聚类算法进行去除。使用机器学习方法去除停用词通常涉及训练一个二元分类器(停用词 vs. 非停用词),然后使用训练好的模型来预测文本中的词汇是否为停用词。下面是一个使用scikit-learn库的一个简单例子,使用朴素贝叶斯分类器来去除停用词。

实例2-16使用机器学习方法去除停用词(源码路径:daima/2/qu04.py

实例文件qu04.py的具体实现代码如下所示。

from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.naive_bayes import MultinomialNB

# 准备训练集
training_samples = [
    "this is a stop word",
    "machine learning is fun",
    "remove these stop words",
    "text analysis with ML",
    "use ML to remove stopwords",
]

# 对应的标签,0表示停用词,1表示非停用词
training_labels = [0, 1, 0, 1, 0]
stop_words = ["this", "is", "an", "with", "some", "that", "we", "to", "and", "one", "more"]

# 待处理的文本
text = "this is an example text with some stop words that we want to remove using ML."

# 使用TF-IDF向量化器
tfidf_vectorizer = TfidfVectorizer()
X_train = tfidf_vectorizer.fit_transform(training_samples)

# 训练朴素贝叶斯分类器
classifier = MultinomialNB()
classifier.fit(X_train, training_labels)

# 将待处理文本转化为TF-IDF特征向量
X_test = tfidf_vectorizer.transform([text])

# 使用分类器来预测词汇是否为停用词
predicted_label = classifier.predict(X_test)

# 如果预测标签为1(非停用词),则保留词汇
if predicted_label == 1:
    print("Original Text:", text)
    print("Processed Text:", text)
else:
    print("Original Text:", text)
    print("Processed Text:", " ".join([word for word in text.split() if word.lower() not in stop_words]))

在上述代码中,使用了一个简单的训练集,包括一些标记的停用词和非停用词样本。使用TF-IDF向量化器将文本转化为特征向量,然后使用朴素贝叶斯分类器进行训练。最后,我们使用训练好的分类器来预测待处理文本中的词汇是否为停用词,如果预测为停用词,则从文本中去除。执行后会输出文章来源地址https://www.toymoban.com/news/detail-855234.html

Original Text: this is an example text with some stop words that we want to remove using ML.
Processed Text: example text stop words want remove using ML.

未完待续

到了这里,关于(2-3)文本预处理算法:去除停用词(Stopword Removal)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 自然语言之文本预处理

    概念 分词就是将连续的字序列按照一定的规范重新组合成词序列的过程。在英文的行文中,单词之间是以空格作为自然分界符的,而中文只是字、句和段能通过明显的分界符来简单划界,唯独词没有一个形式上的分界符。分词过程就是找到这样分界符的过程. 作用 词作为语言

    2024年02月06日
    浏览(45)
  • 1 — NLP 的文本预处理技术

            在本文中,我们将讨论以下主题:1 为什么文本预处理很重要?2  文本预处理技术。这个文对预处理做一个完整化、程序化处理,这对NLP处理项目中有很大参考性。

    2024年02月07日
    浏览(36)
  • 文本NLP噪音预处理(加拼写检查)

    最近总结修改了下预处理方法,记录下  首先download需要的依赖  pyenchant 是用来检测拼写正确的,如果你的文本里面可能包含非正确拼写的单词,那就忽略它, nltk 用来做分词的。  这里最后再转小写是因为防止 ServiceHandlerId 这种连续的单词链接成的字符串被拼写检查剔除,

    2024年02月14日
    浏览(42)
  • 【数据挖掘 | 数据预处理】缺失值处理 & 重复值处理 & 文本处理 确定不来看看?

    🤵‍♂️ 个人主页: @AI_magician 📡主页地址: 作者简介:CSDN内容合伙人,全栈领域优质创作者。 👨‍💻景愿:旨在于能和更多的热爱计算机的伙伴一起成长!!🐱‍🏍 🙋‍♂️声明:本人目前大学就读于大二,研究兴趣方向人工智能硬件(虽然硬件还没开始玩,但一直

    2024年02月07日
    浏览(72)
  • 自然语言处理入门:使用Python和NLTK进行文本预处理

    文章标题:自然语言处理入门:使用Python和NLTK进行文本预处理 简介 自然语言处理(NLP)是人工智能领域的一个重要分支,它致力于使计算机能够理解、分析和生成人类语言。本文将介绍如何使用Python编程语言和NLTK(Natural Language Toolkit)库进行文本预处理,为后续的文本分析

    2024年02月19日
    浏览(54)
  • 自然语言处理NLP:文本预处理Text Pre-Processing

    大家好,自然语言处理(NLP)是计算机科学领域与人工智能领域中的一个重要方向,其研究能实现人与计算机之间用自然语言进行有效通信的各种理论和方法。本文将介绍文本预处理的本质、原理、应用等内容,助力自然语言处理和模型的生成使用。 文本预处理是将原始文本数

    2024年04月26日
    浏览(50)
  • 【文本到上下文 #2】:NLP 的数据预处理步骤

            欢迎阅读此文,NLP 爱好者!当我们继续探索自然语言处理 (NLP) 的广阔前景时,我们已经在最初的博客中探讨了它的历史、应用和挑战。今天,我们更深入地探讨 NLP 的核心——数据预处理的复杂世界。         这篇文章是我们的“完整 NLP 指南:文本到上下文

    2024年01月18日
    浏览(36)
  • C语言文本为什么不包括库函数和预处理命令

    C语言的文本不包括库函数和预处理命令 是因为库函数和预处理命令并不是C语言本身的一部分, 它们是由 C语言标准库 和 预处理器 提供的功能。 C语言 标准库 是一组预定义的函数和常量, 用于提供常见的功能,如输入输出、字符串处理、数学计算等。 这些库函数是由C语言

    2024年02月09日
    浏览(45)
  • 图像预处理算法————灰度化处理

    图像预处理算法适合在FPGA上完成,原理简单且需要快速处理,通常有灰度化、中值、均值滤波等,以及颜色空间转换算法。 灰度图像是一种特殊的彩色图像(R=G=B的彩色图像) 只有一种颜色分量,单通道的0-255 方法:一般有分量法、最大值法、平均值法、加权平均法四种方

    2024年01月17日
    浏览(50)
  • 图像预处理技术与算法

    图像预处理是计算机视觉和图像处理中非常关键的第一步,其目的是为了提高后续算法对原始图像的识别、分析和理解能力。以下是一些主要的图像预处理技术: 1.图像增强: 对比度调整:通过直方图均衡化(Histogram Equalization)等方法改善图像整体或局部的对比度。 伽玛校

    2024年02月20日
    浏览(51)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包