我正在尝试获取日语单词的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的字符作为停用词。 如何停用默认停用词功能并保留所有字符?
答案 0 :(得分:3)
您可以将 token_pattern 参数从(?u)\\b\\w\\w+\\b
(默认)更改为(?u)\\b\\w\\w*\\b
;默认情况下匹配包含两个或更多单词字符的标记(如果您不熟悉正则表达式,+
表示一个或多个,则\\w\\w+
会将单词与两个或多个单词字符匹配; {{1} }另一方面,意味着零或更多,*
因此将字与一个或多个字符匹配):
\\w\\w*