【发布时间】:2018-05-31 22:32:57
【问题描述】:
我有一种情况,我必须从文本语料库中删除特定单词的 unigram,同时保留该单词的二元组以及该单词的一元组。
我正在尝试将文本地址数据(excel 中的列)与其他一些数字特征一起传递给分类算法。我需要对文本数据进行计数向量化并过滤掉特定的 uni-gram 并将它们附加回数据帧,以便分类器算法能够理解它。
** sample data in Text Column**
TAJ MAHAL
TAJ MALABAR KOCHI
TAJ MALABAR KOCHI
TAJ RESIDENCY TVM
LEELA PALACE
PALACE ROAD
HILL VIEW ROAD
HILL AVENUE
HILL STATION
对于 Taj 和 Hill,我只想要 Bigrams 和 trigrams,其余所有单词我想要 unigram、bigrams 和 trigrams。
**输出 BIGRAM 和 UNIGRAM **
TAJ MAHAL
TAJ MALABAR
MALABAR KOCHI
TAJ RESIDENCY
KOCHI
LEELA
PALACE
LEELA PALACE
PALACE ROAD
HILL VIEW
HILL AVENUE
HILL STATION
当我尝试使用停用词作为 Taj 和 Hill 时,也不会生成二元组和三元组
cv = CountVectorizer( max_features = 200,analyzer='word',ngram_range=(1, 3))
cv_txt = cv.fit_transform(data.pop('Txt'))
for i, col in enumerate(cv.get_feature_names()):
data[col] = pd.SparseSeries(cv_txt[:, i].toarray().ravel(), fill_value=0)
过滤掉特定的一元组后,我想将它们附加回数据帧,以便我可以运行分类算法。 最终输出是计数向量化文本数据的稀疏矩阵
【问题讨论】:
-
使用
ngram_range=(2,3) -
@vivek-kumar 我猜 OP 想要删除特定的 unigrams 但一般保留 unigrams。
-
@ncfirth,正确。我还想在从 countvectorizer 过滤后将元素附加到数据框。
标签: pandas scikit-learn nlp nltk n-gram