当前位置: 首页 > 面试题库 >

如何使用Scikit Learn CountVectorizer获得语料库中的单词频率?

沈单弓
2023-03-14
问题内容

我正在尝试使用scikit-learn’s计算一个简单的单词频率CountVectorizer

import pandas as pd
import numpy as np
from sklearn.feature_extraction.text import CountVectorizer

texts=["dog cat fish","dog cat cat","fish bird","bird"]
cv = CountVectorizer()
cv_fit=cv.fit_transform(texts)

print cv.vocabulary_
{u'bird': 0, u'cat': 1, u'dog': 2, u'fish': 3}

我期望它能回来{u'bird': 2, u'cat': 3, u'dog': 2, u'fish': 2}


问题答案:

cv.vocabulary_在这种情况下,是dict,其中键是您找到的单词(功能),值是索引,这就是为什么它们是0, 1, 2, 3。看起来与您的计数很相似,很不幸:)

您需要使用该cv_fit对象来获取计数

from sklearn.feature_extraction.text import CountVectorizer

texts=["dog cat fish","dog cat cat","fish bird", 'bird']
cv = CountVectorizer()
cv_fit=cv.fit_transform(texts)

print(cv.get_feature_names())
print(cv_fit.toarray())
#['bird', 'cat', 'dog', 'fish']
#[[0 1 1 1]
# [0 2 1 0]
# [1 0 0 1]
# [1 0 0 0]]

数组中的每一行都是原始文档(字符串)之一,每一列都是要素(单词),元素是该特定单词和文档的计数。您会看到,如果对每一列求和,则会得到正确的数字

print(cv_fit.toarray().sum(axis=0))
#[2 3 2 2]

不过,老实说,我建议您使用collections.CounterNLTK或其他东西,除非您有特定的理由使用scikit-learn,因为它会更简单。



 类似资料:
  • 问题内容: 我正在尝试学习如何使用NLTK标记西班牙语单词。 从nltk的书中,使用它们的示例标记英语单词非常容易。因为我是nltk和所有语言处理的新手,所以我对如何进行程序感到很困惑。 我已经下载了语料库。有没有办法指定一个语料库。我看了看文档,没有发现任何建议。我觉得我缺少一些关键概念。我是否需要在cess_esp语料库中手动标记文本中的单词?(通过手动,我的意思是标记我的情感,然后再次运行语

  • 在自然语言处理的实际项目中,通常要使用大量的语言数据或者语料库。本章的目的是要回答下列问题: 什么是有用的文本语料和词汇资源,我们如何使用Python 获取它们? 哪些Python 结构最适合这项工作? 编写Python 代码时我们如何避免重复的工作? 本章继续通过语言处理任务的例子展示编程概念。在系统的探索每一个Python 结构之前请耐心等待。如果你看到一个例子中含有一些不熟悉的东西,请不要担

  • 问题内容: 我想与Lucene交流一些经常出现的短语。我从TXT文件中获取了一些信息,并且由于没有短语信息而失去了很多上下文,例如“信息检索”被索引为两个单独的词。 怎样获得这样的短语?我在互联网上找不到任何有用的东西,所有的建议,链接,提示,尤其是示例都值得赞赏! 编辑: 我只按标题和内容存储我的文档: 因为对于我而言,最重要的是文件的内容。标题通常根本不是描述性的(例如,我有很多PDF学术论文

  • 我正在尝试编写我的第一个Elasticsearch分析插件,我从github中找到了一个可扩展的标准Analyzer插件项目:Elasticsearch分析standardext,在该项目中它提供了以下代码: 这里是链接 我想知道如何获得这些单词边界的字符类。 我问有问题的作者:如何获得单词边界“字符类”?#2,但是作者似乎不会回答我的问题。 我尝试阅读Unicode文本分段文档:https://

  • 我试图从文本或语料库中提取关键词。这些不是最常见的词,而是最“关于”文本的词。我有一个比较示例,我生成的列表与示例列表非常不同。你能给我一个指针来生成一个很好的关键字列表,其中不包括像“you”和“tis”这样的低义词吗? 我用“罗密欧与朱丽叶”作为我的文本。我的做法(见斯科特 我收到了很多像“你”、“她”和“它”这样的词,但它们并没有出现在它们的列表中,我也没有收到像“放逐”和“教堂墓地”这样的

  • 我正在处理一个以标记/单词列表的形式出现的大型语料库。语料库包含约1900000个单词,我运行了一个代码来获取最频繁的单词,现在语料库有140000个单词。 我想删除出现在文档中超过95%而少于5%的单词 语料库的样本 首先,我找到了最常用的单词 然后,我应用这个for循环来查找出现率超过95%的单词列表 但这段代码需要很长时间才能运行,并且不会返回任何输出。 我也试图按照一些答案我发现和应用Co