在 python 中精确复制 R 文本预处理

2024-01-12

我想使用 Python 预处理文档语料库,就像在 R 中一样。例如,给定一个初始语料库,corpus,我希望最终得到一个与使用以下 R 代码生成的语料库相对应的预处理语料库:

library(tm)
library(SnowballC)

corpus = tm_map(corpus, tolower)
corpus = tm_map(corpus, removePunctuation)
corpus = tm_map(corpus, removeWords, c("myword", stopwords("english")))
corpus = tm_map(corpus, stemDocument)

是否有一种简单或直接(最好是预先构建的)方法可以在 Python 中执行此操作?有没有办法保证结果完全相同?


例如,我想预处理

@Apple 耳机太棒了!我用过的最好的入耳式耳机声音 曾经有过!

into

Airpod 亚马逊 我用过的最好的入耳式耳机


让事情之间完全相同似乎很棘手nltk and tm关于预处理步骤,所以我认为最好的方法是使用rpy2在 R 中运行预处理并将结果提取到 python 中:

import rpy2.robjects as ro
preproc = [x[0] for x in ro.r('''
tweets = read.csv("tweets.csv", stringsAsFactors=FALSE)
library(tm)
library(SnowballC)
corpus = Corpus(VectorSource(tweets$Tweet))
corpus = tm_map(corpus, tolower)
corpus = tm_map(corpus, removePunctuation)
corpus = tm_map(corpus, removeWords, c("apple", stopwords("english")))
corpus = tm_map(corpus, stemDocument)''')]

然后,您可以将其加载到scikit-learn——为了让事情在两者之间匹配,你需要做的唯一一件事就是CountVectorizerDocumentTermMatrix就是删除长度小于3的项:

from sklearn.feature_extraction.text import CountVectorizer
def mytokenizer(x):
    return [y for y in x.split() if len(y) > 2]

# Full document-term matrix
cv = CountVectorizer(tokenizer=mytokenizer)
X = cv.fit_transform(preproc)
X
# <1181x3289 sparse matrix of type '<type 'numpy.int64'>'
#   with 8980 stored elements in Compressed Sparse Column format>

# Sparse terms removed
cv2 = CountVectorizer(tokenizer=mytokenizer, min_df=0.005)
X2 = cv2.fit_transform(preproc)
X2
# <1181x309 sparse matrix of type '<type 'numpy.int64'>'
#   with 4669 stored elements in Compressed Sparse Column format>

让我们验证一下它是否与 R 匹配:

tweets = read.csv("tweets.csv", stringsAsFactors=FALSE)
library(tm)
library(SnowballC)
corpus = Corpus(VectorSource(tweets$Tweet))
corpus = tm_map(corpus, tolower)
corpus = tm_map(corpus, removePunctuation)
corpus = tm_map(corpus, removeWords, c("apple", stopwords("english")))
corpus = tm_map(corpus, stemDocument)
dtm = DocumentTermMatrix(corpus)
dtm
# A document-term matrix (1181 documents, 3289 terms)
# 
# Non-/sparse entries: 8980/3875329
# Sparsity           : 100%
# Maximal term length: 115 
# Weighting          : term frequency (tf)

sparse = removeSparseTerms(dtm, 0.995)
sparse
# A document-term matrix (1181 documents, 309 terms)
# 
# Non-/sparse entries: 4669/360260
# Sparsity           : 99%
# Maximal term length: 20 
# Weighting          : term frequency (tf)

正如您所看到的,现在两种方法之间存储的元素和术语的数量完全匹配。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 python 中精确复制 R 文本预处理 的相关文章

  • 反编译Python 3.9.2的PYC文件[重复]

    这个问题在这里已经有答案了 目前 我有一个 3 9 2 版本的 python 的 PYC 文件 P S 这适用于所有 3 9 及更高版本 我正在尝试反编译 PYC 文件 但它显示错误 因为 uncompyle6 或者更确切地说 新版本 de
  • 按边距(“全部”)值列对 Pandas 数据透视表进行排序

    我试图根据 pandas 数据透视表中的行总和对最后一列 边距 aggrfunc 进行降序排序 我知道我在这里错过了一些简单的东西 但我无法弄清楚 数据框 数据透视表 WIDGETS DATE 2 1 16 2 2 16 2 3 16 Al
  • Mypy 无法从文字列表推断项目的类型

    我有一个变量x和一个文字列表 例如 0 1 2 我想转换x这些文字之一 如果x在列表中 我将其退回 否则我返回一个后备值 from typing import Literal Set Foo Literal 0 1 2 foos Set F
  • 在Python中从大文件中搜索单词列表

    我是新蟒蛇 我有一个单词列表和一个非常大的文件 我想删除文件中包含单词列表中的单词的行 单词列表按排序给出 并且可以在初始化期间输入 我正在努力寻找解决这个问题的最佳方法 我现在正在进行线性搜索 这花费了太多时间 有什么建议么 您可以使用i
  • 使用python从gst管道抓取帧到opencv

    我在用着OpenCV http opencv org 和GStreamer0 10 我使用此管道通过自定义套接字通过 UDP 接收 MPEG ts 数据包sockfd由 python 提供并显示它xvimagesink 而且效果很好 以下命
  • 如何确保 re.findall() 停止在正确的位置?

    这是我的代码 a import re re findall r lt title gt lt title gt a 结果是 title aaa
  • 类型错误:需要二进制或 unicode 字符串,得到 618.0

    I ve been trying to implement this ML Linear Model into my dataset https www tensorflow org tutorials estimator linear L
  • Python将文本文件解析为嵌套字典

    考虑以下数据结构 HEADER1 key value key value HEADER2 key value key value HEADER3 key value HEADER4 key value key value 原始数据中没有缩进
  • Spark 和 Python 使用自定义文件格式/生成器作为 RDD 的输入

    我想问一下 Spark 中输入的可能性 我可以看到从http spark apache org docs latest programming guide html http spark apache org docs latest pro
  • 从 Flask 运行 NPM 构建

    我有一个 React 前端 我想在与我的 python 后端 API 相同的源上提供服务 我正在尝试使用 Flask 来实现此目的 但我遇到了 Flask 找不到我的静态文件的问题 我的前端构建是用生成的npm run build in s
  • Ubuntu systemd 自定义服务因 python 脚本而失败

    希望获得有关 Ubuntu 中的 systemd 守护进程服务的一些帮助 我写了一个 python 脚本来禁用 Dell XPS 上的触摸屏 这更像是一个问题 而不是一个有用的功能 该脚本可以工作 但我不想一直启动它 这就是为什么我想到编写
  • Airflow 1.9 - 无法将日志写入 s3

    我在 aws 的 kubernetes 中运行气流 1 9 我希望将日志发送到 s3 因为气流容器本身的寿命并不长 我已经阅读了描述该过程的各种线程和文档 但我仍然无法让它工作 首先是一个测试 向我证明 s3 配置和权限是有效的 这是在我们
  • 包什么时候需要为它自己的对象使用 :::

    考虑这个 R 包有两个函数 一个是导出函数 另一个是内部函数 hello R export hello lt function internalFunctions hello internal 你好 内部 R hello internal
  • 检测是否从psycopg2游标获取?

    假设我执行以下命令 insert into hello username values me 我跑起来就像 cursor fetchall 我收到以下错误 psycopg2 ProgrammingError no results to fe
  • 使用 PIL 在 Tkinter 中显示动画 GIF

    我正在尝试制作一个程序来使用 Tkinter 显示动画 GIF 这是我最初使用的代码 from future import division Just because division doesn t work right in 2 7 4
  • ggplot2以限制为中心的多边形世界地图给出了有趣的边缘

    使用下面的代码我生成了一张以华盛顿特区为中心的地图 解决方案基于科斯克的解决方案在这里 https stackoverflow com questions 10620862 use different center than the pri
  • 将 Keras 集成到 SKLearn 管道?

    我有一个 sklearn 管道 对异构数据类型 布尔 分类 数字 文本 执行特征工程 并想尝试使用神经网络作为我的学习算法来拟合模型 我遇到了输入数据形状的一些问题 我想知道我想做的事情是否可能 或者我是否应该尝试不同的方法 我尝试了几种不
  • IndexError - 具有匀称形状的笛卡尔 PolygonPatch

    我曾经使用 shapely 制作一个圆圈并将其绘制在之前填充的图上 这曾经工作得很好 最近 我收到索引错误 我将代码分解为最简单的操作 但它甚至无法执行最简单的循环 import descartes import shapely geome
  • 用于插入或替换 URL 参数的 Django 模板标签

    有人知道 Django 模板标签可以获取当前路径和查询字符串并插入或替换查询字符串值吗 例如向 some custom path q how now brown cow page 3 filter person 发出请求 电话 urlpar
  • 定义在文本小部件中双击时选择哪些字符

    在 Windows 上 双击文本小部件中的单词也将选择连接的标点符号 有什么方法可以定义您想要选择的角色吗 tcl wordchars该变量的值是一个正则表达式 可以设置它来控制什么被视为 单词 字符 例如 通过双击 Tk 中的文本来选择单

随机推荐

  • 类型推断在具有静态成员约束的泛型类型上失败

    我定义了以下类型 从代码简化 type Polynomial lt a when a static member public Zero a and a static member a a gt a and a static member
  • MATLAB 搜索元胞数组中的字符串子集

    我试图在 MATLAB 的元胞数组中查找子字符串出现的位置 下面的代码可以工作 但是相当难看 在我看来应该有一个更简单的解决方案 cellArray these are some nicewords and some morewords w
  • 无可用来源

    我不确定发生了什么或者我是否做了什么 现在 每当我尝试调试时 它都会说所有 BCL 内容都没有可用的源代码 例如 在 debug print 上我收到该消息 定位源 f dd ndp fx src CompMod System Diagno
  • MFCC Python:librosa、python_speech_features、tensorflow.signal 的结果完全不同

    我正在尝试从音频 wav 文件 中提取 MFCC 特征 并且我已经尝试过python speech features and librosa但他们给出了完全不同的结果 audio sr librosa load file sr None l
  • amCharts v5 模板适配器示例在作为 TypeScript 而不是 JavaScript 运行时抛出错误

    我正在尝试根据值更改条形颜色 即在 JS 中很简单 https codepen io team amcharts pen KKmbKBg editors 1111 但是当我在 TSX 文件中实现代码时 它给了我一个错误 正如你所看到的 VS
  • 循环 R 列

    我有一个data frame in R它由许多带有数值的列组成 像这样 A B C 0 6057 0 1644 6 93 0 5723 0 117 6 59 0 5614 0 1552 7 02 0 4102 0 1059 5 24 0 4
  • Entity Framework 7 Code First 中的一对一关系

    如何使用数据注释或 Fluent Api 在 Entity Framework 7 Code First 中配置一对一或零或一对一关系 您可以使用 Entity Framework 7 中的 Fluent API 定义 OneToOne 关
  • 在 Python 中从 opencv 3 创建类 Rect 的实例

    我想知道如何通过提供两个点来获取 opencv 矩形对象 C 版本提供了这个数据结构 http docs opencv org java 2 4 9 org opencv core Rect html http docs opencv or
  • 如何在 sbt 启动时运行命令并保持会话活动?

    如果我们定义initialCommands in console 1 1 这将在控制台执行后运行 是否可以在 sbt 启动后运行命令 例如initialCommands in sbtStartup console 自动进入控制台 我想保持会
  • Azure 个人访问令牌 API 中的 subjectDescriptor 是什么

    我正在尝试编写一个脚本来自动化 Azure DevOps 环境的某些方面 但我很难为特定用户返回 PAT 以便能够授权他们执行 API 调用 有人能给我一个关于 subjectDescriptor 是什么以及在哪里可以找到它的示例吗 我已读
  • VueJS - 模型绑定不适用于使用 jQuery 插件的输入

    我正在努力转换表单以利用 VueJS 该表单有一个使用 eonasdan bootstrap datetimepicker 的出生日期输入 http eonasdan github io bootstrap datetimepicker h
  • 为什么 Divi 短代码不能在 wp-json 中呈现?

    我正在尝试使用the content过滤器来处理 Divi 短代码 但短代码仍然出现 特别是 et pb section et pb column et pb text 如果有的话 add action rest api init func
  • 从 zip 文件加载 pickle 文件

    由于某种原因 我无法让 cPickle load 处理 ZipFile open 返回的文件类型对象 如果我对 ZipFile open 返回的文件类型对象调用 read 我可以使用 cPickle loads 例子 import zipf
  • Firebase 本地通知

    当 Firebase 回调时是否有可能触发本地通知 我猜我的线程有问题 Firebase setDispatchQueue dispatch get global queue DISPATCH QUEUE PRIORITY DEFAULT
  • 持久化 sha256 哈希对象?

    我需要一个 Python C C Java 实现 它可以暂停散列进度 and store文件的进度以这样的方式进行 可恢复的稍后从该文件中获取 无论上面列出的语言是用什么语言编写的 它都应该在 Python 中正常工作 建议您提供它以便与
  • 如何在 Flash 应用程序中创建退出按钮

    我正在创建一个 Flash 应用程序 该应用程序将导出到exe格式 它不会在浏览器中运行 我想在舞台内添加一个退出按钮 但我不知道如何使用 ActionScript 3 来做到这一点 我记得这是可能的fscommand在 ActionScr
  • Chef 中的动态角色属性

    我想要厨师食谱network interfaces为我的每个节点提供 IP 地址 网络掩码等的动态值 对我有用的是以下内容 db role rb 块1 override attributes network interfaces gt de
  • XBMC/KODI 添加插件时出错“结构不正确”

    我正在关注 KODI XBMC hello world 插件教程here http kodi wiki view HOW TO HelloWorld addon我从下载了完成的项目here https github com zag2me p
  • 实际 javascript 练习的资源 [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 在 python 中精确复制 R 文本预处理

    我想使用 Python 预处理文档语料库 就像在 R 中一样 例如 给定一个初始语料库 corpus 我希望最终得到一个与使用以下 R 代码生成的语料库相对应的预处理语料库 library tm library SnowballC corp