python - python - 如何在python中的pandas数据框中执行词干提取和删除列?
问题描述
下面是我的数据集的子集。我正在尝试使用包Porter stemmer
中提供的数据集来清理我的数据集nltk
。我想删除它们的词干中相似的列,例如“abandon”、“abondoned”、“abondening”应该只是在我的数据集中被放弃了。下面是我正在尝试的代码,我可以在其中看到词/列被阻止. 但是我不确定如何删除这些列?我已经标记并从语料库中删除了标点符号。
注意:我是Python
和的新手Textmining
。
数据集子集
{
'aaaahhhs':{
0:0,
1:0,
2:0,
3:0,
4:0,
5:0
},
'aahs':{
0:0,
1:0,
2:0,
3:0,
4:0,
5:0
},
'aamir':{
0:0,
1:0,
2:0,
3:0,
4:0,
5:0
},
'aardman':{
0:0,
1:0,
2:0,
3:0,
4:0,
5:0
},
'aaron':{
0:0,
1:0,
2:0,
3:0,
4:0,
5:0
},
'abandon':{
0:0,
1:0,
2:0,
3:0,
4:0,
5:0
},
'abandoned':{
0:0,
1:0,
2:0,
3:0,
4:0,
5:0
},
'abandoning':{
0:0,
1:0,
2:0,
3:0,
4:0,
5:0
},
'abandonment':{
0:0,
1:0,
2:0,
3:0,
4:0,
5:0
},
'abandons':{
0:0,
1:0,
2:0,
3:0,
4:0,
5:0
}
}
到目前为止的代码..
from nltk.stem import PorterStemmer
from nltk.tokenize import word_tokenize
ps = PorterStemmer()
for w in clean_df.columns:
print(ps.stem(w))
解决方案
我认为这样的事情可以满足您的要求:
import collections
# Here the assotiations between stems and column names are built:
stems = collections.defaultdict(list)
for column_name in clean_df.columns:
stems[ps.stem(column_name)].append(column_name)
# Here for each stem the first (in lexicographical order) is gotten:
new_columns = [sorted(columns)[0] for _, columns in stems.items()]
# Here the new `DataFrame` is created which contains selected columns:
new_df = clean_df[new_columns]
推荐阅读
- laravel - 无法提供 laravel websockets
- c# - 如何以这种格式解析时间 2019-07-30 16:45:00.9 C#
- android - android 应用程序在启动时崩溃,仅适用于 android 8.0
- visual-studio - 使用 gulp 在 Visual Studio 2019 中将 sass 编译为 css
- python - Autoit 安装 whit Python 2.7 和 Windows 64 位
- python - X自定义数据,Y自定义数据,面积图如何填充渐变色?
- python - 如何从 Python Flask API 返回图像流和文本作为 JSON 响应
- python - SQLAlchemy:一直创建引擎会影响性能?
- python-3.x - 我正在尝试写一个计算器
- reactjs - React:可以将 redux 存储和状态存储到本地文件中吗?