Sklearn - 从文本中提取特征 - 通过合并复数形式和单数形式来标准化文本特征

时间:2017-07-26 20:10:12

标签: scikit-learn text-mining feature-extraction text-classification

我正在使用sklearn进行一些文本分类。

作为第一步,我显然需要使用矢量化器 - CountVectorizer或TfIdfVectorizer。我想要解决的问题是,在我的文件中,我经常会有单数和复数形式的同一个词。在执行矢量化时,我想合并'单数和复数形式,并将它们视为同一文本特征。

显然,当我知道哪些单词有这个问题时,我可以手动预处理文本,只用单数单词形式替换所有复数单词形式。但也许有一些方法可以以更自动化的方式进行,当彼此非常相似的单词合并到同一个功能中时?

更新

根据前面提供的答案,我需要执行词干。以下是一个示例代码,它涵盖了' review'中的所有单词。数据帧DF的列,然后我在矢量化和分类中使用它。以防有人发现它有用。

from nltk.stem.snowball import SnowballStemmer

stemmer = SnowballStemmer("english")


df['review_token']=df['review'].apply(lambda x : filter(None,x.split(" ")))

df['review_stemmed']=df['review_token'].apply(lambda x : [stemmer.stem(y) for y in x])

df['review_stemmed_sentence']=df['review_stemmed'].apply(lambda x : " ".join(x))

1 个答案:

答案 0 :(得分:2)

我认为你需要的是干预,即删除具有共同根的单词的结尾,这是预处理文本数据的基本操作之一。

以下是针对词干化和词形还原的一些规则:https://nlp.stanford.edu/IR-book/html/htmledition/stemming-and-lemmatization-1.html