问题描述
我试图为每个单词获取1,2,3克后缀,并将其用作模型中的特征。
示例
word = "Apple"
1 gram suffix = 'e'
2 gram suffix = 'le'
3 gram suffix = 'ple'
我在sklearn中将CountVectorizer
与ngram_range=(1,3)
一起使用,但是得到了所有的n克。我只需要n克后缀。
我该怎么做?
此外,我是NLP的新手,也不知道如何在我的ML模型中使用这些n克作为功能。如何将这些“字符串” n元语法特征转换为某种数字表示形式,以便可以在模型中使用它们。
有人可以帮我吗?
解决方法
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