Sklearn - 从文本中提取特征 - 通过合并复数形式和单数形式来规范化文本特征
Sklearn - feature extraction from text - normalize text features by merging plural and singular forms
我现在正在使用 sklearn 进行一些文本分类。
作为第一步,我显然需要使用矢量化器 - CountVectorizer 或 TfIdfVectorizer。我想解决的问题是,在我的文档中,我经常使用同一个词的单数和复数形式。执行矢量化时,我想 'merge' 单数和复数形式并将它们视为相同的文本特征。
显然我可以手动预处理文本,当我知道哪些词有这个问题时,只需将所有复数词形式替换为单数词形式。但是也许有一些方法可以更自动化地做到这一点,当彼此极其相似的单词被合并成相同的特征时?
更新。
根据之前提供的答案,我需要进行词干提取。下面是一个示例代码,它提取数据框 DF 的 'review' 列中的所有单词,然后我将其用于矢量化和分类。以防万一有人发现它有用。
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))
我想你需要的是词干提取,即去除具有共同词根的单词的词尾,这是预处理文本数据的基本操作之一。
这里解释了一些词干提取和词形还原规则:https://nlp.stanford.edu/IR-book/html/htmledition/stemming-and-lemmatization-1.html
我现在正在使用 sklearn 进行一些文本分类。
作为第一步,我显然需要使用矢量化器 - CountVectorizer 或 TfIdfVectorizer。我想解决的问题是,在我的文档中,我经常使用同一个词的单数和复数形式。执行矢量化时,我想 'merge' 单数和复数形式并将它们视为相同的文本特征。
显然我可以手动预处理文本,当我知道哪些词有这个问题时,只需将所有复数词形式替换为单数词形式。但是也许有一些方法可以更自动化地做到这一点,当彼此极其相似的单词被合并成相同的特征时?
更新。
根据之前提供的答案,我需要进行词干提取。下面是一个示例代码,它提取数据框 DF 的 'review' 列中的所有单词,然后我将其用于矢量化和分类。以防万一有人发现它有用。
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))
我想你需要的是词干提取,即去除具有共同词根的单词的词尾,这是预处理文本数据的基本操作之一。
这里解释了一些词干提取和词形还原规则:https://nlp.stanford.edu/IR-book/html/htmledition/stemming-and-lemmatization-1.html