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

2024-06-12 06:27:35 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图得到一个单词的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特征转换为某种数值表示形式,以便在模型中使用它们

有人能帮我吗


Tags: 模型leapplenlprange特征sklearn单词
1条回答
网友
1楼 · 发布于 2024-06-12 06:27:35

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

相关问题 更多 >