首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Scikit-学习TfidfVectorizer

Scikit-学习TfidfVectorizer
EN

Stack Overflow用户
提问于 2017-08-16 00:20:35
回答 1查看 1.4K关注 0票数 0

我正在研究文本分类问题,解析RSS提要中的新闻故事,我怀疑许多HTML元素和胡言乱语都被算作标记。我知道Beautiful提供了清理HTML的方法,但我想尝试传递字典,以便更好地控制标记的计数。

这似乎在概念上很简单,但我得到了我不明白的结果。

代码语言:javascript
复制
from sklearn.feature_extraction.text import TfidfVectorizer

eng_dictionary = []
with open("C:\\Data\\words_alpha.txt") as f:
    eng_dictionary = f.read().splitlines()

short_dic = []
short_dic.append(("short"))
short_dic.append(("story"))

stories = []
stories.append("This is a short story about the color red red red red blue blue blue i am in a car")
stories.append("This is a novel about the color blue red red red red i am in a boot")
stories.append("I like the color green, but prefer blue blue blue blue blue red red red red i am on a bike")

vec = TfidfVectorizer(decode_error=u'ignore', stop_words='english', analyzer='word', lowercase=True)
pos_vector = vec.fit_transform(stories).toarray()

print(vec.get_feature_names())

vec = TfidfVectorizer(decode_error=u'ignore', stop_words='english', analyzer='word', lowercase=True, vocabulary=short_dic)
pos_vector = vec.fit_transform(stories).toarray()

print(vec.get_feature_names())

vec = TfidfVectorizer(decode_error=u'ignore', stop_words='english', analyzer='word', lowercase=True, vocabulary=eng_dictionary)
pos_vector = vec.fit_transform(stories).toarray()

print(vec.get_feature_names())

该程序的输出如下;

代码语言:javascript
复制
['bike', 'blue', 'boot', 'car', 'color', 'green', 'like', 'novel', 'prefer', 'red', 'short', 'story']
['short', 'story']
ptic', 'skeptical', 'skeptically', 'skepticalness', 'skepticism', 'skepticize', 'skepticized', 'skepticizing'...

第三张打印的输出还在继续,所以我故意把它剪短,但奇怪的是,它是从中字开始的,就像我上面展示的那样。前两份打印声明的结果对我来说是有意义的;

  • 缺乏词汇意味着特征是直接从语料库构建的。
  • 提供词汇表意味着特征是由语料库和词汇表中的标记构建的。

然而,第三版的特征并不是我的语料库的一部分,为什么它们会出现?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-08-16 02:05:22

“词汇表”参数将用词汇表中的单词创建一个TF-国防军矩阵。然后,如果单词存在,这些值将被填充。

例如,假设“words_alpha.txt”文件中有“颜色”:

代码语言:javascript
复制
              skeptical    skeptically ... ... ...      color
stories[2]        0             0      ... ... ...   TFI-DF value

这就是他们出现的原因。

它从中间字开始的事实很可能与你的文件有关。您使用的是拆分行(),所以我的猜测是,您的文件有一堆单词,达到了一个限制,然后转到了单词“怀疑论者”中间的下一行,这就是您的词汇表(eng_dictionary)开始的地方。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45703339

复制
相关文章

相似问题

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