当前位置: 首页 > 知识库问答 >
问题:

用sklearn计数向量化器获取n个gram后缀

糜淇
2023-03-14

我试图得到一个单词的1,2,3克后缀,并在我的模型中使用它们作为特征。

例,

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

此外,我是NLP新手,不知道如何在我的ML模型中使用这n克作为特征。如何将这些“字符串”n-gram特性转换为某种数字表示,以便在我的模型中使用它们。

谁能帮帮我吗?

共有1个答案

阮阳曦
2023-03-14

Yo可以定义一个自定义的分析器来定义如何从输入中获得特性。对于您的情况,一个简单的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()

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

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
 类似资料:
  • 问题内容: 我正在使用NLTK在语料库中搜索n- gram,但是在某些情况下会花费很长时间。我已经注意到,计算n元语法在其他软件包中并不罕见(显然,Haystack具有某些功能)。如果我放弃NLTK,这是​​否意味着可以以更快的方式在语料库中查找n- gram?如果是这样,我可以使用什么来加快速度? 问题答案: 由于您没有指明是想要单词级还是字符级的n-gram,因此我将假设前者,而不会失去一般性

  • 问题内容: 我有以下代码。我知道我可以使用函数过滤掉少于频率计数的搭配。但是,在决定设置过滤频率之前,我不知道如何获取文档中所有n- gram元组(在我的情况下为bi-gram)的频率。如您所见,我正在使用nltk搭配类。 问题答案: 该功能有效

  • 最近,我一直在尝试用斯坦福核心NLP来训练n-gram实体。我遵循了以下教程--http://nlp.stanford.edu/software/crf-faq.shtml#b 这样,我就可以只指定unigram标记和它所属的类。有谁能引导我,让我把它延伸到n克。我正试图从聊天数据集中提取像电影名称这样的已知实体。 如果我误解了斯坦福教程,请指导我,同样的教程可以用于N克培训。

  •   一个n-gram是一个包含n个tokens(如词)的序列。NGram可以将输入特征 转换为n-grams。   NGram输入一系列的序列,参数n用来决定每个n-gram的词个数。输出包含一个n-grams序列,每个n-gram表示一个划定空间的连续词序列。 如果输入序列包含的词少于n,将不会有输出。 import org.apache.spark.ml.feature.NGram val w

  • 问题内容: 我想知道是否有替代 使用 流 ? 问题答案: 定制收集器可以这样写: 并像这样使用它:

  • 问题内容: 使用此链接中的代码将文本文件内容加载到GUI: 如果input.txt的内容为: 现在,我想计算HashMap中的值,但是计算存储在文本文件中的所有数据行。 我w’d想问我怎么能算的项目,即价值的?根据 作者的姓名 ,我怎么得到 4 号? __ 问题答案: 由于AUTHOR具有1对多的关系,因此应将其映射到结构而不是。 例如: