python - 为给定的单词集创建 id 的简单 [pythonic] 方法

标签 python performance

我有一个很大的文本语料库,我想在其中运行一些算法。这些算法并不关心单词是什么——单词对它们来说只是一个独特的对象。因此,我想通过简单地用整数 ID 替换单词来减小文本的大小。

一个例子:

my_string = "an example sentence with an example repetition."
my_ids = get_ids_from_string(my_string)
print my_ids
>>> [0, 1, 2, 3, 0, 1, 4] ### note that the ID for 'example' is always the same

我正在寻找一种简洁、高效、Python 的方法来解决这个问题。

最佳答案

用整数替换字符串并不能带来多大好处——确保相同的字符串在内存中只存储一次也能带来同样多的好处。

my_string = "an example sentence with an example repetition."
words = my_string.split()
unique_words = [intern(word) for word in words]

“unique_words”列表等于“words”列表,但 intern() 保证字符串将被使用一次。如果您在包含少量可能单词的大型文本语料库上执行此操作,则它不会比整数使用更多的内存。

关于python - 为给定的单词集创建 id 的简单 [pythonic] 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20750051/

相关文章:

python - 系统托盘应用程序如何在其他平台上完成?

java - 在 Java 中检查二维数组中邻居的更有效方法

python - 如何将多个csv文件读入pandas并输出到一个csv文件中

python - 为什么 GIL 替代方案会对性能产生影响?

MongoDB,即使查询字段形成分区,也会减慢查询速度吗?

javascript - 高效查找以前的帖子 (keystoneJS)

java - 为什么这段使用流的代码在 Java 9 中比在 Java 8 中运行得快得多?

python - 如何测试 Model.clean() 函数中的唯一性?

python - 使用 MinGW+GCC 编译 SciPy 时编译器失败

python - 根据文件扩展名选择 Mako 预处理器?