Python 建议/资源,以学习如何有效地操作和分析(大)文本文件

问题描述 投票:0回答:0

我正在重新使用 Python(我以前主要使用 R 和 Bash)并且想提高我的知识以处理文本数据。更多背景:

我不是程序员,而是语言学家。对于我的研究,我经常需要:

  • 处理 .txt、.csv 甚至 .json 文件并清理数据以协调它(通过删除/替换某些字符、添加/删除某些列等)。
  • 提取某些数据(例如提取包含某些单词的行,提取重复行等)。
  • 提取频率列表(即每个单词在一个或多个文件中出现的次数)。
  • 做一些基本的统计(例如,计算每百万个单词中单词的相对频率,将某一列中某些单词的频率乘以另一列中出现的数字等)。
  • 做一些可视化来显示频率列表、离群值等。 就是这样,我相信我的需求是相对基本的,因为一旦清理/修剪并准备好语料库,我经常使用语言学领域使用的特定软件。 但是,我经常需要处理相对较大的文件(有时 20-30Gb,有几百万行和最多几十列)并且我无法访问专用服务器,我使用自己 7 岁的笔记本电脑 99%时间。

因此,这篇文章的真正目的是准确了解我需要学习什么才能编写针对速度和内存效率进行优化的 Python 代码。我愿意了解更多关于书籍/教程/图书馆/技术/方法/建议的信息,我可以帮助我实现这一目标。所以,我主要希望获得以下几点的建议,但请随时就您的任何其他方面向我提出建议相信是相关的:

  • 例如,很多时候我无法承受加载内存中的文件而必须逐行处理它们。我知道在这种情况下使用 with 通常被认为是更有效的解决方案,但是否有其他替代方案可能更适合限制内存占用?
  • 关于文本分析,我知道一些库对此有帮助,比如 NLTK 或 textblob,但如果我理解正确,它们可能不是处理较大文件的最佳选择。那么,您还有什么建议?我摆弄了 spaCy,它以速度着称,但我发现它使用起来有点深奥(不是程序员,记住......)。再一次,这仍然是我最好的选择吗?用纯 Python 编写我自己的工具会更高效吗?
  • 关于统计,我知道 Numpy 通常被称为参考,但对于像我需要的相对基本的操作,它是最节省资源的方法吗?

我问这些问题的主要原因是:

  1. 我经常从一种方法徘徊到另一种方法,直到碰壁,然后尝试自己了解哪种方法可能更好,而不是直接将我的目标暴露给专家,让他们立即告诉我处理问题的最佳方法情况(典型的 XY 问题)。这最终导致我浪费了时间,并不总是学习做某事的最佳方法,仅仅是因为我缺乏经验和范围来清楚地确定我的需求。这一次,我想采用和学习最好的工具来处理我 90% 的时间需要处理的工作。
  2. 理想情况下,当我准备好时,我想创建一个小型且基本的交互工具,让那些对编程一无所知的语言学家能够执行这些简单的操作,至少能够清理数据并执行他们甚至无法在 Excel 中打开大型语料库的基本计算。所以我需要采用一种适用于大多数笔记本电脑的有效方法。

抱歉这篇超长的帖子,我尽量说得清楚,但如果您需要更多信息,请随时告诉我。

在此先感谢您提供的任何建议,我在这里学习! :)

python text-mining
© www.soinside.com 2019 - 2024. All rights reserved.