如何停用sklearn TfidfVectorizer的默认停用词功能

时间:2017-06-05 02:08:13

标签: python machine-learning scikit-learn nlp tf-idf

我正在尝试获取日语单词的tf-idf值。 我遇到的问题是sklearn TfidfVectorizer删除了一些我希望保留的日文字符作为停用词。

以下是示例:

#app/models/post.rb
class Post < ApplicationRecord
  ...
    scope :for_ids_with_order, ->(ids) {
    order = sanitize_sql_array(
      ["position(id::text in ?)", ids.join(',')]
    )
    where(:id => ids).order(order)
  }

  ...
end

输出为:from sklearn.feature_extraction.text import TfidfVectorizer tf = TfidfVectorizer(stop_words = None) words_list = ["歯","が","痛い"] tfidf_matrix = tf.fit_transform(words_list) feature_names = tf.get_feature_names() print (feature_names)

但是,我希望将这三个字符保留在列表中。 我相信TfidfVectorizer会删除长度为1的字符作为停用词。 如何停用默认停用词功能并保留所有字符?

1 个答案:

答案 0 :(得分:3)

您可以将 token_pattern 参数从(?u)\\b\\w\\w+\\b(默认)更改为(?u)\\b\\w\\w*\\b;默认情况下匹配包含两个或更多单词字符的标记(如果您不熟悉正则表达式,+表示一个或多个,则\\w\\w+会将单词与两个或多个单词字符匹配; {{1} }另一方面,意味着零或更多,*因此将字与一个或多个字符匹配):

\\w\\w*