如何使用 sklearn CountVectorizer and() 来获取包含任何标点符号作为单独标记的 ngram?

Posted

技术标签:

【中文标题】如何使用 sklearn CountVectorizer and() 来获取包含任何标点符号作为单独标记的 ngram?【英文标题】:How to use sklearn's CountVectorizerand() to get ngrams that include any punctuation as separate tokens? 【发布时间】:2015-11-14 17:14:58 【问题描述】:

我使用sklearn.feature_extraction.text.CountVectorizer 来计算 n-gram。示例:

import sklearn.feature_extraction.text # FYI http://scikit-learn.org/stable/install.html
ngram_size = 4
string = ["I really like python, it's pretty awesome."]
vect = sklearn.feature_extraction.text.CountVectorizer(ngram_range=(ngram_size,ngram_size))
vect.fit(string)
print('1-grams: 0'.format(vect.get_feature_names(), ngram_size))

输出:

4-grams: [u'like python it pretty', u'python it pretty awesome', u'really like python it']

标点符号被删除:如何将它们包含为单独的标记?

【问题讨论】:

【参考方案1】:

您应该使用tokenizer 参数在创建sklearn.feature_extraction.text.CountVectorizer 实例时指定一个单词tokenizer,它将任何标点符号视为单独的标记。

例如,nltk.tokenize.TreebankWordTokenizer 将大多数标点字符视为单独的标记:

import sklearn.feature_extraction.text
from nltk.tokenize import TreebankWordTokenizer

ngram_size = 4
string = ["I really like python, it's pretty awesome."]
vect = sklearn.feature_extraction.text.CountVectorizer(ngram_range=(ngram_size,ngram_size), \
                                                 tokenizer=TreebankWordTokenizer().tokenize)
print('1-grams: 0'.format(vect.get_feature_names(), ngram_size))

输出:

4-grams: [u"'s pretty awesome .", u", it 's pretty", u'i really like python', 
          u"it 's pretty awesome", u'like python , it', u"python , it 's", 
          u'really like python ,']

【讨论】:

啊,但计数不见了? @alvas 你可以使用sklearn.feature_extraction.text.CountVectorizer.transform 来获取计数。 谢谢!我刚刚写了一堆疯狂的代码来使用 sklearn learn 进行 ngram 提取和计数,而不是原生 python,我正在计时。似乎原生 python 获胜 =(

以上是关于如何使用 sklearn CountVectorizer and() 来获取包含任何标点符号作为单独标记的 ngram?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 sklearn 找到标准化残差?

如何使用 sklearn 训练算法对数据点进行加权

如何使用networkx图作为sklearn的输入

使用 SKlearn 进行多标签分类 - 如何使用验证集?

如何使用 python 和 3rd 方包(如 sklearn)为 hive 创建一个 udf?

使用 sklearn 训练模型时如何更改特征权重?