使用sklearn计数矢量器获取n gram后缀



我正在尝试为一个单词获取1,2,3克后缀,并将它们用作我的模型中的功能。

示例,

word = "Apple"
1 gram suffix = 'e'
2 gram suffix = 'le'
3 gram suffix = 'ple'

我在sklearn中使用了CountVectorizerngram_range=(1,3),但这给出了所有的n个g。我只需要n克后缀。

我该怎么做?

此外,我是NLP的新手,不知道如何在ML模型中使用这n个语法作为特征。我如何转换这些";字符串";n-gram特征到某种数字表示,这样我就可以在我的模型中使用它们。

有人能帮帮我吗?

Yo可以定义自定义analyzer来定义如何从输入中获得特征。对于您的情况,一个简单的lambda函数来获得单词的后缀就足够了:

from sklearn.feature_extraction.text import CountVectorizer
word = ["Orange","Apple", "I"]
n=3
vect = CountVectorizer(analyzer=lambda x: (x[-i-1:] for i in range(0,min(n,len(x)))))
mat = vect.fit_transform(word).todense()

现在,如果我们从得到的矢量化矩阵中构造一个数据帧:

pd.DataFrame(mat, columns=vect.get_feature_names())
I  e  ge  le  nge  ple
0  0  1   1   0    1    0
1  0  1   0   1    0    1
2  1  0   0   0    0    0

最新更新