使用 sklearn count vectorizer 获取 n gram 后缀
Getting n gram suffix using sklearn count vectorizer
我正在尝试为一个词获取 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-gram 特征转换为某种数字表示形式,以便我可以在我的模型中使用它们。
有人可以帮帮我吗?
您可以自定义 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
我正在尝试为一个词获取 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-gram 特征转换为某种数字表示形式,以便我可以在我的模型中使用它们。
有人可以帮帮我吗?
您可以自定义 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