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

问题描述

我试图为每个单词获取1,2,3克后缀,并将其用作模型中的特征。

示例

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

我在sklearn中将CountVectorizerngram_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

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...