从推文中删除停用词 Python
Removing stopwords from tweets Python
我正在尝试从我从 Twitter 导入的推文中删除停用词。删除停用词后,字符串列表将放置在同一行的新列中。我一次可以轻松完成这一行,但是当尝试在整个数据帧上循环该方法时似乎没有成功。
我该怎么做?
我的数据片段:
tweets['text'][0:5]
Out[21]:
0 Why #litecoin will go over 50 USD soon ? So ma...
1 get 20 free #bitcoin spins at...
2 Are you Bullish or Bearish on #BMW? Start #Tra...
3 Are you Bullish or Bearish on the S&P 500?...
4 TIL that there is a DAO ExtraBalance Refund. M...
以下适用于单行场景:
from nltk.corpus import stopwords
stop_words = set(stopwords.words('english'))
tweets['text-filtered'] = ""
word_tokens = word_tokenize(tweets['text'][1])
filtered_sentence = [w for w in word_tokens if not w in stop_words]
tweets['text-filtered'][1] = filtered_sentence
tweets['text-filtered'][1]
Out[22]:
['get',
'20',
'free',
'#',
'bitcoin',
'spins',
'withdraw',
'free',
'#',
'btc',
'#',
'freespins',
'#',
'nodeposit',
'#',
'casino',
'#',
'...',
':']
我的循环尝试没有成功:
for i in tweets:
word_tokens = word_tokenize(tweets.get(tweets['text'][i], False))
filtered_sentence = [w for w in word_tokens if not w in stop_words]
tweets['text-filtered'][i] = filtered_sentence
回溯片段:
Traceback (most recent call last):
File "<ipython-input-23-6d7dace7a2d0>", line 2, in <module>
word_tokens = word_tokenize(tweets.get(tweets['text'][i], False))
...
KeyError: 'id'
根据@Prune 的回复,我已经改正错误了。这是一个潜在的解决方案:
count = 0
for i in tweets['text']:
word_tokens = word_tokenize(i)
filtered_sentence = [w for w in word_tokens if not w in stop_words]
tweets['text-filtered'][count] = filtered_sentence
count += 1
我之前的尝试是遍历数据框的列,tweets。推文的第一列是 "id".
tweets.columns
Out[30]:
Index(['id', 'user_bg_color', 'created', 'geo', 'user_created', 'text',
'polarity', 'user_followers', 'user_location', 'retweet_count',
'id_str', 'user_name', 'subjectivity', 'coordinates',
'user_description', 'text-filtered'],
dtype='object')
您对列表索引感到困惑:
for i in tweets:
word_tokens = word_tokenize(tweets.get(tweets['text'][i], False))
filtered_sentence = [w for w in word_tokens if not w in stop_words]
tweets['text-filtered'][i] = filtered_sentence
注意tweets
是字典; tweets['text']
字符串列表。因此,for i in tweets
returns tweets
中的所有键:任意顺序的字典键。看来 "id" 是第一个返回的。当您尝试分配 tweets['text-filtered']['id'] = filtered_sentence
时,没有这样的元素。
尝试更温和地编写代码:从内部开始,一次编写几行代码,然后逐渐处理更复杂的控制结构。在继续之前调试每个添加。到这里,你好像对什么是数字索引、什么是列表、什么是字典失去了认识。
由于您没有进行任何可见的调试,也没有提供上下文,我无法为您修复整个程序——但这应该可以帮助您入门。
我正在尝试从我从 Twitter 导入的推文中删除停用词。删除停用词后,字符串列表将放置在同一行的新列中。我一次可以轻松完成这一行,但是当尝试在整个数据帧上循环该方法时似乎没有成功。
我该怎么做?
我的数据片段:
tweets['text'][0:5]
Out[21]:
0 Why #litecoin will go over 50 USD soon ? So ma...
1 get 20 free #bitcoin spins at...
2 Are you Bullish or Bearish on #BMW? Start #Tra...
3 Are you Bullish or Bearish on the S&P 500?...
4 TIL that there is a DAO ExtraBalance Refund. M...
以下适用于单行场景:
from nltk.corpus import stopwords
stop_words = set(stopwords.words('english'))
tweets['text-filtered'] = ""
word_tokens = word_tokenize(tweets['text'][1])
filtered_sentence = [w for w in word_tokens if not w in stop_words]
tweets['text-filtered'][1] = filtered_sentence
tweets['text-filtered'][1]
Out[22]:
['get',
'20',
'free',
'#',
'bitcoin',
'spins',
'withdraw',
'free',
'#',
'btc',
'#',
'freespins',
'#',
'nodeposit',
'#',
'casino',
'#',
'...',
':']
我的循环尝试没有成功:
for i in tweets:
word_tokens = word_tokenize(tweets.get(tweets['text'][i], False))
filtered_sentence = [w for w in word_tokens if not w in stop_words]
tweets['text-filtered'][i] = filtered_sentence
回溯片段:
Traceback (most recent call last):
File "<ipython-input-23-6d7dace7a2d0>", line 2, in <module>
word_tokens = word_tokenize(tweets.get(tweets['text'][i], False))
...
KeyError: 'id'
根据@Prune 的回复,我已经改正错误了。这是一个潜在的解决方案:
count = 0
for i in tweets['text']:
word_tokens = word_tokenize(i)
filtered_sentence = [w for w in word_tokens if not w in stop_words]
tweets['text-filtered'][count] = filtered_sentence
count += 1
我之前的尝试是遍历数据框的列,tweets。推文的第一列是 "id".
tweets.columns
Out[30]:
Index(['id', 'user_bg_color', 'created', 'geo', 'user_created', 'text',
'polarity', 'user_followers', 'user_location', 'retweet_count',
'id_str', 'user_name', 'subjectivity', 'coordinates',
'user_description', 'text-filtered'],
dtype='object')
您对列表索引感到困惑:
for i in tweets:
word_tokens = word_tokenize(tweets.get(tweets['text'][i], False))
filtered_sentence = [w for w in word_tokens if not w in stop_words]
tweets['text-filtered'][i] = filtered_sentence
注意tweets
是字典; tweets['text']
字符串列表。因此,for i in tweets
returns tweets
中的所有键:任意顺序的字典键。看来 "id" 是第一个返回的。当您尝试分配 tweets['text-filtered']['id'] = filtered_sentence
时,没有这样的元素。
尝试更温和地编写代码:从内部开始,一次编写几行代码,然后逐渐处理更复杂的控制结构。在继续之前调试每个添加。到这里,你好像对什么是数字索引、什么是列表、什么是字典失去了认识。
由于您没有进行任何可见的调试,也没有提供上下文,我无法为您修复整个程序——但这应该可以帮助您入门。