我正在使用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))
答案 0 :(得分:2)
我认为你需要的是干预,即删除具有共同根的单词的结尾,这是预处理文本数据的基本操作之一。
以下是针对词干化和词形还原的一些规则:https://nlp.stanford.edu/IR-book/html/htmledition/stemming-and-lemmatization-1.html