使用 python 未删除停用词
Stop words are not being removed using python
我正在尝试从我拥有的标记列表中删除停用词。但是,似乎没有删除这些词。会有什么问题?谢谢
尝试过:
Trans = []
with open('data.txt', 'r') as myfile:
file = myfile.read()
#start readin from the start of the charecter
myfile.seek(0)
for row in myfile:
split = row.split()
Trans.append(split)
myfile.close()
stop_words = list(get_stop_words('en'))
nltk_words = list(stopwords.words('english'))
stop_words.extend(nltk_words)
output = [w for w in Trans if not w in stop_words]
Input:
[['Apparent',
'magnitude',
'is',
'a',
'measure',
'of',
'the',
'brightness',
'of',
'a',
'star',
'or',
'other']]
output:
It returns the same words as input.
我认为 Trans.append(split)
应该是 Trans.extend(split)
因为拆分 returns 一个列表。
由于输入包含列表的列表,您需要遍历一次外部列表和内部列表元素,然后您可以使用
获得正确的输出
output = [j for w in Trans for j in w if j not in stop_words]
为了提高可读性,创建一个函数。例如:
def drop_stopwords(row):
stop_words = set(stopwords.words('en'))
return [word for word in row if word not in stop_words and word not in list(string.punctuation)]
和with open()
不需要close()
并创建一个字符串列表(句子)并应用该函数。例如:
Trans = Trans.map(str).apply(drop_stopwords)
这将应用于每个句子...
你可以为lemmitize等添加其他功能。这里有一个非常清楚的例子(代码):
https://github.com/SamLevinSE/job_recommender_with_NLP/blob/master/job_recommender_data_mining_JOBS.ipynb
我正在尝试从我拥有的标记列表中删除停用词。但是,似乎没有删除这些词。会有什么问题?谢谢
尝试过:
Trans = []
with open('data.txt', 'r') as myfile:
file = myfile.read()
#start readin from the start of the charecter
myfile.seek(0)
for row in myfile:
split = row.split()
Trans.append(split)
myfile.close()
stop_words = list(get_stop_words('en'))
nltk_words = list(stopwords.words('english'))
stop_words.extend(nltk_words)
output = [w for w in Trans if not w in stop_words]
Input:
[['Apparent',
'magnitude',
'is',
'a',
'measure',
'of',
'the',
'brightness',
'of',
'a',
'star',
'or',
'other']]
output:
It returns the same words as input.
我认为 Trans.append(split)
应该是 Trans.extend(split)
因为拆分 returns 一个列表。
由于输入包含列表的列表,您需要遍历一次外部列表和内部列表元素,然后您可以使用
获得正确的输出output = [j for w in Trans for j in w if j not in stop_words]
为了提高可读性,创建一个函数。例如:
def drop_stopwords(row):
stop_words = set(stopwords.words('en'))
return [word for word in row if word not in stop_words and word not in list(string.punctuation)]
和with open()
不需要close()
并创建一个字符串列表(句子)并应用该函数。例如:
Trans = Trans.map(str).apply(drop_stopwords)
这将应用于每个句子... 你可以为lemmitize等添加其他功能。这里有一个非常清楚的例子(代码): https://github.com/SamLevinSE/job_recommender_with_NLP/blob/master/job_recommender_data_mining_JOBS.ipynb