磐创AI分享
作者 | Matt Przybyla
编译 | VK 来源 | Towards Data Science
目录
- 介绍
- 清除文本数据
- 总结
- 参考引用
介绍
数据在大多数情况下都是杂乱无章、杂乱无章、难以处理的,这一点也不足为奇。
当你从教育实践中学习数据科学时,你将看到大多数数据都是从多个来源、多个查询中获得的,这可能会导致一些不干净的数据。
在某些或大多数情况下,你必须提供最终用于训练模型的数据集。有一些文章关注数字数据,但我希望本文的重点主要是文本数据,这与自然语言处理是一致的。
话虽如此,这里有一个简单的方法来清理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)