我有一个数据框df,由文本和数字功能组成,类似于以下所示。
Feature 1 Feature 2 Feature 3 Feature 4 Label
10 20 keyword Human 1
2 3 Keywords Dog 0
8 2 Stackoverflow cat 0
当前,我使用factorize
函数将文本特征转换为数字特征,然后使用新的数据框进行分类。
df[' Feature 3'] = df[' Feature 3'].factorize()[0]
df[' Feature 4'] = df[' Feature 4'].factorize()[0]
运行上述代码后,我的数据框如下所示:
Feature 1 Feature 2 Feature 3 Feature 4 Label
10 20 0 0 1
2 3 1 1 0
8 2 2 2 0
factorize
函数将'keywords'和'keyword'读为不同的单词,是否有任何函数会将与'keywords'和'keyword'类似的单词读为同一单词?
输出数据框实际上应该像这样
Feature 1 Feature 2 Feature 3 Feature 4 Label
10 20 0 0 1
2 3 0 1 0
8 2 1 2 0
答案 0 :(得分:5)
您可能想看看茎干。
NLTK给出了如何使用它们的示例here,但是总之,词干将单词切成词根,例如...
from nltk.stem.porter import *
stemmer = PorterStemmer()
words = ['jog', 'jogging', 'jogged']
[stemmer.stem(word) for word in words]
返回:
['jog', 'jog', 'jog']
或为您
words = ['keyword', 'keywords']
[stemmer.stem(word) for word in words]
返回:
['keyword', 'keyword']
编辑:
我应该指出,要使此功能有效,这些词不需要相似:
words = ['drinking', 'running', 'walking', 'walked']
输出:
['drink', 'run', 'walk', 'walk']