首页 > 解决方案 > 为分类分解文本特征

问题描述

我有一个数据框, 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功能将“关键字”和“关键字”读取为不同的单词,那么是否有任何功能可以将类似于“关键字”和“关键字”的单词读取为相同的单词?

输出数据框实际上应该如下所示

 Feature 1     Feature 2         Feature 3           Feature 4         Label
 10            20                0                    0                 1
  2             3                0                    1                 0
  8             2                1                    2                 0

标签: pythontext-classification

解决方案


你可能想看看词干分析器。

NLTK 在这里给出了如何使用它们的例子,但简而言之,词干分析器将单词缩减到它们的词干,例如......

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

推荐阅读