python - 文本清理和停用词
问题描述
我正在尝试为机器学习课程完成一个文本学习项目。我的老师给了我以下功能,但我不明白为什么会收到我遇到的错误。这个函数应该接受一串单词,删除标点符号和停用词,然后返回新字符串。
def review_to_words( raw_review ):
# Function to convert a raw review to a string of words
# The input is a single string (a raw movie review), and
# the output is a single string (a preprocessed movie review)
#
# 1. Remove HTML
review_text = BeautifulSoup(raw_review).get_text()
#
# 2. Remove non-letters (punctuation)
letters_only = re.sub("[^a-zA-Z]", " ", review_text)
#
# 3. Convert to lower case, split into individual words
words = letters_only.lower().split()
#
# 4. In Python, searching a set is much faster than searching
# a list, so convert the stop words to a set
stops = set(stopwords.words("english"))
#
# 5. Remove stop words
meaningful_words = [w for w in words if not w in stops]
#
# 6. Join the words back into one string separated by space,
# and return the result.
return( " ".join( meaningful_words ))
clean_review = review_to_words(first1000["review"][0] )
它表示以下行中的“review”存在关键错误:
clean_review = review_to_words(first1000["review"][0] )
first1000 是一个变量设置为:
first1000 = data["review"][0:1000]
我的数据集是一个 .tsv 文件,其中包含来自 imdb 的数千条电影评论。变量“review”只是该数据集中的一条评论。
同样,这个函数应该接受一串单词,删除标点符号和停用词,然后返回新字符串。我不确定发生了什么,因为我查看了代码并且对我来说看起来不错。
编辑:到目前为止,我从回复中听到的是,我的数据是一个列表字典。听起来是对的。每个评论都是一个单词列表,整个数据集是一个评论列表。但是现在我需要找到一种方法来计算字典中列表的数量。我目前拥有的是:
num_reviews = count(train_reviews["reviews"])
print(num_reviews)
其中 train_reviews["reviews"] 是我的数据的一个子集。它仍然是一个列表字典。我需要计算 train_reviews 中有多少个列表。这段代码我没有收到错误,但我也没有得到任何输出。我确定它应该从打印命令中产生一些输出,这就是我感到困惑的原因。
PS如果我应该提出一个全新的问题以发布有关使用相同代码的新问题,请告诉我,我会在未来记住这一点。
解决方案
看来您有一个data
包含各种数据条目的字典,其中一个在 key 下"review"
。该数据条目是某种序列,可能是行(字符串)列表。
您将前 1000 行扫描到一个新列表中,first1000
. 这是 a list
,而不是 a dict
- 它没有任何键。在这个变量中有 1000 个字符串的序列——没有“review”条目。
从您的通话中删除该["review"]
元素,看看您会得到什么。更好的是,学习一些基本的调试:打印出你正在使用的值,以确保它们与你认为它们所持有的相匹配。
请参阅这个可爱的调试博客寻求帮助。
推荐阅读
- apache-spark - 如何使用 spark-xml 包使用 XSD 解析 XML?
- datadog - Datadog 导出日志超过 5,000 条
- r - ggplot 用于线性对数回归模型?
- java - 当 Spring 的方法之一使用 @transactional 注释时,Spring 不会为 @service 注释类创建 bean
- javascript - 如何将具有嵌套数组的对象转换为平面对象数组?
- python - 如何在 Docker 内部的 Django 中迁移数据库
- php - Laravel 8 返回空白页
- magento2 - report.CRITICAL:提供空或未提供私钥 [] []
- maven - IntelliJ IDEA 中突然出现“包不存在”
- javascript - SOCKET IO:版本 3 或 4 中是否有命令断开所有用户与房间的连接?