繁体   English   中英

Python-查找文本文件中同一行中每个可能的单词对出现频率的最有效方法?

[英]Python - Most efficient way to find how often each possible pair of words occurs in the same line in a text file?

这个特殊的问题很容易解决,但是我不确定要达到的解决方案在计算上是否有效。 所以我要问专家!

遍历大文件并收集有关同一行中两个单词出现频率(针对整个文件)的统计信息的最佳方法是什么?

例如,如果文本仅包含以下两行:

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

您最终将收集以下统计信息:(this,is:1),(this,the:1),(this,white:1),(this,棒球:1),(is,the:1),(是,白色:1),(是,棒球:1)...依此类推。

对于条目(棒球,白色:2),该值为2,因为这对单词在同一行中总共出现2次。

理想情况下,应该将统计信息放在字典中,在该字典中,键在元组级别按字母顺序排列(即,您不需要“ this,is”和“ is,this”的单独条目。我们不在乎顺序。此处:我们只想查找每个可能的单词对在整个文本的同一行中出现的频率。

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()]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM