首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >sklearn :通过不移除NGrams中的停止来生成自定义NGrams

sklearn :通过不移除NGrams中的停止来生成自定义NGrams
EN

Stack Overflow用户
提问于 2018-04-10 06:13:28
回答 1查看 4.3K关注 0票数 3

以下是我的代码:

代码语言:javascript
复制
sklearn_tfidf = TfidfVectorizer(ngram_range= (3,3),stop_words=stopwordslist, norm='l2',min_df=0, use_idf=True, smooth_idf=False, sublinear_tf=True)
sklearn_representation = sklearn_tfidf.fit_transform(documents)

它通过删除所有的停止字来生成三格。

我想要它的允许那些在中间(而不是开始和结束)有塞子的

是否需要为此编写处理器。需要建议。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-04-11 12:20:56

是的,您需要提供您自己的分析器功能,它将根据您的需求将文档转换为特性。

根据文献资料

分析器: string,{‘word’,‘char’,‘char_wb’}或可调用 …………如果传递可调用函数,则用于从未处理的原始输入中提取功能序列。

在可调用的自定义语句中,您需要首先将句子拆分成不同的部分,删除特殊字符(如逗号、大括号、符号等),将它们转换为小写,然后将它们转换为n_grams

默认实现按以下顺序对单个句子工作:

  1. 解码:根据给定的编码(默认的'utf-8')的句子
  2. 预处理:将句子转换为小写
  3. 标记:从句子中获取单个单词标记(默认regexp选择2个或更多字母数字字符的标记)
  4. 停止字删除:从上述步骤中移除在停止词中存在的单个单词标记。
  5. N_gram创建:在停止字删除之后,剩余的令牌将被安排在所需的n_grams中。
  6. 删除太罕见或太常见的特征:删除频率大于max_df或低于min_df的单词。

如果要向analyzer中的TfidfVectorizer参数传递可调用的自定义函数,则需要处理所有这些问题。

您可以扩展TfidfVectorizer类,并且只覆盖最后两个步骤。就像这样:

代码语言:javascript
复制
from sklearn.feature_extraction.text import TfidfVectorizer
class NewTfidfVectorizer(TfidfVectorizer):
    def _word_ngrams(self, tokens, stop_words=None):

        # First get tokens without stop words
        tokens = super(TfidfVectorizer, self)._word_ngrams(tokens, None)
        if stop_words is not None:
            new_tokens=[]
            for token in tokens:
                split_words = token.split(' ')

                # Only check the first and last word for stop words
                if split_words[0] not in stop_words and split_words[-1] not in stop_words:
                    new_tokens.append(token)
            return new_tokens

        return tokens

然后,使用它,就像:

代码语言:javascript
复制
vectorizer = NewTfidfVectorizer(stop_words='english', ngram_range=(3,3))
vectorizer.fit(data)
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49746555

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档