清理文本数据

2021-11-19 15:25:23 浏览数 (1)


磐创AI分享

作者 | Matt Przybyla

编译 | VK 来源 | Towards Data Science

目录

  1. 介绍
  2. 清除文本数据
  3. 总结
  4. 参考引用

介绍

数据在大多数情况下都是杂乱无章、杂乱无章、难以处理的,这一点也不足为奇。

当你从教育实践中学习数据科学时,你将看到大多数数据都是从多个来源、多个查询中获得的,这可能会导致一些不干净的数据。

在某些或大多数情况下,你必须提供最终用于训练模型的数据集。有一些文章关注数字数据,但我希望本文的重点主要是文本数据,这与自然语言处理是一致的。

话虽如此,这里有一个简单的方法来清理Python中的文本数据,以及它何时有用。我将使用来自TMBDF5000电影数据集[2]的流行数据集。

清除文本数据

删除停用词

另一种解释“停用词”的方法是删除不必要的文本。

但是,需要注意的是,当你使用常用的停用词库时,你可能正在删除你实际上想要保留的单词。

这就是为什么你应该首先考虑你想要删除的单词列表。停用词的常见例子有“the”、“of”等。你想要删除这些单词的原因是你想要保留这些单词、短语、句子等的主题。

例如“ there was the time where they went to the store in July for the holiday party’”。如果你删除了停用词和一些不必要的词,你就会得到 time, July, holiday, party 。

话虽如此,让我们看看如何从电影标题中删除一些停用词:

代码语言:javascript复制
import pandas as pd

import nltk.corpus
nltk.download(‘stopwords’)
from nltk.corpus import stopwords

df = pd.read_csv('...path/tmdb_5000_movies.csv')

stop_words = stopwords.words('english')
df['clean_title'] = df['title'].apply(lambda x: ' '.join([word for word in x.split() if word not in (stop_words)]))

在上面的代码中,我们导入必要的库,然后将数据读入数据框。

从这里,我们删除“title”列文本中的停用词,它们将在“ clean_title ”列中显示各自的效果。

输出是我们在下面看到的。在第1行、第3行和第8行中,删除了stopwords,你可以通过before和after并排看到这一点。

除了nltk中的停用词库外,你还可以“手动”添加其他停用词。为了实现这个功能,你可以简单地添加一个字符串列表来添加停用词。

例如,如果我们想删除文本“3”,因为它在本例中不是一个数字,我们可以将其添加到列表中,以及单词“At”和字母“v”。其工作原理如下所示:

代码语言:javascript复制
stop_words = stopwords.words(‘english’)   [‘At’, ‘v’, ‘3’]

# 应用与上面相同的代码,但分配一个新列来查看差异

df['clean_title_v2'] = df['title'].apply(lambda x: ' '.join([word for word in x.split() if word not in (stop_words)]))

在下面的屏幕截图中,你可以看到lambda函数如何删除添加的字符串列表中的值。

现在我们已经展示了一种清理文本数据的方法,让我们讨论一下这个过程对数据科学家有用的可能应用:

  • 删除不必要的单词以便可以执行词干分析
  • 与上面类似,你可以使用词形还原
  • 只保留必要的单词可以让你更容易地标记数据中的词类,例如,如果你只标记形容词,并在数据中使用该文本作为模型,那么像“ beautiful ”、“ amazing ”、“ loud ”就可以用来预测电影评论的目标变量。一个模型将能够更容易地从形容词中识别情感,从而辨别电影评论是好是坏,或者电影需要改进什么
  • 根据更新文本的主要词语创建摘要仪表板,例如,去掉“蜘蛛侠1”、“蜘蛛侠2”和“蜘蛛侠3”中的数字,将允许对所有蜘蛛侠电影进行分析
  • 更容易进行主题建模
  • 少量文本,以便你的建模可以更快、更便宜地进行训练和预测
  • 可以用来删除错误的文本,你可以自动删除通常被语音错误解释的单词。

当然,有更多的理由删除停用词,并清理文本数据。同样重要的是要记住,有一些新兴的算法可以很好地处理文本数据,比如CatBoost。

总结

如你所见,清理数据的一部分可以为进一步清理和处理数据奠定基础。最终会使模型更加健壮和准确。

总而言之,以下是如何从文本数据中删除停用词:

代码语言:javascript复制
* 导入库

* 导入数据集

* 删除停用词

* 添加单独的停用词

更新:由于单词的大小写是大写的,所以没有按应该的方式删除它,因此请确保在清理之前将所有文本都小写。

感谢阅读!

参考引用

[1] Photo by JESHOOTS.COM on Unsplash, (2019)

[2] Kaggle, TMBDF 5000 Movie Dataset, (2021 — accessed)

[3] Photo by Marylou Fortier on Unsplash, (2020)

[4] M.Przybyla, cleaning text example, (2021)

[5] M.Przybyla, cleaning text example plus adding individual stop words, (2021)

0 人点赞