Python - 在文本文件中找出每对单词在同一行中出现的频率最有效的方法是什么?

2 投票
1 回答
765 浏览
提问于 2025-04-16 04:51

这个问题其实挺简单的,但我不太确定我想到的解决办法是否高效。所以我想请教一下专家们!

有没有什么好的方法可以处理一个大文件,统计一下里面有多少次两个词出现在同一行?

比如,如果文本里只有以下两行:

"这是白色的棒球。"
"这些家伙有白色的棒球棒。"

那么你最终会收集到这样的统计数据:

(这是, 白色: 1), (这是, 棒球: 1), (白色, 棒球: 1) ... 依此类推。

对于条目 (棒球, 白色: 2),值是2,因为这对词在同一行出现了2次。

理想情况下,这些统计数据应该放在一个字典里,字典的键是按字母顺序排列的元组(也就是说,你不想要“这是, 是”和“是, 这是”两个不同的条目。这里我们不在乎顺序:我们只想找出每一对词在整个文本中同一行出现的次数。

1 个回答

4

在编程中,有时候我们需要处理一些数据,比如从一个地方获取数据,然后把它放到另一个地方。这就像是把水从一个杯子倒到另一个杯子里。我们需要确保水不会洒出来,也就是要确保数据在转移的过程中不会出错。

有些时候,数据的格式可能不太一样,就像不同的杯子形状可能会影响水的流动。这时候,我们就需要做一些转换,确保数据能够顺利地从一个地方到达另一个地方。

此外,编程中还会遇到一些错误,就像在倒水的时候可能会不小心把水洒出来一样。我们需要学会如何处理这些错误,确保程序能够继续运行,而不是因为一个小问题就停止工作。

总之,编程就像是在处理和转移数据,我们需要小心翼翼,确保一切顺利进行。

from collections import defaultdict
import itertools as it
import re

pairs = defaultdict(int)

for line in lines:
    for pair in it.combinations(re.findall('\w+', line), 2):
        pairs[tuple(pair)] += 1

resultList = [pair + (occurences, ) for pair, occurences in pairs.iterkeys()]

撰写回答