分解文本特征以进行分类

时间:2019-03-04 14:42:57

标签: python text-classification

我有一个数据框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

1 个答案:

答案 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']